Skip to content

Kullanıcıların birbirine meydan okuyabildiği sosyal medya uygulaması.

Notifications You must be signed in to change notification settings

hozanBaydu/Scorp

Repository files navigation

Scorp

Kullanıcıların birbirine meydan okuyabildiği sosyal medya uygulaması.

skorpp.video.mp4

Özellikler

  • Kullanıcı bir e-posta ve kullanıcı adıyla giriş yapabilir.
  • İstenilen bir alanda başka bir kullanıcıya meydan okunabilir.
  • Diğer meydan okumaları görüp oy kullanabilir.

Not:Yazının okunma süresi 3 dakikadır.

Giriş ekranı

scorpp1

Bu ekranda kullanıcı yeni hesap açabilir veya hesabı mevcutsa giriş yapabilir.

if (currentUsers!=null){
            findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToMainFragment())
        }

Yukarıdaki kod parçası sayesinde mevcut bir kullanıcı varsa ve çıkış yapmamışsa giriş ekranını görmeden doğrudan uygulamanın içine yönlendirilir.

val profileUpdates = userProfileChangeRequest {
                            displayName = "@"+name
                        }
                        user!!.updateProfile(profileUpdates)
                            .addOnCompleteListener { task ->
                                if (task.isSuccessful) {                                  findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToMainFragment())}}

Yukarıdaki kodlarla yeni açılan hesap için bir kullanıcı adı oluşturulması sağlanır.

Ana Ekranları

scorpp2

Bu ekranda kullanıcı önceden paylaşılmış meydan okumaları görüp oy kullanabilir.

var name=currentUsers?.displayName
        if (name != null) {
            viewModel.currentUserName=name
        }

Yukarıdaki kodlar ile mevcut kullanıcının kullanıcı ismi alınıp meydan okunan kişi ise bu meydan okumaya cevap verme yetkisi tanınır. .

holder.binding.tagImageview.setOnClickListener {
                if (currentUsers?.displayName==holder.binding.tagName.text.toString()) {
                    holder.binding.tagImageview.findNavController().navigate(
                        MainFragmentDirections.actionMainFragmentToUploadTagFragment(
                            postList.get(position).documentId
                        ))
                }else{
                    var tageVoteNumber=holder.binding.tagVote.text.toString().toInt()+1

                    holder.binding.tagVote.text=tageVoteNumber.toString()
                }}

Yukarıda adaptere yazdığım kodla bu yetkinin nasıl verildiğini görebilirsiniz.

@HiltViewModel
class ScorpViewmodel @Inject constructor(
    private val firebase:Firebase,
    private val adapter: MainAdapter
):ViewModel() {
    fun updateFireebase(context: Context, selectedPicture: Uri, tagText: EditText, currentName:String,commentText: EditText){
        firebase.upload(context,selectedPicture,tagText,currentName,commentText)
    }
    var currentUserName=String()
    var postArrayList=firebase.postArrayList
    fun update(id:String,selectedPicture: Uri){
        firebase.updateData(id,selectedPicture)
    }
    fun uploadVote(id: String,vote:String){
        firebase.uploadVote(id,vote)
    }
    fun getData(context: Context){
        firebase.getdata(context)
    }
}

Yukarıda veri işlemleri ve aktivite arasında bağlantı olması için yazılmış viewmodeli görebilirsiniz.Bu fonksiyonların hepsi service>Firebase dosyasında yer almaktadır.Fonksiyonlar uzun ve karmaşık olduğundan burda açıklayamamaktayım.Proje dosyasından ulaşabillirsiniz.

Veri tabanına bilgilerin gönderilmesi ekranı

scorpp3

Bu ekranda gerekli izinler alınıp seçilen fotoğraf ve bilgilerin veri tabanına gönderilme işlemleri yazdığım service>Firebase dosyası sayesinde yapılır.

  fun updateData(id: String,selectedPicture: Uri) {
        auth = Firebase.auth
        firestore = Firebase.firestore
        storage = Firebase.storage
        val uuid = UUID.randomUUID()
        val imageName = "$uuid.jpg"
        val refererence = storage.reference
        val imageReference = refererence.child("images").child(imageName)
        if (selectedPicture != null) {
            imageReference.putFile(selectedPicture).addOnSuccessListener {
                val uploadPictureReference = storage.reference.child("images").child(imageName)
                uploadPictureReference.downloadUrl.addOnSuccessListener {
                  val dowlandUrl = it.toString()
                  firestore.collection("posts/").document(id).update("tagUrl", dowlandUrl)
                }
            }
        }
    }

Kullanıcı kendisine meydan okunan gönderiye fotoğraf eklemek için fotoğraf seçtiğinde yukarıdaki kod çalışır.Recyclerviewde tıklanan gönderinin konumu "id" anahtar kelimesiyle alındıktan sonra,kullanıcıdan alınan fotoğraf dökümana eklenir.

Okuduğunuz için teşekkür ederim.

Uygulamayı yazan:Hozan BAYDU

Tasarım:Adobexd,Canva

Tarih:20.11.2022

iletişim:hozan.baydu3447@gmail.com

About

Kullanıcıların birbirine meydan okuyabildiği sosyal medya uygulaması.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages