Display notification when sync worker is running
This commit is contained in:
parent
6d3f517790
commit
287a20baa9
@ -16,6 +16,7 @@ public class ReadropsApp extends Application {
|
|||||||
|
|
||||||
public static final String FEEDS_COLORS_CHANNEL_ID = "feedsColorsChannel";
|
public static final String FEEDS_COLORS_CHANNEL_ID = "feedsColorsChannel";
|
||||||
public static final String OPML_EXPORT_CHANNEL_ID = "opmlExportChannel";
|
public static final String OPML_EXPORT_CHANNEL_ID = "opmlExportChannel";
|
||||||
|
public static final String SYNC_CHANNEL_ID = "syncChannel";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
@ -44,10 +45,14 @@ public class ReadropsApp extends Application {
|
|||||||
getString(R.string.opml_export), NotificationManager.IMPORTANCE_DEFAULT);
|
getString(R.string.opml_export), NotificationManager.IMPORTANCE_DEFAULT);
|
||||||
opmlExportChannel.setDescription(getString(R.string.opml_export_description));
|
opmlExportChannel.setDescription(getString(R.string.opml_export_description));
|
||||||
|
|
||||||
|
NotificationChannel syncChannel = new NotificationChannel(SYNC_CHANNEL_ID,
|
||||||
|
getString(R.string.auto_synchro), NotificationManager.IMPORTANCE_DEFAULT);
|
||||||
|
|
||||||
NotificationManager manager = getSystemService(NotificationManager.class);
|
NotificationManager manager = getSystemService(NotificationManager.class);
|
||||||
|
|
||||||
manager.createNotificationChannel(feedsColorsChannel);
|
manager.createNotificationChannel(feedsColorsChannel);
|
||||||
manager.createNotificationChannel(opmlExportChannel);
|
manager.createNotificationChannel(opmlExportChannel);
|
||||||
|
manager.createNotificationChannel(syncChannel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||||||
if (interval != null) {
|
if (interval != null) {
|
||||||
PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(SyncWorker.class, interval.first, interval.second)
|
PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(SyncWorker.class, interval.first, interval.second)
|
||||||
.addTag(SyncWorker.Companion.getTAG())
|
.addTag(SyncWorker.Companion.getTAG())
|
||||||
|
.setInitialDelay(15, TimeUnit.MINUTES)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
workManager.enqueueUniquePeriodicWork(SyncWorker.Companion.getTAG(), ExistingPeriodicWorkPolicy.REPLACE, request);
|
workManager.enqueueUniquePeriodicWork(SyncWorker.Companion.getTAG(), ExistingPeriodicWorkPolicy.REPLACE, request);
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package com.readrops.app.utils
|
package com.readrops.app.utils
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
||||||
import androidx.work.WorkerParameters
|
import androidx.work.WorkerParameters
|
||||||
|
import com.readrops.app.R
|
||||||
|
import com.readrops.app.ReadropsApp
|
||||||
import com.readrops.app.repositories.ARepository
|
import com.readrops.app.repositories.ARepository
|
||||||
import com.readrops.readropsdb.Database
|
import com.readrops.readropsdb.Database
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
@ -16,7 +20,18 @@ class SyncWorker(context: Context, parameters: WorkerParameters) : Worker(contex
|
|||||||
val accounts = database.accountDao().selectAll()
|
val accounts = database.accountDao().selectAll()
|
||||||
var result = Result.success()
|
var result = Result.success()
|
||||||
|
|
||||||
|
val notificationBuilder = NotificationCompat.Builder(applicationContext, ReadropsApp.SYNC_CHANNEL_ID)
|
||||||
|
.setContentTitle(applicationContext.getString(R.string.auto_synchro))
|
||||||
|
.setProgress(0, 0, true)
|
||||||
|
.setSmallIcon(R.drawable.ic_notif)
|
||||||
|
.setOnlyAlertOnce(true)
|
||||||
|
|
||||||
|
val notificationManager = NotificationManagerCompat.from(applicationContext)
|
||||||
|
|
||||||
accounts.forEach {
|
accounts.forEach {
|
||||||
|
notificationBuilder.setContentText(it.accountName)
|
||||||
|
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build())
|
||||||
|
|
||||||
val repository = ARepository.repositoryFactory(it, applicationContext)
|
val repository = ARepository.repositoryFactory(it, applicationContext)
|
||||||
|
|
||||||
disposable = repository.sync(null)
|
disposable = repository.sync(null)
|
||||||
@ -24,6 +39,8 @@ class SyncWorker(context: Context, parameters: WorkerParameters) : Worker(contex
|
|||||||
.subscribe()
|
.subscribe()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
notificationManager.cancel(NOTIFICATION_ID)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,5 +51,6 @@ class SyncWorker(context: Context, parameters: WorkerParameters) : Worker(contex
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val TAG = SyncWorker::class.java.simpleName
|
val TAG = SyncWorker::class.java.simpleName
|
||||||
|
private const val NOTIFICATION_ID = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user