commit a160be8fd398ba9bf7b3977d5dd049ed157a835f
parent 517aa82157a868b44c19257a68f737bbbcb7ad44
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun,  5 Nov 2023 02:57:04 +0100

fix(streaks_reminder): cooldown

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt | 24++++++++++++++----------
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt | 2+-
2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt b/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt @@ -16,6 +16,9 @@ import me.rhunk.snapenhance.SharedContextHolder import me.rhunk.snapenhance.bridge.ForceStartActivity import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie import me.rhunk.snapenhance.ui.util.ImageRequestHelper +import kotlin.time.Duration.Companion.hours +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.minutes class StreaksReminder( private val remoteSideContext: RemoteSideContext? = null @@ -37,11 +40,21 @@ class StreaksReminder( override fun onReceive(ctx: Context, intent: Intent) { val remoteSideContext = this.remoteSideContext ?: SharedContextHolder.remote(ctx) val streaksReminderConfig = remoteSideContext.config.root.streaksReminder + val sharedPreferences = remoteSideContext.sharedPreferences if (streaksReminderConfig.globalState != true) return + val interval = streaksReminderConfig.interval.get() val remainingHours = streaksReminderConfig.remainingHours.get() + if (sharedPreferences.getLong("lastStreaksReminder", 0).milliseconds + interval.hours - 10.minutes > System.currentTimeMillis().milliseconds) return + sharedPreferences.edit().putLong("lastStreaksReminder", System.currentTimeMillis()).apply() + + remoteSideContext.androidContext.getSystemService(AlarmManager::class.java).setRepeating( + AlarmManager.RTC_WAKEUP, 5000, interval.toLong() * 60 * 60 * 1000, + PendingIntent.getBroadcast(remoteSideContext.androidContext, 0, Intent(remoteSideContext.androidContext, StreaksReminder::class.java), + PendingIntent.FLAG_IMMUTABLE) + ) val notifyFriendList = remoteSideContext.modDatabase.getFriends() .associateBy { remoteSideContext.modDatabase.getFriendStreaks(it.userId) } @@ -102,18 +115,9 @@ class StreaksReminder( } } - //TODO: ask for notifications permission for a13+ fun init() { if (remoteSideContext == null) throw IllegalStateException("RemoteSideContext is null") - val reminderConfig = remoteSideContext.config.root.streaksReminder.also { - if (it.globalState != true) return - } - - remoteSideContext.androidContext.getSystemService(AlarmManager::class.java).setRepeating( - AlarmManager.RTC_WAKEUP, 5000, reminderConfig.interval.get().toLong() * 60 * 60 * 1000, - PendingIntent.getBroadcast(remoteSideContext.androidContext, 0, Intent(remoteSideContext.androidContext, StreaksReminder::class.java), - PendingIntent.FLAG_IMMUTABLE) - ) + if (remoteSideContext.config.root.streaksReminder.globalState != true) return onReceive(remoteSideContext.androidContext, Intent()) } diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt @@ -3,7 +3,7 @@ package me.rhunk.snapenhance.common.config.impl import me.rhunk.snapenhance.common.config.ConfigContainer class StreaksReminderConfig : ConfigContainer(hasGlobalState = true) { - val interval = integer("interval", 2) + val interval = integer("interval", 1) val remainingHours = integer("remaining_hours", 13) val groupNotifications = boolean("group_notifications", true) } \ No newline at end of file