Tracker frequency preference
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user