Как воссоздать мою структуру данных для пользователя, чтобы избежать удаления старых изображений при обновлении его профиля - PullRequest
0 голосов
/ 03 мая 2020

Я создаю приложение для знакомств и создал узел пользователей, в профиле которого пользователь может обновить свой профиль, добавив дополнительные свойства и обновив свой профиль .. но каждый раз, когда пользователь обновляет свой профиль .. его старые изображения будут удалены, и будут добавлены новые .. Я уверен, что с моей структурой данных в firebase что-то не так, и поэтому он продолжает удалять старые изображения и писать новые. Как я могу заставить пользователя обновить другие свойства его или ее .. но изображения должны только добавляться и не удалять старые изображения и добавлять новые ..

вот мой код для профиля actvity

private var mPhotos: ArrayList = ArrayList ()

var up: Int = 0
var k: Int = 0

когда {

        profName!!.text.toString() == "" ->
            Toast.makeText(this, "Please write your name", Toast.LENGTH_LONG).show()

        profGender!!.text.toString() == "" ->
            Toast.makeText(this, "Please specify your gender", Toast.LENGTH_LONG).show()

        profAge!!.text.toString() == "" ->
            Toast.makeText(this, "Please specify your age", Toast.LENGTH_LONG).show()





        else -> {
            val progressDialog = ProgressDialog(this)
            progressDialog.setTitle("Updating profile")
            progressDialog.setMessage("Please wait, while we update your profile...")
            progressDialog.setCanceledOnTouchOutside(false)
            progressDialog.show()
            var uploadTask: StorageTask<UploadTask.TaskSnapshot>
            while (up < uploadedImages.size) {
                val itemRef: StorageReference = storageProfilePicRef!!.child(firebaseUser.uid)
                    .child(uploadedImages[k].lastPathSegment!!)

                uploadTask = itemRef.putFile(uploadedImages[k])
                    .addOnSuccessListener { p0 ->

                        val downloadUrl =
                            p0!!.storage.downloadUrl


                    }.addOnFailureListener {
                        progressDialog.dismiss()

                    }

                up++
                k++






                uploadTask.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>> { task ->
                    if (!task.isSuccessful) {

                        task.exception?.let {
                            throw it
                            progressDialog.dismiss()

                        }
                    }
                    return@Continuation itemRef.downloadUrl
                }).addOnCompleteListener   (OnCompleteListener { task ->
                    if (task.isSuccessful) {

                        downloadImages = ArrayList()
                        (downloadImages as ArrayList<Uri>).clear()


                        val downloadUrl = task.result
                        (downloadImages as ArrayList<Uri>).add(downloadUrl!!)


                    }




                   for (element in downloadImages) {

                        mPhotos.add(element.toString())


                    }

                    val usersRef = FirebaseDatabase.getInstance().reference.child("Users")

                    val userMap = HashMap<String, Any>()

                    userMap["datingfor"] = datingfor!!.text.toString()
                    userMap["maritalstatus"] = maritalstatus!!.text.toString()
                    userMap["personalcar"] = caravailability!!.text.toString()
                    userMap["children"] = children!!.text.toString()
                    userMap["state"] = mState
                    userMap["city"] = mCity

                    userMap["income"] = income!!.text.toString()
                    userMap["accommodation"] = accommodation!!.text.toString()
                    userMap["materialsupport"] = materialsupport!!.text.toString()
                    userMap["drinking"] = drinking!!.text.toString()
                    userMap["smoking"] = smoking!!.text.toString()
                    userMap["height"] = heightt!!.text.toString()
                    userMap["weight"] = weight!!.text.toString()
                    userMap["bodytype"] = body!!.text.toString()
                    userMap["knowlanguages"] = knowlang!!.text.toString()
                    userMap["haircolor"] = haircolor!!.text.toString()
                    userMap["eyecolor"] = eyecolor!!.text.toString()
                    userMap["sexorientation"] = sexorientation!!.text.toString()
                    userMap["tattoo"] = tattoo!!.text.toString()

                    userMap["name"] = profName!!.text.toString()
                    userMap["bio"] = profAbout!!.text.toString()
                    userMap["dob"] = profAge!!.text.toString()


                    userMap["lookingfor"] = profLooking!!.text.toString()
                    userMap["gender"] = profGender!!.text.toString()
                    userMap["images"] = mPhotos------- // these are the images






                    usersRef.child(firebaseUser.uid).updateChildren(userMap)
                        .addOnCompleteListener(OnCompleteListener<Void> { task ->

                            Toast.makeText(
                                this, "Account Information has been updated successfully!",
                                Toast.LENGTH_LONG
                            ).show()

                            val intent = Intent(this, HomeActivity::class.java)

                            startActivity(intent)
                            finish()


                        })
                })

            }


        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...