diff options
author | Allan Wang <me@allanwang.ca> | 2019-05-09 20:15:04 +0800 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-05-09 20:15:04 +0800 |
commit | 971214bd5e2d770d44306dc9ec6ab78182762ba5 (patch) | |
tree | 18ffb48c3bd45687a97aab92b9301e5e10283859 /app | |
parent | a5a19290a876faca91c6c865c50350689f72c080 (diff) | |
download | frost-971214bd5e2d770d44306dc9ec6ab78182762ba5.tar.gz frost-971214bd5e2d770d44306dc9ec6ab78182762ba5.tar.bz2 frost-971214bd5e2d770d44306dc9ec6ab78182762ba5.zip |
Ensure notifications are always saved
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/db/NotificationDb.kt | 17 | ||||
-rw-r--r-- | app/src/main/kotlin/com/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<NotificationContent>): 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<NotificationContent>): 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) |