Partage
  • Partager sur Facebook
  • Partager sur Twitter

CircularProgressIndicator et Upload Firebase

Kotlin

    16 décembre 2023 à 18:05:02

    Bonjour,

    Je suis entrain de réaliser une application en Kotlin à l'aide de AndroidStudio.

    Je n'arrive pas à réaliser ce que je voudrais. Je m'explique :

    Dans un de mes Fragments j'ai le code suivant :

            fun uploadDocuments() {
                for (i in 0 until selectedFilesLayout!!.childCount) {
                    val fileView = selectedFilesLayout!!.getChildAt(i)
                    if (fileView is LinearLayout) {
                        val fileNameView = fileView.findViewById<TextView>(R.id.fileName)
                        val fileName = fileNameView.text
                        val uri = getUriFromFileName(fileNameView.text.toString())
    
                        repo.uploadImage(uri,fileName.toString()) { downloadUrl ->
                            val DocumentsRef =
                                DrugsRepositoryV2.Singleton.databaseRef_Drugs.child(drugs.id)
                                    .child("Documents_upload_URL").push()
                            DocumentsRef.setValue(downloadUrl)
    resetFieldsAfterUpload(view,Radio_RoutesEqual) } } } } if (selectedFilesLayout != null && selectedFilesLayout!!.childCount > 0) { uploadDocuments() }

    Dans mon repo j'ai le code suivant :

        fun uploadImage(file: Uri, fileName: String, callback: (String) -> Unit) {
    
            if (file != null) {
                val ref = storageReference.child(fileName)
                val uploadTask = ref.putFile(file)
    
                uploadTask.addOnSuccessListener { taskSnapshot ->
                    ref.downloadUrl.addOnSuccessListener { uri ->
                        val downloadUrl = uri.toString()
                        callback(downloadUrl)
                    }
                }
            }
        }

    Je me trouve en réalité dans un formulaire à remplir. L'utilisateur rempli plein d'informations. Au moment où il clique sur enregistrer, si des documents sont à uploader, la fonction UploadDocument est lancé.

    Je voudrais, lorsque je lance la fonction UploadDocument, qu'un CircularProgressIndicator soit affiché (qu'il soit de durée indeterminée ou non, peu m'importe pour le moment). Une fois que TOUT les documents sont uploadés complètement, je veux que le circular indicator disparaisse et que ma fonction resetFieldsAfterUpload soit appellé.


    J'ai essayé une multitude de méthode, mais à chaque fois, le progress indicator est affiché très rapidement, avant de disparaitre alors que le callback n'est pas encore appellé. Cela m'embète car l'utilisateur peut quitter la page avant que l'upload soit complètement terminé.

    Merci d'avance pour votre retour.

    • Partager sur Facebook
    • Partager sur Twitter
      2 février 2024 à 10:04:34

      Bonjour, tu peux avoir une variable 'filesUploading' de type booléen initialisé à 'false'. Dans ton fonction uploadDocuments tu la passes à 'true' au début. Puis à la fin, tu la repasses à 'false'.

      Dans ta vue maintenant tu affiches ton CircularProgressIndicator si 'filesUploading' vaut 'true' et rien sinon.

      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2024 à 0:27:22 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


        CircularProgressIndicator et Upload Firebase

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown