Tracker frequency preference

master
Koitharu 2 years ago
parent fc2ab3f795
commit 448c688629
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -142,6 +142,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
val isTrackerWifiOnly: Boolean val isTrackerWifiOnly: Boolean
get() = prefs.getBoolean(KEY_TRACKER_WIFI_ONLY, false) get() = prefs.getBoolean(KEY_TRACKER_WIFI_ONLY, false)
val trackerFrequencyFactor: Float
get() = prefs.getString(KEY_TRACKER_FREQUENCY, null)?.toFloatOrNull() ?: 1f
val isTrackerNotificationsEnabled: Boolean val isTrackerNotificationsEnabled: Boolean
get() = prefs.getBoolean(KEY_TRACKER_NOTIFICATIONS, true) 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_READER_VOLUME_BUTTONS = "reader_volume_buttons"
const val KEY_TRACKER_ENABLED = "tracker_enabled" const val KEY_TRACKER_ENABLED = "tracker_enabled"
const val KEY_TRACKER_WIFI_ONLY = "tracker_wifi" 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_SOURCES = "track_sources"
const val KEY_TRACK_CATEGORIES = "track_categories" const val KEY_TRACK_CATEGORIES = "track_categories"
const val KEY_TRACK_WARNING = "track_warning" const val KEY_TRACK_WARNING = "track_warning"

@ -22,6 +22,7 @@ class WorkScheduleManager @Inject constructor(
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
when (key) { when (key) {
AppSettings.KEY_TRACKER_ENABLED, AppSettings.KEY_TRACKER_ENABLED,
AppSettings.KEY_TRACKER_FREQUENCY,
AppSettings.KEY_TRACKER_WIFI_ONLY -> updateWorker( AppSettings.KEY_TRACKER_WIFI_ONLY -> updateWorker(
scheduler = trackerScheduler, scheduler = trackerScheduler,
isEnabled = settings.isTrackerEnabled, isEnabled = settings.isTrackerEnabled,

@ -67,6 +67,7 @@ import org.koitharu.kotatsu.tracker.domain.model.MangaUpdates
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Provider import javax.inject.Provider
import kotlin.math.roundToInt
import com.google.android.material.R as materialR import com.google.android.material.R as materialR
@HiltWorker @HiltWorker
@ -284,9 +285,6 @@ class TrackWorker @AssistedInject constructor(
applicationContext.getString(android.R.string.cancel), applicationContext.getString(android.R.string.cancel),
workManager.createCancelPendingIntent(id), workManager.createCancelPendingIntent(id),
) )
if (max > 0) {
setSubText(applicationContext.getString(R.string.fraction_pattern, progress, max))
}
setProgress(max, progress, max == 0) setProgress(max, progress, max == 0)
setSmallIcon(android.R.drawable.stat_notify_sync) setSmallIcon(android.R.drawable.stat_notify_sync)
setForegroundServiceBehavior( setForegroundServiceBehavior(
@ -316,7 +314,8 @@ class TrackWorker @AssistedInject constructor(
val constraints = createConstraints() val constraints = createConstraints()
val runCount = dbProvider.get().getTracksDao().getTracksCount() val runCount = dbProvider.get().getTracksDao().getTracksCount()
val runsPerFullCheck = (runCount / BATCH_SIZE.toFloat()).toIntUp().coerceAtLeast(1) 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) val request = PeriodicWorkRequestBuilder<TrackWorker>(interval.toLong(), TimeUnit.HOURS)
.setConstraints(constraints) .setConstraints(constraints)
.addTag(TAG) .addTag(TAG)

@ -85,4 +85,9 @@
<item>@string/single_cbz_file</item> <item>@string/single_cbz_file</item>
<item>@string/multiple_cbz_files</item> <item>@string/multiple_cbz_files</item>
</string-array> </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> </resources>

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

@ -630,4 +630,7 @@
<string name="show_updated">Show updated</string> <string name="show_updated">Show updated</string>
<string name="webtoon_gaps">Gaps in webtoon mode</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="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> </resources>

@ -16,13 +16,23 @@
android:summary="@string/tracker_wifi_only_summary" android:summary="@string/tracker_wifi_only_summary"
android:title="@string/only_using_wifi" /> 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 <MultiSelectListPreference
android:defaultValue="@array/values_track_sources_default" android:defaultValue="@array/values_track_sources_default"
android:dependency="tracker_enabled" android:dependency="tracker_enabled"
android:entries="@array/track_sources" android:entries="@array/track_sources"
android:entryValues="@array/values_track_sources" android:entryValues="@array/values_track_sources"
android:key="track_sources" android:key="track_sources"
android:title="@string/track_sources" /> android:title="@string/track_sources"
app:allowDividerAbove="true" />
<Preference <Preference
android:key="track_categories" android:key="track_categories"

Loading…
Cancel
Save