Make sure Firebase crash does not crash the app or coroutine

This commit is contained in:
Philipp Heckel 2022-02-07 22:04:16 -05:00
parent e6c3a2e2bd
commit 42188d5152

View file

@ -5,21 +5,29 @@ import io.heckel.ntfy.log.Log
class FirebaseMessenger {
fun subscribe(topic: String) {
FirebaseMessaging
.getInstance()
val firebase = maybeInstance() ?: return
firebase
.subscribeToTopic(topic)
.addOnCompleteListener {
Log.d(TAG, "Subscribing to topic $topic complete: result=${it.result}, exception=${it.exception}, successful=${it.isSuccessful}")
}
.addOnFailureListener {
Log.e(TAG, "Subscribing to topic $topic failed: $it")
.addOnFailureListener { e ->
Log.e(TAG, "Subscribing to topic $topic failed: ${e.message}", e)
}
}
fun unsubscribe(topic: String) {
FirebaseMessaging
.getInstance()
.unsubscribeFromTopic(topic)
val firebase = maybeInstance() ?: return
firebase.unsubscribeFromTopic(topic)
}
private fun maybeInstance(): FirebaseMessaging? {
return try {
FirebaseMessaging.getInstance()
} catch (e: Exception) {
Log.e(TAG, "Firebase instance unavailable: ${e.message}", e)
null
}
}
companion object {