Je développe une application en utilisant Firebase, Kotlin et RxJava. Fondamentalement, ce que je dois faire est d'enregistrer un utilisateur en utilisant Auth de Firebase, si l'utilisateur a sélectionné une photo, télécharger la photo, puis enregistrer l'utilisateur dans la base de données de Firebase.RxJava: comment retourner le bon type de null
Jusqu'à présent j'avoir cette
RxFirebaseAuth.createUserWithEmailAndPassword(auth, email, password)
.map { authResult ->
user.uid = authResult.user.uid
authResult.user.uid
}
.flatMap<UploadTask.TaskSnapshot>(
{ uid ->
if (imageUri != null)
RxFirebaseStorage.putFile(mFirebaseStorage
.getReference(STORAGE_IMAGE_REFERENCE)
.child(uid), imageUri)
else
Maybe.empty<UploadTask.TaskSnapshot>()
}
)
.map { taskSnapshot -> user.photoUrl = taskSnapshot.downloadUrl!!.toString() }
.map {
RxFirebaseDatabase
.setValue(mFirebaseDatabase.getReference("user")
.child(user.uid), user).subscribe()
}
.doOnComplete { appLocalDataStore.saveUser(user) }
.toObservable()
Il fonctionne correctement lorsque l'utilisateur sélectionne une photo, mais quand il est pas sélectionné, les autres cartes sont ignorées, parce que je suis retourné Maybe.empty().
Comment dois-je mettre en œuvre que cela fonctionne avec ou sans photo d'utilisateur?
Merci.
Merci mon ami, il a travaillé comme un charme, vous m'a sauvé beaucoup de temps. – jackcar