Показывать диалог пользователю при сохранении данных в firestore (kotlin)

Наряду с приветствием, мой вопрос заключается в том, как в этом случае пользователь может быть уведомлен посредством диалога, когда запись была сохранена в базе данных пожарного депо. В настоящее время я использую многоуровневую разработку с использованием viwmodel, другого уровня абстракции и класса для экземпляра firestore.

class FirebaseRepo {

    private val db = FirebaseFirestore.getInstance()

    fun setUserDataBase(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){

        val user = hashMapOf(
            "nombre" to nombre,
            "apellido" to apellido,
            "edad" to edad,
            "rut" to rut,
            "genero" to genero
        )

        db.collection("usuarios").add(user).addOnCompleteListener {
            if (it.isSuccessful){
                // Mensaje para el usuario
            } else {
                // Mennsaje para el usuario
            }
        }
    }
}
class FirestoreUseCase {

    private val firebaseRepo = FirebaseRepo()

    fun setUserFirestore(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){
        firebaseRepo.setUserDataBase(nombre, apellido, edad, rut, genero)
    }
}
class FirestoreViewModel : ViewModel() {

   private val firestoreUseCase = FirestoreUseCase()

    fun crearUsuario(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){
        firestoreUseCase.setUserFirestore(nombre, apellido, edad, rut, genero)
    }

}
2
задан 26.11.2019, 02:04
1 ответ

Если ты используешь ViewModel, обрежь делать реактив для назад как только repo предупреждает, что я заканчиваю загружать данные

class FirebaseRepo {

private val data = MutableLiveData<Boolean>()

fun setUserDataBase(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){

        val user = hashMapOf(
            "nombre" to nombre,
            "apellido" to apellido,
            "edad" to edad,
            "rut" to rut,
            "genero" to genero
        )

        db.collection("usuarios").add(user).addOnCompleteListener {
                isDataPushed(it.isSuccessful)
        }
    }

fun isDataPushed(value:Boolean){
   data.value = value
  }

fun getDataResult():LiveData<Boolean>{
   return data
  }
}

Однажды эта стоимость pushee, мы возвращаемся в UI с LiveData

class FirestoreUseCase {

    private val firebaseRepo = FirebaseRepo()

    fun setUserFirestore(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){
        firebaseRepo.setUserDataBase(nombre, apellido, edad, rut, genero)
    }

  fun getData():LiveData<Boolean>{
   return firebaseRepo.getDataResult()
  }
}

Y с viewModel наблюдаем, что изменение

class FirestoreViewModel : ViewModel() {

   private val firestoreUseCase = FirestoreUseCase()

    fun crearUsuario(nombre: String, apellido: String, edad: Int, rut: Int, genero: String){
        firestoreUseCase.setUserFirestore(nombre, apellido, edad, rut, genero)
    }

  fun fetchDataComplition():LiveData<Boolean>{
    val mutableData = MutableLiveData<Boolean>()
    firestoreUseCase.getData().observeForever{
        mutableData.value = it
      }
    return mutableData
   }

}

С вида мы только ждем, Что стоимость true показывать диалог

class MainActivity(){

    onCreate(){
       ...
      observeData()
    }

   fun observeData(){
    viewModel.fetchDataComplition().observe(this,Observer{
         if(it) // Mostramos el Dialogo else //No mostramos el dialogo

       })
     }

   }

Надеялась, что он подает тебя, я это написал в руку и может быть какой-то typo, для большего количества info, как делать это лучше оставило тебе post, что я сделал в медиуме в

[114-ые] числа https://medium.com/firebase-tips-tricks/how-to-handle-exceptions-with-clean-architecture-and-f

1
  • 1
    Спасибо @Gastó n Saillé n, именно я учусь viewModel и главный файл MVVM, и твой ответ достаточно ясный, кроме того я продолжаю канал общества робот, материал превосходный я в помогший достаточно. – Pablo Tomey 30.11.2019, 05:29
  • 2
    Вкус pablo, любая вещь консультируется – Gastón Saillén 30.11.2019, 07:20

Теги

Похожие вопросы