From 2e10c7ba03e38216b27c399ed77aed7e96a2f3d8 Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
Date: Tue, 5 Jan 2021 10:47:18 +0100
Subject: [PATCH] move static helper method into its class: CleanCacheWorker

---
 .../java/org/fdroid/fdroid/FDroidApp.java     |  3 +-
 .../receiver/DeviceStorageReceiver.java       |  4 +-
 .../fdroid/views/PreferencesFragment.java     |  4 +-
 .../fdroid/fdroid/work/CleanCacheWorker.java  | 36 ++++++++++++--
 .../org/fdroid/fdroid/work/WorkUtils.java     | 49 -------------------
 5 files changed, 38 insertions(+), 58 deletions(-)
 delete mode 100644 app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java

diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
index f8b53b345..f79e45688 100644
--- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
+++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
@@ -80,7 +80,6 @@ import org.fdroid.fdroid.net.HttpDownloader;
 import org.fdroid.fdroid.net.ImageLoaderForUIL;
 import org.fdroid.fdroid.panic.HidingManager;
 import org.fdroid.fdroid.work.CleanCacheWorker;
-import org.fdroid.fdroid.work.WorkUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -427,7 +426,7 @@ public class FDroidApp extends Application {
             }
         });
 
-        WorkUtils.scheduleCleanCache(this);
+        CleanCacheWorker.schedule(this);
 
         notificationHelper = new NotificationHelper(getApplicationContext());
 
diff --git a/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java b/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java
index 6e0d10c18..08b33d394 100644
--- a/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java
+++ b/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java
@@ -6,7 +6,7 @@ import android.content.Intent;
 
 import org.fdroid.fdroid.DeleteCacheService;
 import org.fdroid.fdroid.Utils;
-import org.fdroid.fdroid.work.WorkUtils;
+import org.fdroid.fdroid.work.CleanCacheWorker;
 
 public class DeviceStorageReceiver extends BroadcastReceiver {
     @Override
@@ -19,7 +19,7 @@ public class DeviceStorageReceiver extends BroadcastReceiver {
             int percentageFree = Utils.getPercent(Utils.getImageCacheDirAvailableMemory(context),
                     Utils.getImageCacheDirTotalMemory(context));
             if (percentageFree > 2) {
-                WorkUtils.scheduleCleanCache(context);
+                CleanCacheWorker.schedule(context);
             } else {
                 DeleteCacheService.deleteAll(context);
             }
diff --git a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java
index e81734779..4caf90faa 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java
@@ -57,7 +57,7 @@ import org.fdroid.fdroid.Utils;
 import org.fdroid.fdroid.data.RepoProvider;
 import org.fdroid.fdroid.installer.InstallHistoryService;
 import org.fdroid.fdroid.installer.PrivilegedInstaller;
-import org.fdroid.fdroid.work.WorkUtils;
+import org.fdroid.fdroid.work.CleanCacheWorker;
 
 import info.guardianproject.netcipher.proxy.OrbotHelper;
 
@@ -304,7 +304,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat
                 entrySummary(key);
                 if (changing
                         && currentKeepCacheTime != Preferences.get().getKeepCacheTime()) {
-                    WorkUtils.scheduleCleanCache(requireContext());
+                    CleanCacheWorker.schedule(requireContext());
                 }
                 break;
 
diff --git a/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java b/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java
index a6407d84e..e5ba902f4 100644
--- a/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java
+++ b/app/src/main/java/org/fdroid/fdroid/work/CleanCacheWorker.java
@@ -6,12 +6,14 @@ import android.os.Process;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.system.StructStat;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.work.Constraints;
+import androidx.work.ExistingPeriodicWorkPolicy;
+import androidx.work.PeriodicWorkRequest;
+import androidx.work.WorkManager;
 import androidx.work.Worker;
 import androidx.work.WorkerParameters;
-
 import org.apache.commons.io.FileUtils;
 import org.fdroid.fdroid.Preferences;
 import org.fdroid.fdroid.Utils;
@@ -21,12 +23,40 @@ import java.io.File;
 import java.util.concurrent.TimeUnit;
 
 public class CleanCacheWorker extends Worker {
-    private static final String TAG = CleanCacheWorker.class.getSimpleName();
+    public static final String TAG = "CleanCacheWorker";
 
     public CleanCacheWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
         super(context, workerParams);
     }
 
+    /**
+     * Schedule or cancel a work request to update the app index, according to the
+     * current preferences. Should be called a) at boot, b) if the preference
+     * is changed, or c) on startup, in case we get upgraded.
+     */
+    public static void schedule(@NonNull final Context context) {
+        final WorkManager workManager = WorkManager.getInstance(context);
+        final long keepTime = Preferences.get().getKeepCacheTime();
+        long interval = TimeUnit.DAYS.toMillis(1);
+        if (keepTime < interval) {
+            interval = keepTime;
+        }
+
+        final Constraints.Builder constraintsBuilder = new Constraints.Builder()
+                .setRequiresCharging(true)
+                .setRequiresBatteryNotLow(true);
+        if (Build.VERSION.SDK_INT >= 23) {
+            constraintsBuilder.setRequiresDeviceIdle(true);
+        }
+        final PeriodicWorkRequest cleanCache =
+                new PeriodicWorkRequest.Builder(CleanCacheWorker.class, interval, TimeUnit.MILLISECONDS)
+                        .setConstraints(constraintsBuilder.build())
+                        .build();
+        workManager.enqueueUniquePeriodicWork("clean_cache",
+                ExistingPeriodicWorkPolicy.REPLACE, cleanCache);
+        Utils.debugLog(TAG, "Scheduled periodic work for cleaning the cache.");
+    }
+
     @NonNull
     @Override
     public Result doWork() {
diff --git a/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java b/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java
deleted file mode 100644
index 1314231ff..000000000
--- a/app/src/main/java/org/fdroid/fdroid/work/WorkUtils.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.fdroid.fdroid.work;
-
-import android.content.Context;
-import android.os.Build;
-
-import androidx.annotation.NonNull;
-import androidx.work.Constraints;
-import androidx.work.ExistingPeriodicWorkPolicy;
-import androidx.work.PeriodicWorkRequest;
-import androidx.work.WorkManager;
-
-import org.fdroid.fdroid.Preferences;
-import org.fdroid.fdroid.Utils;
-
-import java.util.concurrent.TimeUnit;
-
-public class WorkUtils {
-    private static final String TAG = WorkUtils.class.getSimpleName();
-
-    private WorkUtils() { }
-
-    /**
-     * Schedule or cancel a work request to update the app index, according to the
-     * current preferences. Should be called a) at boot, b) if the preference
-     * is changed, or c) on startup, in case we get upgraded.
-     */
-    public static void scheduleCleanCache(@NonNull final Context context) {
-        final WorkManager workManager = WorkManager.getInstance(context);
-        final long keepTime = Preferences.get().getKeepCacheTime();
-        long interval = TimeUnit.DAYS.toMillis(1);
-        if (keepTime < interval) {
-            interval = keepTime;
-        }
-
-        final Constraints.Builder constraintsBuilder = new Constraints.Builder()
-                .setRequiresCharging(true)
-                .setRequiresBatteryNotLow(true);
-        if (Build.VERSION.SDK_INT >= 23) {
-            constraintsBuilder.setRequiresDeviceIdle(true);
-        }
-        final PeriodicWorkRequest cleanCache =
-                new PeriodicWorkRequest.Builder(CleanCacheWorker.class, interval, TimeUnit.MILLISECONDS)
-                        .setConstraints(constraintsBuilder.build())
-                        .build();
-        workManager.enqueueUniquePeriodicWork("clean_cache",
-                ExistingPeriodicWorkPolicy.REPLACE, cleanCache);
-        Utils.debugLog(TAG, "Scheduled periodic work for cleaning the cache.");
-    }
-}