Add refresh preferences broadcast

pull/1136/head
Alex Baker 5 years ago
parent 1ce2e31b02
commit 40a764112c

@ -15,6 +15,7 @@ public class LocalBroadcastManager {
public static final String REFRESH_LIST = BuildConfig.APPLICATION_ID + ".REFRESH_LIST"; public static final String REFRESH_LIST = BuildConfig.APPLICATION_ID + ".REFRESH_LIST";
private static final String REPEAT = BuildConfig.APPLICATION_ID + ".REPEAT"; private static final String REPEAT = BuildConfig.APPLICATION_ID + ".REPEAT";
private static final String REFRESH_PURCHASES = BuildConfig.APPLICATION_ID + ".REFRESH_PURCHASES"; private static final String REFRESH_PURCHASES = BuildConfig.APPLICATION_ID + ".REFRESH_PURCHASES";
private static final String REFRESH_PREFERENCES = BuildConfig.APPLICATION_ID + ".REFRESH_PREFERENCES";
private final androidx.localbroadcastmanager.content.LocalBroadcastManager localBroadcastManager; private final androidx.localbroadcastmanager.content.LocalBroadcastManager localBroadcastManager;
private final AppWidgetManager appWidgetManager; private final AppWidgetManager appWidgetManager;
@ -45,6 +46,10 @@ public class LocalBroadcastManager {
localBroadcastManager.registerReceiver(broadcastReceiver, new IntentFilter(REFRESH_PURCHASES)); localBroadcastManager.registerReceiver(broadcastReceiver, new IntentFilter(REFRESH_PURCHASES));
} }
public void registerPreferenceReceiver(BroadcastReceiver broadcastReceiver) {
localBroadcastManager.registerReceiver(broadcastReceiver, new IntentFilter(REFRESH_PREFERENCES));
}
public void broadcastRefresh() { public void broadcastRefresh() {
localBroadcastManager.sendBroadcast(new Intent(REFRESH)); localBroadcastManager.sendBroadcast(new Intent(REFRESH));
appWidgetManager.updateWidgets(); appWidgetManager.updateWidgets();
@ -54,6 +59,10 @@ public class LocalBroadcastManager {
localBroadcastManager.sendBroadcast(new Intent(REFRESH_LIST)); localBroadcastManager.sendBroadcast(new Intent(REFRESH_LIST));
} }
public void broadcastPreferenceRefresh() {
localBroadcastManager.sendBroadcast(new Intent(REFRESH_PREFERENCES));
}
/** /**
* Action name for broadcast intent notifying that task was created from repeating template * Action name for broadcast intent notifying that task was created from repeating template
* <li>EXTRAS_TASK_ID id of the task * <li>EXTRAS_TASK_ID id of the task

@ -12,6 +12,7 @@ import dagger.hilt.InstallIn
import dagger.hilt.android.EntryPointAccessors import dagger.hilt.android.EntryPointAccessors
import dagger.hilt.android.components.ApplicationComponent import dagger.hilt.android.components.ApplicationComponent
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import timber.log.Timber import timber.log.Timber
@ -26,6 +27,7 @@ class TasksFileBackupHelper(
internal interface TasksFileBackupHelperEntryPoint { internal interface TasksFileBackupHelperEntryPoint {
val tasksJsonImporter: TasksJsonImporter val tasksJsonImporter: TasksJsonImporter
val preferences: Preferences val preferences: Preferences
val localBroadcastManager: LocalBroadcastManager
} }
override fun performBackup( override fun performBackup(
@ -43,6 +45,7 @@ class TasksFileBackupHelper(
Timber.d("Backing up ${it.absolutePath}") Timber.d("Backing up ${it.absolutePath}")
super.performBackup(oldState, data, newState) super.performBackup(oldState, data, newState)
preferences.setLong(R.string.p_backups_android_backup_last, it.lastModified()) preferences.setLong(R.string.p_backups_android_backup_last, it.lastModified())
hilt.localBroadcastManager.broadcastPreferenceRefresh()
} }
?: Timber.e("$path not found") ?: Timber.e("$path not found")
} }

@ -8,6 +8,7 @@ import androidx.work.Data
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.google.api.client.googleapis.json.GoogleJsonResponseException import com.google.api.client.googleapis.json.GoogleJsonResponseException
import com.google.api.services.drive.model.File import com.google.api.services.drive.model.File
import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
@ -26,7 +27,9 @@ class DriveUploader @WorkerInject constructor(
@Assisted workerParams: WorkerParameters, @Assisted workerParams: WorkerParameters,
firebase: Firebase, firebase: Firebase,
private val drive: DriveInvoker, private val drive: DriveInvoker,
private val preferences: Preferences) : BaseWorker(context, workerParams, firebase) { private val preferences: Preferences,
private val localBroadcastManager: LocalBroadcastManager
) : BaseWorker(context, workerParams, firebase) {
override suspend fun run(): Result { override suspend fun run(): Result {
val inputData = inputData val inputData = inputData
@ -35,6 +38,7 @@ class DriveUploader @WorkerInject constructor(
val folder = getFolder() ?: return Result.failure() val folder = getFolder() ?: return Result.failure()
preferences.setString(R.string.p_google_drive_backup_folder, folder.id) preferences.setString(R.string.p_google_drive_backup_folder, folder.id)
drive.createFile(folder.id, uri) drive.createFile(folder.id, uri)
localBroadcastManager.broadcastPreferenceRefresh()
if (inputData.getBoolean(EXTRA_PURGE, false)) { if (inputData.getBoolean(EXTRA_PURGE, false)) {
drive drive
.getFilesByPrefix(folder.id, "auto.") .getFilesByPrefix(folder.id, "auto.")

@ -1,9 +1,13 @@
package org.tasks.preferences package org.tasks.preferences
import android.app.Activity import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.activity.viewModels
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.preferences.fragments.MainSettingsFragment import org.tasks.preferences.fragments.MainSettingsFragment
@ -19,11 +23,28 @@ class MainPreferences : BasePreferences() {
@Inject lateinit var syncAdapters: SyncAdapters @Inject lateinit var syncAdapters: SyncAdapters
@Inject lateinit var workManager: WorkManager @Inject lateinit var workManager: WorkManager
@Inject lateinit var toaster: Toaster @Inject lateinit var toaster: Toaster
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
private val viewModel: PreferencesViewModel by viewModels()
override fun getRootTitle() = R.string.TLA_menu_settings override fun getRootTitle() = R.string.TLA_menu_settings
override fun getRootPreference() = MainSettingsFragment() override fun getRootPreference() = MainSettingsFragment()
override fun onResume() {
super.onResume()
localBroadcastManager.registerPreferenceReceiver(refreshReceiver)
viewModel.updateBackups()
}
override fun onPause() {
super.onPause()
localBroadcastManager.unregisterReceiver(refreshReceiver)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_CALDAV_SETTINGS) { if (requestCode == REQUEST_CALDAV_SETTINGS) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
@ -41,4 +62,10 @@ class MainPreferences : BasePreferences() {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
} }
} }
private val refreshReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
viewModel.updateBackups()
}
}
} }

@ -87,7 +87,7 @@ class PreferencesViewModel @ViewModelInject constructor(
.takeIf { it >= 0 } .takeIf { it >= 0 }
} }
init { fun updateBackups() {
updateLocalBackup() updateLocalBackup()
updateDriveBackup() updateDriveBackup()
updateAndroidBackup() updateAndroidBackup()

Loading…
Cancel
Save