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";
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_PREFERENCES = BuildConfig.APPLICATION_ID + ".REFRESH_PREFERENCES";
private final androidx.localbroadcastmanager.content.LocalBroadcastManager localBroadcastManager;
private final AppWidgetManager appWidgetManager;
@ -45,6 +46,10 @@ public class LocalBroadcastManager {
localBroadcastManager.registerReceiver(broadcastReceiver, new IntentFilter(REFRESH_PURCHASES));
}
public void registerPreferenceReceiver(BroadcastReceiver broadcastReceiver) {
localBroadcastManager.registerReceiver(broadcastReceiver, new IntentFilter(REFRESH_PREFERENCES));
}
public void broadcastRefresh() {
localBroadcastManager.sendBroadcast(new Intent(REFRESH));
appWidgetManager.updateWidgets();
@ -54,6 +59,10 @@ public class LocalBroadcastManager {
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
* <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.components.ApplicationComponent
import kotlinx.coroutines.runBlocking
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.preferences.Preferences
import timber.log.Timber
@ -26,6 +27,7 @@ class TasksFileBackupHelper(
internal interface TasksFileBackupHelperEntryPoint {
val tasksJsonImporter: TasksJsonImporter
val preferences: Preferences
val localBroadcastManager: LocalBroadcastManager
}
override fun performBackup(
@ -43,6 +45,7 @@ class TasksFileBackupHelper(
Timber.d("Backing up ${it.absolutePath}")
super.performBackup(oldState, data, newState)
preferences.setLong(R.string.p_backups_android_backup_last, it.lastModified())
hilt.localBroadcastManager.broadcastPreferenceRefresh()
}
?: Timber.e("$path not found")
}

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

@ -1,9 +1,13 @@
package org.tasks.preferences
import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import androidx.activity.viewModels
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.jobs.WorkManager
import org.tasks.preferences.fragments.MainSettingsFragment
@ -19,11 +23,28 @@ class MainPreferences : BasePreferences() {
@Inject lateinit var syncAdapters: SyncAdapters
@Inject lateinit var workManager: WorkManager
@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 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?) {
if (requestCode == REQUEST_CALDAV_SETTINGS) {
if (resultCode == RESULT_OK) {
@ -41,4 +62,10 @@ class MainPreferences : BasePreferences() {
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 }
}
init {
fun updateBackups() {
updateLocalBackup()
updateDriveBackup()
updateAndroidBackup()

Loading…
Cancel
Save