mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2023-12-13 20:50:18 +01:00
39ac49b258
Cleanup Extending and improving notifications Using new icons instead Lowering polling delay to one minute and other improvements Fixing minor issues Simplifying progress layout Fixing bugs and other improvements Adding translations Notifications Co-authored-by: opyale <opyale@noreply.gitea.io> Co-authored-by: 6543 <6543@noreply.codeberg.org> Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/554 Reviewed-by: 6543 <6543@noreply.codeberg.org> Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
67 lines
1.8 KiB
Java
67 lines
1.8 KiB
Java
package org.mian.gitnex.notifications;
|
|
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import androidx.work.Constraints;
|
|
import androidx.work.ExistingPeriodicWorkPolicy;
|
|
import androidx.work.NetworkType;
|
|
import androidx.work.PeriodicWorkRequest;
|
|
import androidx.work.WorkManager;
|
|
import org.mian.gitnex.helpers.TinyDB;
|
|
import org.mian.gitnex.helpers.Version;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
/**
|
|
* Author opyale
|
|
*/
|
|
|
|
public class NotificationsMaster {
|
|
|
|
private static int notificationsSupported = -1;
|
|
|
|
private static void checkVersion(TinyDB tinyDB) {
|
|
|
|
String currentVersion = tinyDB.getString("giteaVersion");
|
|
|
|
if(tinyDB.getBoolean("loggedInMode") && !currentVersion.isEmpty()) {
|
|
|
|
notificationsSupported = new Version(currentVersion).higherOrEqual("1.12.3") ? 1 : 0;
|
|
}
|
|
}
|
|
|
|
public static void fireWorker(Context context) {
|
|
|
|
WorkManager.getInstance(context).cancelAllWorkByTag(context.getPackageName());
|
|
}
|
|
|
|
public static void hireWorker(Context context) {
|
|
|
|
TinyDB tinyDB = new TinyDB(context);
|
|
|
|
if(notificationsSupported == -1) {
|
|
checkVersion(tinyDB);
|
|
}
|
|
|
|
if(notificationsSupported == 1) {
|
|
|
|
Constraints.Builder constraints = new Constraints.Builder()
|
|
.setRequiredNetworkType(NetworkType.CONNECTED)
|
|
.setRequiresBatteryNotLow(false)
|
|
.setRequiresStorageNotLow(false)
|
|
.setRequiresCharging(false);
|
|
|
|
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
|
|
constraints.setRequiresDeviceIdle(false);
|
|
}
|
|
|
|
PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(NotificationsWorker.class, tinyDB.getInt("pollingDelayMinutes"), TimeUnit.MINUTES)
|
|
.setConstraints(constraints.build())
|
|
.addTag(context.getPackageName())
|
|
.build();
|
|
|
|
WorkManager.getInstance(context).enqueueUniquePeriodicWork(context.getPackageName(), ExistingPeriodicWorkPolicy.KEEP, periodicWorkRequest);
|
|
|
|
}
|
|
}
|
|
}
|