Make sure Firebase crash does not crash the app or coroutine
This commit is contained in:
parent
e6c3a2e2bd
commit
42188d5152
1 changed files with 15 additions and 7 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue