From 95893cb0bc369695cea4d991c3c311cd5507dc07 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Tue, 9 Apr 2024 20:00:43 +0700 Subject: [PATCH] [messages] introduce delay interval settings --- .../modules/messages/MessagesService.kt | 4 +- .../modules/messages/MessagesSettings.kt | 44 +++++++++++++++++-- .../capcom/smsgateway/ui/SettingsFragment.kt | 14 +++--- app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/xml/root_preferences.xml | 24 ++++++---- 5 files changed, 67 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt index cc0d2a4..296ccbf 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt @@ -140,8 +140,8 @@ class MessagesService( continue } - if (settings.secondsBetweenMessages > 0) { - delay((0..settings.secondsBetweenMessages).random() * 1000L) + settings.sendIntervalRange?.let { + delay(it.random() * 1000L) } } diff --git a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesSettings.kt b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesSettings.kt index affc6f6..96abadb 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesSettings.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesSettings.kt @@ -13,8 +13,24 @@ class MessagesSettings( PerDay(86400000L), } - val secondsBetweenMessages: Int - get() = storage.get(SECONDS_BETWEEN_MESSAGES) ?: 0 + private var version: Int + get() = storage.get(VERSION) ?: 0 + set(value) = storage.set(VERSION, value) + + val sendIntervalRange: IntRange? + get() { + val min = sendIntervalMin + val max = sendIntervalMax + return when { + max == null -> null + min > max -> null + else -> min..max + } + } + private val sendIntervalMin: Int + get() = storage.get(SEND_INTERVAL_MIN) ?: 0 + private val sendIntervalMax: Int? + get() = storage.get(SEND_INTERVAL_MAX) val limitEnabled: Boolean get() = limitValue > 0 && limitPeriod != Period.Disabled @@ -26,8 +42,30 @@ class MessagesSettings( val logLifetimeDays: Int? get() = storage.get(LOG_LIFETIME_DAYS)?.takeIf { it > 0 } + init { + migrate() + } + + private fun migrate() { + if (version == VERSION_CODE) { + return + } + + if (version < 1) { + val SECONDS_BETWEEN_MESSAGES = "SECONDS_BETWEEN_MESSAGES" + + storage.set(SEND_INTERVAL_MAX, storage.get(SECONDS_BETWEEN_MESSAGES)?.toString()) + } + + version = VERSION_CODE + } + companion object { - private const val SECONDS_BETWEEN_MESSAGES = "SECONDS_BETWEEN_MESSAGES" + private const val VERSION_CODE = 1 + private const val VERSION = "version" + + private const val SEND_INTERVAL_MIN = "send_interval_min" + private const val SEND_INTERVAL_MAX = "send_interval_max" private const val LIMIT_PERIOD = "limit_period" private const val LIMIT_VALUE = "limit_value" diff --git a/app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt b/app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt index a11f572..5a3355f 100644 --- a/app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt +++ b/app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt @@ -65,15 +65,11 @@ class SettingsFragment : PreferenceFragmentCompat() { } } - if (preference.key == "messages.limit_value") { - (preference as EditTextPreference).setOnBindEditTextListener { - it.inputType = InputType.TYPE_CLASS_NUMBER - it.setSelectAllOnFocus(true) - it.selectAll() - } - } - - if (preference.key == "messages.log_lifetime_days") { + if (preference.key == "messages.limit_value" + || preference.key == "messages.log_lifetime_days" + || preference.key == "messages.send_interval_min" + || preference.key == "messages.send_interval_max" + ) { (preference as EditTextPreference).setOnBindEditTextListener { it.inputType = InputType.TYPE_CLASS_NUMBER it.setSelectAllOnFocus(true) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eec33a1..7062162 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,4 +42,8 @@ Limits Period Messages count + Delays, seconds + Minimum + Maximum + Set maximum value to activate \ No newline at end of file diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 31ab8b6..38812d4 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -28,18 +28,24 @@ app:useSimpleSummaryProvider="true" app:title="@string/log_lifetime_days" /> - + + + + +