diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index a91a1f456..3808d3a09 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -142,6 +142,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isTrackerWifiOnly: Boolean get() = prefs.getBoolean(KEY_TRACKER_WIFI_ONLY, false) + val trackerFrequencyFactor: Float + get() = prefs.getString(KEY_TRACKER_FREQUENCY, null)?.toFloatOrNull() ?: 1f + val isTrackerNotificationsEnabled: Boolean get() = prefs.getBoolean(KEY_TRACKER_NOTIFICATIONS, true) @@ -562,6 +565,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_READER_VOLUME_BUTTONS = "reader_volume_buttons" const val KEY_TRACKER_ENABLED = "tracker_enabled" const val KEY_TRACKER_WIFI_ONLY = "tracker_wifi" + const val KEY_TRACKER_FREQUENCY = "tracker_freq" const val KEY_TRACK_SOURCES = "track_sources" const val KEY_TRACK_CATEGORIES = "track_categories" const val KEY_TRACK_WARNING = "track_warning" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/work/WorkScheduleManager.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/work/WorkScheduleManager.kt index 725e36cb8..183eefeb6 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/work/WorkScheduleManager.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/work/WorkScheduleManager.kt @@ -22,6 +22,7 @@ class WorkScheduleManager @Inject constructor( override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { when (key) { AppSettings.KEY_TRACKER_ENABLED, + AppSettings.KEY_TRACKER_FREQUENCY, AppSettings.KEY_TRACKER_WIFI_ONLY -> updateWorker( scheduler = trackerScheduler, isEnabled = settings.isTrackerEnabled, diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt index 7132348aa..42a0a56c1 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt @@ -67,6 +67,7 @@ import org.koitharu.kotatsu.tracker.domain.model.MangaUpdates import java.util.concurrent.TimeUnit import javax.inject.Inject import javax.inject.Provider +import kotlin.math.roundToInt import com.google.android.material.R as materialR @HiltWorker @@ -284,9 +285,6 @@ class TrackWorker @AssistedInject constructor( applicationContext.getString(android.R.string.cancel), workManager.createCancelPendingIntent(id), ) - if (max > 0) { - setSubText(applicationContext.getString(R.string.fraction_pattern, progress, max)) - } setProgress(max, progress, max == 0) setSmallIcon(android.R.drawable.stat_notify_sync) setForegroundServiceBehavior( @@ -316,7 +314,8 @@ class TrackWorker @AssistedInject constructor( val constraints = createConstraints() val runCount = dbProvider.get().getTracksDao().getTracksCount() val runsPerFullCheck = (runCount / BATCH_SIZE.toFloat()).toIntUp().coerceAtLeast(1) - val interval = (6 / runsPerFullCheck).coerceAtLeast(2) + val frequency = settings.trackerFrequencyFactor + val interval = (18 / runsPerFullCheck / frequency).roundToInt().coerceAtLeast(2) val request = PeriodicWorkRequestBuilder(interval.toLong(), TimeUnit.HOURS) .setConstraints(constraints) .addTag(TAG) diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c0bcb758d..3f037e11a 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -85,4 +85,9 @@ @string/single_cbz_file @string/multiple_cbz_files + + @string/less_frequently + @string/system_default + @string/more_frequently + diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 70bc7a190..472185d7f 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -62,4 +62,9 @@ 1 2 + + 0.4 + 1 + 2 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f68e74375..17fab912e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -630,4 +630,7 @@ Show updated Gaps in webtoon mode Show vertical gaps between pages in webtoon mode + Less frequently + More frequently + Frequency of check diff --git a/app/src/main/res/xml/pref_tracker.xml b/app/src/main/res/xml/pref_tracker.xml index 80df9b986..f5bf3b479 100644 --- a/app/src/main/res/xml/pref_tracker.xml +++ b/app/src/main/res/xml/pref_tracker.xml @@ -16,13 +16,23 @@ android:summary="@string/tracker_wifi_only_summary" android:title="@string/only_using_wifi" /> + + + android:title="@string/track_sources" + app:allowDividerAbove="true" />