From 971214bd5e2d770d44306dc9ec6ab78182762ba5 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Thu, 9 May 2019 20:15:04 +0800 Subject: Ensure notifications are always saved --- .../kotlin/com/pitchedapps/frost/db/NotificationDb.kt | 17 +++++++---------- .../pitchedapps/frost/services/FrostNotifications.kt | 12 +++++++----- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/db/NotificationDb.kt b/app/src/main/kotlin/com/pitchedapps/frost/db/NotificationDb.kt index d4b51c1e..813c39a3 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/db/NotificationDb.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/db/NotificationDb.kt @@ -147,16 +147,13 @@ suspend fun NotificationDao.selectNotifications(userId: Long, type: String): Lis /** * Returns true if successful, given that there are constraints to the insertion */ -suspend fun NotificationDao.saveNotifications(type: String, notifs: List): Boolean { - if (notifs.isEmpty()) return true - return dao { - try { - _saveNotifications(type, notifs) - true - } catch (e: Exception) { - L.e(e) { "Notif save failed for $type" } - false - } +suspend fun NotificationDao.saveNotifications(type: String, notifs: List): Boolean = dao { + try { + _saveNotifications(type, notifs) + true + } catch (e: Exception) { + L.e(e) { "Notif save failed for $type" } + false } } diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt index 1c37bc29..4b0e1a82 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt @@ -137,10 +137,17 @@ enum class NotificationType( validText(notif.title) && validText(notif.text) } if (notifContents.isEmpty()) return 0 + val userId = data.id // Legacy, remove with dbflow val prevLatestEpoch = notifDao.latestEpoch(userId, channelId) L.v { "Notif $name prev epoch $prevLatestEpoch" } + + if (!notifDao.saveNotifications(channelId, notifContents)) { + L.d { "Skip notifs for $name as saving failed" } + return -1 + } + if (prevLatestEpoch == -1L && !BuildConfig.DEBUG) { L.d { "Skipping first notification fetch" } return 0 // do not notify the first time @@ -155,11 +162,6 @@ enum class NotificationType( L.d { "${newNotifContents.size} new notifs found for $name" } - if (!notifDao.saveNotifications(channelId, newNotifContents)) { - L.d { "Skip notifs for $name as saving failed" } - return 0 - } - val notifs = newNotifContents.map { createNotification(context, it) } frostEvent("Notifications", "Type" to name, "Count" to notifs.size) -- cgit v1.2.3