Tracker frequency preference

This commit is contained in:
Koitharu
2024-04-23 09:48:39 +03:00
parent fc2ab3f795
commit 448c688629
7 changed files with 32 additions and 5 deletions

View File

@@ -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"

View File

@@ -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,

View File

@@ -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<TrackWorker>(interval.toLong(), TimeUnit.HOURS)
.setConstraints(constraints)
.addTag(TAG)

View File

@@ -85,4 +85,9 @@
<item>@string/single_cbz_file</item>
<item>@string/multiple_cbz_files</item>
</string-array>
<string-array name="tracker_frequency" translatable="false">
<item>@string/less_frequently</item>
<item>@string/system_default</item>
<item>@string/more_frequently</item>
</string-array>
</resources>

View File

@@ -62,4 +62,9 @@
<item>1</item>
<item>2</item>
</string-array>
<string-array name="values_tracker_frequency" translatable="false">
<item>0.4</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>

View File

@@ -630,4 +630,7 @@
<string name="show_updated">Show updated</string>
<string name="webtoon_gaps">Gaps in webtoon mode</string>
<string name="webtoon_gaps_summary">Show vertical gaps between pages in webtoon mode</string>
<string name="less_frequently">Less frequently</string>
<string name="more_frequently">More frequently</string>
<string name="frequency_of_check">Frequency of check</string>
</resources>

View File

@@ -16,13 +16,23 @@
android:summary="@string/tracker_wifi_only_summary"
android:title="@string/only_using_wifi" />
<ListPreference
android:defaultValue="1"
android:dependency="tracker_enabled"
android:entries="@array/tracker_frequency"
android:entryValues="@array/values_tracker_frequency"
android:key="tracker_freq"
android:title="@string/frequency_of_check"
app:useSimpleSummaryProvider="true" />
<MultiSelectListPreference
android:defaultValue="@array/values_track_sources_default"
android:dependency="tracker_enabled"
android:entries="@array/track_sources"
android:entryValues="@array/values_track_sources"
android:key="track_sources"
android:title="@string/track_sources" />
android:title="@string/track_sources"
app:allowDividerAbove="true" />
<Preference
android:key="track_categories"