Push: improve Push history screen, log and stored data (#4601)
* Add adb tools to help with doze mode and app standby * Add info about the device state when an error occurs in push. * Keep more events in the DB. * Push history: add confirmation dialog when resetting the data * Push history: add a filter to see only the errors * Update screenshots * Push history: print out invalid/ignored data received. * Increase log level for push, to make such log more visible. It also appears that sometimes Timber.d are not present in the rageshakes. * Log priority * Do not include device state for invalid/ignored event. * Fix tests. * Fix format issue. * Fix mistake in code blocks and do not filter when not necessary. * Improve formatting and add missing unit test. * Reduce nesting of blocks. --------- Co-authored-by: ElementBot <android@element.io>
This commit is contained in:
parent
653416fa34
commit
7ed362b9db
30 changed files with 388 additions and 58 deletions
|
|
@ -31,20 +31,23 @@ class VectorFirebaseMessagingService : FirebaseMessagingService() {
|
|||
}
|
||||
|
||||
override fun onNewToken(token: String) {
|
||||
Timber.tag(loggerTag.value).d("New Firebase token")
|
||||
Timber.tag(loggerTag.value).w("New Firebase token")
|
||||
coroutineScope.launch {
|
||||
firebaseNewTokenHandler.handle(token)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMessageReceived(message: RemoteMessage) {
|
||||
Timber.tag(loggerTag.value).d("New Firebase message")
|
||||
Timber.tag(loggerTag.value).w("New Firebase message. Priority: ${message.priority}/${message.originalPriority}")
|
||||
coroutineScope.launch {
|
||||
val pushData = pushParser.parse(message.data)
|
||||
if (pushData == null) {
|
||||
Timber.tag(loggerTag.value).w("Invalid data received from Firebase")
|
||||
pushHandler.handleInvalid(
|
||||
providerInfo = FirebaseConfig.NAME,
|
||||
data = message.data.keys.joinToString("\n") {
|
||||
"$it: ${message.data[it]}"
|
||||
},
|
||||
)
|
||||
} else {
|
||||
pushHandler.handle(
|
||||
|
|
|
|||
|
|
@ -32,13 +32,24 @@ import org.robolectric.RobolectricTestRunner
|
|||
class VectorFirebaseMessagingServiceTest {
|
||||
@Test
|
||||
fun `test receiving invalid data`() = runTest {
|
||||
val lambda = lambdaRecorder<String, Unit> {}
|
||||
val lambda = lambdaRecorder<String, String, Unit> { _, _ -> }
|
||||
val vectorFirebaseMessagingService = createVectorFirebaseMessagingService(
|
||||
pushHandler = FakePushHandler(handleInvalidResult = lambda)
|
||||
)
|
||||
vectorFirebaseMessagingService.onMessageReceived(RemoteMessage(Bundle()))
|
||||
vectorFirebaseMessagingService.onMessageReceived(
|
||||
message = RemoteMessage(
|
||||
Bundle().apply {
|
||||
putString("a", "A")
|
||||
putString("b", "B")
|
||||
}
|
||||
)
|
||||
)
|
||||
runCurrent()
|
||||
lambda.assertions().isCalledOnce()
|
||||
.with(
|
||||
value(FirebaseConfig.NAME),
|
||||
value("a: A\nb: B"),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue