, поэтому у меня есть функция вызываемого облака:
exports.verifiedUserDeactivateTheEvent = functions.https.onCall(async (data, context) => {
const eventID = data.eventID
const verifiedUserID = context.auth.uid
try {
// check user
const verifiedUserDocumentSnapshot = await db.doc(`users/${verifiedUserID}`).get()
if (!verifiedUserDocumentSnapshot.exists || verifiedUserDocumentSnapshot.data().verified === false) {
throw new functions.https.HttpsError('Invalid User', 'Invalid User')
}
// rest of the code
return "success"
} catch(error) {
console.log(error)
return error.message
}
})
, если пользователь недействителен или не авторизован, тогда он выдаст сообщение httpsError «Неверный пользователь»
Я использую это в вызываемой функции в моем Android приложении
fun verifiedUserDeactivateTheEvent(eventID: String) : Task<String> {
// Create the arguments to the callable function.
val data = hashMapOf(
"eventID" to eventID
)
return functions
.getHttpsCallable("verifiedUserDeactivateTheEvent")
.call(data)
.continueWith { task ->
val result = task.result?.data as String
result
}
}
и используйте его вот так
verifiedUserDeactivateTheEvent(selectedEvent.eventID).addOnSuccessListener {
toast(it) // the error message will be shown in here
}.addOnFailureListener {
toast(it.localizedMessage) // not in here
}
Я ожидаю, что сообщение об ошибке будет показано на onFailureListener
, но это сообщение об ошибке строки все еще отображается в onSuccessListener
. Мне нужно установить различные действия, если ошибка существует или нет
как сделать так, чтобы ошибка https, вызванная вызываемой функцией, была показана в onFailureListener
?