diff --git a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt index 1e9236b95..05da7c7b2 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt @@ -3,8 +3,8 @@ package com.todoroo.astrid.adapter import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.service.TaskMover import com.todoroo.astrid.subtasks.SubtasksFilterUpdater -import org.tasks.LocalBroadcastManager import org.tasks.Strings.isNullOrEmpty +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.TaskContainer import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.GoogleTaskDao @@ -24,9 +24,9 @@ class AstridTaskAdapter internal constructor( googleTaskDao: GoogleTaskDao, caldavDao: CaldavDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, taskMover: TaskMover, -) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) { +) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao, refreshBroadcaster, taskMover) { private val chainedCompletions = Collections.synchronizedMap(HashMap>()) @@ -56,7 +56,7 @@ class AstridTaskAdapter internal constructor( for (i in 0 until abs(delta)) { updater.indent(list, filter, targetTaskId, delta) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } catch (e: Exception) { Timber.e(e) } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/SubheaderClickHandler.kt b/app/src/main/java/com/todoroo/astrid/adapter/SubheaderClickHandler.kt index 89f6fc531..2ef161c36 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/SubheaderClickHandler.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/SubheaderClickHandler.kt @@ -6,7 +6,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.lifecycle.lifecycleScope import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.activities.TagSettingsActivity import org.tasks.caldav.BaseCaldavCalendarSettingsActivity.Companion.EXTRA_CALDAV_ACCOUNT import org.tasks.data.dao.CaldavDao @@ -30,7 +30,7 @@ class SubheaderClickHandler @Inject constructor( private val activity: Activity, private val tasksPreferences: TasksPreferences, private val caldavDao: CaldavDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, ): SubheaderViewHolder.ClickHandler { override fun onClick(subheader: NavigationDrawerSubheader) { (activity as AppCompatActivity).lifecycleScope.launch { @@ -40,7 +40,7 @@ class SubheaderClickHandler @Inject constructor( CALDAV, TASKS -> caldavDao.setCollapsed(subheader.id, collapsed) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt index 93d48552b..911d04f86 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt @@ -13,7 +13,7 @@ import com.todoroo.astrid.core.SortHelper.SORT_START import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.service.TaskMover import org.tasks.BuildConfig -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.TaskContainer import org.tasks.data.createDueDate import org.tasks.data.createHideUntil @@ -31,7 +31,7 @@ open class TaskAdapter( private val googleTaskDao: GoogleTaskDao, private val caldavDao: CaldavDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskMover: TaskMover, ) { private val selected = HashSet() @@ -296,7 +296,7 @@ open class TaskAdapter( taskDao.setOrder(task.id, task.task.order) taskDao.setParent(newParentId, listOf(task.id)) taskDao.touch(task.id) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } protected suspend fun moveGoogleTask(from: Int, to: Int, indent: Int) { @@ -375,7 +375,7 @@ open class TaskAdapter( } } taskDao.touch(task.id) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() if (BuildConfig.DEBUG) { googleTaskDao.validateSorting(task.caldav!!) } @@ -407,7 +407,7 @@ open class TaskAdapter( newPosition = newPosition, ) taskDao.touch(task.id) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun changeCaldavParent(task: TaskContainer, indent: Int, to: Int): Long { diff --git a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt index a173e7107..d87473ba3 100644 --- a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt +++ b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt @@ -5,7 +5,7 @@ */ package com.todoroo.astrid.alarms -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.TaskDao import org.tasks.data.db.DbUtils @@ -28,7 +28,7 @@ import javax.inject.Inject class AlarmService @Inject constructor( private val alarmDao: AlarmDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val notificationManager: NotificationManager, private val workManager: WorkManager, private val alarmCalculator: AlarmCalculator, @@ -54,7 +54,7 @@ class AlarmService @Inject constructor( changed = true } if (changed) { - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } return changed } diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt index 9ed789fce..2187aa301 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt @@ -6,7 +6,7 @@ package com.todoroo.astrid.dao import com.todoroo.astrid.timers.TimerPlugin -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.TaskContainer import org.tasks.data.count import org.tasks.data.dao.TaskDao @@ -28,7 +28,7 @@ import javax.inject.Inject class TaskDao @Inject constructor( private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val notificationManager: NotificationManager, private val geofenceApi: GeofenceApi, private val timerPlugin: TimerPlugin, @@ -82,7 +82,7 @@ class TaskDao @Inject constructor( suspend fun setCollapsed(id: Long, collapsed: Boolean) { taskDao.setCollapsed(listOf(id), collapsed) syncAdapters.sync() - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } suspend fun setCollapsed(preferences: Preferences, filter: Filter, collapsed: Boolean) { @@ -103,7 +103,7 @@ class TaskDao @Inject constructor( Timber.d("Saved $task") afterUpdate(task, original) if (!task.isSuppressRefresh()) { - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } workManager.triggerNotifications() workManager.scheduleRefresh() diff --git a/app/src/main/java/com/todoroo/astrid/gtasks/GtasksListService.kt b/app/src/main/java/com/todoroo/astrid/gtasks/GtasksListService.kt index 1684b06bf..21487469b 100644 --- a/app/src/main/java/com/todoroo/astrid/gtasks/GtasksListService.kt +++ b/app/src/main/java/com/todoroo/astrid/gtasks/GtasksListService.kt @@ -7,7 +7,7 @@ package com.todoroo.astrid.gtasks import com.google.api.services.tasks.model.TaskList import com.todoroo.astrid.service.TaskDeleter -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.dao.CaldavDao import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavCalendar @@ -16,7 +16,7 @@ import javax.inject.Inject class GtasksListService @Inject constructor( private val caldavDao: CaldavDao, private val taskDeleter: TaskDeleter, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, ) { /** @@ -55,6 +55,6 @@ class GtasksListService @Inject constructor( for (listId in previousLists) { taskDeleter.delete(caldavDao.getCalendarById(listId)!!) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } } diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.kt b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.kt index 3c5c4b9cd..2a395e765 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.kt @@ -7,7 +7,7 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.caldav.VtodoCache import org.tasks.data.dao.DeletionDao import org.tasks.data.dao.LocationDao @@ -28,7 +28,7 @@ class TaskDeleter @Inject constructor( @ApplicationContext private val context: Context, private val deletionDao: DeletionDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val syncAdapters: SyncAdapters, private val vtodoCache: VtodoCache, private val notificationManager: NotificationManager, @@ -50,7 +50,7 @@ class TaskDeleter @Inject constructor( cleanup = { cleanup(it) } ) syncAdapters.sync() - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() taskDao.fetch(ids) } @@ -63,7 +63,7 @@ class TaskDeleter @Inject constructor( ids = tasks, cleanup = { cleanup(it) } ) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } suspend fun delete(list: CaldavCalendar) { @@ -72,7 +72,7 @@ class TaskDeleter @Inject constructor( caldavCalendar = list, cleanup = { cleanup(it) } ) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } suspend fun delete(account: CaldavAccount) { @@ -81,7 +81,7 @@ class TaskDeleter @Inject constructor( caldavAccount = account, cleanup = { cleanup(it) } ) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun cleanup(tasks: List) { diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt index 044a043a8..795349445 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt @@ -2,7 +2,7 @@ package com.todoroo.astrid.service import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.gcal.GCalHelper -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.GoogleTaskDao @@ -24,7 +24,7 @@ import javax.inject.Inject class TaskDuplicator @Inject constructor( private val gcalHelper: GCalHelper, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val tagDao: TagDao, private val tagDataDao: TagDataDao, private val googleTaskDao: GoogleTaskDao, @@ -44,7 +44,7 @@ class TaskDuplicator @Inject constructor( .let { taskDao.fetch(it) } .filterNot { it.readOnly } .map { clone(it, it.parent) } - .also { localBroadcastManager.broadcastRefresh() } + .also { refreshBroadcaster.broadcastRefresh() } } private suspend fun clone(task: Task, parentId: Long): Task { diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt index 953eb2d89..9ac2d6c8e 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt @@ -1,6 +1,6 @@ package com.todoroo.astrid.service -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.caldav.VtodoCache import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.GoogleTaskDao @@ -22,7 +22,7 @@ class TaskMover @Inject constructor( private val caldavDao: CaldavDao, private val googleTaskDao: GoogleTaskDao, private val preferences: Preferences, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val syncAdapters: SyncAdapters, private val vtodoCache: VtodoCache, ) { @@ -63,7 +63,7 @@ class TaskMover @Inject constructor( taskIds.dbchunk().forEach { taskDao.touch(it) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() syncAdapters.sync() } diff --git a/app/src/main/java/org/tasks/LocalBroadcastManager.kt b/app/src/main/java/org/tasks/LocalBroadcastManager.kt index 0c15963d9..542e90ed4 100644 --- a/app/src/main/java/org/tasks/LocalBroadcastManager.kt +++ b/app/src/main/java/org/tasks/LocalBroadcastManager.kt @@ -7,13 +7,14 @@ import android.content.IntentFilter import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.todoroo.astrid.api.AstridApiConstants import dagger.hilt.android.qualifiers.ApplicationContext +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.widget.AppWidgetManager import javax.inject.Inject class LocalBroadcastManager @Inject constructor( @ApplicationContext context: Context, private val appWidgetManager: AppWidgetManager, -) { +): RefreshBroadcaster { private val localBroadcastManager = LocalBroadcastManager.getInstance(context) fun registerRefreshReceiver(broadcastReceiver: BroadcastReceiver?) { @@ -41,7 +42,7 @@ class LocalBroadcastManager @Inject constructor( ) } - fun broadcastRefresh() { + override fun broadcastRefresh() { localBroadcastManager.sendBroadcast(Intent(REFRESH)) appWidgetManager.updateWidgets() } diff --git a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt index 81b0305ae..b1d79e3bb 100644 --- a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt +++ b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt @@ -28,7 +28,7 @@ import com.todoroo.astrid.api.TextInputCriterion import com.todoroo.astrid.core.CriterionInstance import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings import org.tasks.compose.DeleteButton @@ -56,7 +56,7 @@ import javax.inject.Inject class FilterSettingsActivity : BaseListSettingsActivity() { @Inject lateinit var filterDao: FilterDao @Inject lateinit var filterCriteriaProvider: FilterCriteriaProvider - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster private val viewModel: FilterSettingsViewModel by viewModels() @@ -128,7 +128,7 @@ class FilterSettingsActivity : BaseListSettingsActivity() { } else { filterDao.update(f) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() setResult( Activity.RESULT_OK, Intent(TaskListFragment.ACTION_RELOAD) diff --git a/app/src/main/java/org/tasks/activities/GoogleTaskListSettingsActivity.kt b/app/src/main/java/org/tasks/activities/GoogleTaskListSettingsActivity.kt index f868091cd..fb7490c69 100644 --- a/app/src/main/java/org/tasks/activities/GoogleTaskListSettingsActivity.kt +++ b/app/src/main/java/org/tasks/activities/GoogleTaskListSettingsActivity.kt @@ -15,7 +15,7 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.caldav.BaseCaldavCalendarSettingsActivity.Companion.EXTRA_CALDAV_ACCOUNT @@ -35,7 +35,7 @@ import javax.inject.Inject class GoogleTaskListSettingsActivity : BaseListSettingsActivity() { @Inject lateinit var caldavDao: CaldavDao @Inject lateinit var taskDeleter: TaskDeleter - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster private val account: CaldavAccount get() = intent.getParcelableExtra(EXTRA_CALDAV_ACCOUNT)!! @@ -122,7 +122,7 @@ class GoogleTaskListSettingsActivity : BaseListSettingsActivity() { icon = baseViewModel.icon ) ) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() setResult( Activity.RESULT_OK, Intent(TaskListFragment.ACTION_RELOAD) diff --git a/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt b/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt index 17af06040..bd1efe132 100644 --- a/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt +++ b/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.viewinterop.AndroidView import com.todoroo.astrid.activity.MainActivity import com.todoroo.astrid.activity.TaskListFragment import dagger.hilt.android.AndroidEntryPoint -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.compose.Constants @@ -60,7 +60,7 @@ class PlaceSettingsActivity : BaseListSettingsActivity(), @Inject lateinit var map: MapFragment @Inject lateinit var preferences: Preferences @Inject lateinit var locale: Locale - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster private lateinit var place: Place override val defaultIcon = TasksIcons.PLACE @@ -172,7 +172,7 @@ class PlaceSettingsActivity : BaseListSettingsActivity(), radius = sliderPos.floatValue.roundToInt(), ) locationDao.update(place) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() setResult( Activity.RESULT_OK, Intent(TaskListFragment.ACTION_RELOAD) @@ -190,7 +190,7 @@ class PlaceSettingsActivity : BaseListSettingsActivity(), locationDao.deleteGeofencesByPlace(place.uid!!) locationDao.delete(place) setResult(Activity.RESULT_OK, Intent(TaskListFragment.ACTION_DELETED)) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() finish() } diff --git a/app/src/main/java/org/tasks/activities/TagSettingsActivity.kt b/app/src/main/java/org/tasks/activities/TagSettingsActivity.kt index 63c1b9448..dd72526da 100644 --- a/app/src/main/java/org/tasks/activities/TagSettingsActivity.kt +++ b/app/src/main/java/org/tasks/activities/TagSettingsActivity.kt @@ -12,7 +12,7 @@ import androidx.activity.compose.setContent import com.todoroo.astrid.activity.MainActivity import com.todoroo.astrid.activity.TaskListFragment import dagger.hilt.android.AndroidEntryPoint -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.data.dao.TagDao @@ -28,7 +28,7 @@ import javax.inject.Inject class TagSettingsActivity : BaseListSettingsActivity() { @Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var tagDao: TagDao - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster private lateinit var tagData: TagData private val isNewTag: Boolean @@ -88,7 +88,7 @@ class TagSettingsActivity : BaseListSettingsActivity() { ) .let { it.copy(id = tagDataDao.insert(it)) } .let { - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() setResult( Activity.RESULT_OK, Intent().putExtra(MainActivity.OPEN_FILTER, TagFilter(it)) @@ -104,7 +104,7 @@ class TagSettingsActivity : BaseListSettingsActivity() { .let { tagDataDao.update(it) tagDao.rename(it.remoteId!!, newName) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() setResult( Activity.RESULT_OK, Intent(TaskListFragment.ACTION_RELOAD) diff --git a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt index 3a6fe457d..fcd76829a 100644 --- a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt +++ b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt @@ -19,7 +19,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.caldav.VtodoCache import org.tasks.data.GoogleTaskAccount @@ -65,7 +65,7 @@ class TasksJsonImporter @Inject constructor( private val userActivityDao: UserActivityDao, private val taskDao: TaskDao, private val locationDao: LocationDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val alarmDao: AlarmDao, private val tagDao: TagDao, private val filterDao: FilterDao, @@ -110,7 +110,7 @@ class TasksJsonImporter @Inject constructor( } catch (e: IOException) { Timber.e(e) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() result } diff --git a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt index 388ef3719..7194b0f94 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt +++ b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt @@ -32,7 +32,7 @@ import okhttp3.HttpUrl import okhttp3.OkHttpClient import okhttp3.RequestBody.Companion.toRequestBody import org.tasks.BuildConfig -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.analytics.Firebase @@ -84,7 +84,7 @@ class CaldavSynchronizer @Inject constructor( @param:ApplicationContext private val context: Context, private val caldavDao: CaldavDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskDeleter: TaskDeleter, private val inventory: Inventory, private val firebase: Firebase, @@ -188,7 +188,7 @@ class CaldavSynchronizer @Inject constructor( icon = icon ?: calendar.icon, ) caldavDao.update(calendar) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } resource .principals(account, calendar) @@ -220,7 +220,7 @@ class CaldavSynchronizer @Inject constructor( } account.error = message caldavDao.update(account) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() if (!isNullOrEmpty(message)) { Timber.e(message) } @@ -297,7 +297,7 @@ class CaldavSynchronizer @Inject constructor( caldavDao.update(caldavCalendar) Timber.d("Updating parents for ${caldavCalendar.uuid}") caldavDao.updateParents(caldavCalendar.uuid!!) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun pushLocalChanges( diff --git a/app/src/main/java/org/tasks/etebase/EtebaseSynchronizer.kt b/app/src/main/java/org/tasks/etebase/EtebaseSynchronizer.kt index 2138c8e7b..4442d7262 100644 --- a/app/src/main/java/org/tasks/etebase/EtebaseSynchronizer.kt +++ b/app/src/main/java/org/tasks/etebase/EtebaseSynchronizer.kt @@ -14,7 +14,7 @@ import com.todoroo.astrid.service.TaskDeleter import dagger.hilt.android.qualifiers.ApplicationContext import net.fortuna.ical4j.model.property.ProdId import org.tasks.BuildConfig -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.billing.Inventory @@ -32,7 +32,7 @@ import javax.inject.Inject class EtebaseSynchronizer @Inject constructor( @param:ApplicationContext private val context: Context, private val caldavDao: CaldavDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskDeleter: TaskDeleter, private val inventory: Inventory, private val clientProvider: EtebaseClientProvider, @@ -98,7 +98,7 @@ class EtebaseSynchronizer @Inject constructor( calendar.name = meta.name calendar.color = color caldavDao.update(calendar) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } fetchChanges(account, client, calendar, collection) pushLocalChanges(account, client, calendar, collection) @@ -112,7 +112,7 @@ class EtebaseSynchronizer @Inject constructor( private suspend fun setError(account: CaldavAccount, message: String?) { account.error = message caldavDao.update(account) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() if (!isNullOrEmpty(message)) { Timber.e(message) } @@ -137,7 +137,7 @@ class EtebaseSynchronizer @Inject constructor( caldavDao.update(caldavCalendar) Timber.d("Updating parents for ${caldavCalendar.uuid}") caldavDao.updateParents(caldavCalendar.uuid!!) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun pushLocalChanges( diff --git a/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt b/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt index 75750f148..4720cc0a3 100644 --- a/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt +++ b/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt @@ -16,7 +16,7 @@ import com.todoroo.astrid.service.TaskCreator.Companion.getDefaultAlarms import com.todoroo.astrid.service.TaskDeleter import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.delay -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.Strings.isNullOrEmpty import org.tasks.analytics.Firebase @@ -56,7 +56,7 @@ class GoogleTaskSynchronizer @Inject constructor( private val defaultFilterProvider: DefaultFilterProvider, private val permissionChecker: PermissionChecker, private val googleAccountManager: GoogleAccountManager, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskDeleter: TaskDeleter, private val invokers: InvokerFactory, private val alarmDao: AlarmDao, @@ -94,7 +94,7 @@ class GoogleTaskSynchronizer @Inject constructor( firebase.reportException(e) } finally { caldavDao.update(account) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() Timber.d("%s: end sync", account) } } diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.kt b/app/src/main/java/org/tasks/injection/ApplicationModule.kt index b7d231111..28ed0c604 100644 --- a/app/src/main/java/org/tasks/injection/ApplicationModule.kt +++ b/app/src/main/java/org/tasks/injection/ApplicationModule.kt @@ -11,6 +11,7 @@ import dagger.hilt.components.SingletonComponent import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob +import org.tasks.LocalBroadcastManager import org.tasks.analytics.Firebase import org.tasks.billing.BillingClient import org.tasks.billing.BillingClientImpl @@ -44,6 +45,8 @@ import org.tasks.security.KeyStoreEncryption import java.util.Locale import javax.inject.Singleton +import org.tasks.broadcast.RefreshBroadcaster + @Module @InstallIn(SingletonComponent::class) class ApplicationModule { @@ -185,4 +188,8 @@ class ApplicationModule { @Provides @Singleton fun providesKeyStoreEncryption(): KeyStoreEncryption = AndroidKeyStoreEncryption() + + @Provides + fun providesBroadcastRefresh(localBroadcastManager: LocalBroadcastManager): RefreshBroadcaster = + localBroadcastManager } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/jobs/RefreshWork.kt b/app/src/main/java/org/tasks/jobs/RefreshWork.kt index 3c94f4af0..b33b7c2c9 100644 --- a/app/src/main/java/org/tasks/jobs/RefreshWork.kt +++ b/app/src/main/java/org/tasks/jobs/RefreshWork.kt @@ -5,7 +5,7 @@ import androidx.hilt.work.HiltWorker import androidx.work.WorkerParameters import dagger.assisted.Assisted import dagger.assisted.AssistedInject -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.analytics.Firebase import org.tasks.data.dao.TaskDao import org.tasks.date.DateTimeUtils @@ -16,13 +16,13 @@ class RefreshWork @AssistedInject constructor( @Assisted context: Context, @Assisted workerParams: WorkerParameters, firebase: Firebase, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val workManager: WorkManager, private val taskDao: TaskDao, ) : RepeatingWorker(context, workerParams, firebase) { override suspend fun run(): Result { - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() return Result.success() } diff --git a/app/src/main/java/org/tasks/jobs/ReverseGeocodeWork.kt b/app/src/main/java/org/tasks/jobs/ReverseGeocodeWork.kt index 7323218c4..522cabb20 100644 --- a/app/src/main/java/org/tasks/jobs/ReverseGeocodeWork.kt +++ b/app/src/main/java/org/tasks/jobs/ReverseGeocodeWork.kt @@ -6,7 +6,7 @@ import androidx.hilt.work.HiltWorker import androidx.work.WorkerParameters import dagger.assisted.Assisted import dagger.assisted.AssistedInject -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.analytics.Firebase import org.tasks.data.dao.LocationDao import org.tasks.data.entity.Place @@ -20,7 +20,7 @@ class ReverseGeocodeWork @AssistedInject constructor( @Assisted context: Context, @Assisted workerParams: WorkerParameters, firebase: Firebase, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val geocoder: Geocoder, private val locationDao: LocationDao ) : BaseWorker(context, workerParams, firebase) { @@ -51,7 +51,7 @@ class ReverseGeocodeWork @AssistedInject constructor( url = result.url, ) ) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() Timber.d("found $result") Result.success() } catch (e: Exception) { diff --git a/app/src/main/java/org/tasks/jobs/SyncWork.kt b/app/src/main/java/org/tasks/jobs/SyncWork.kt index a9029ca64..97dbba459 100644 --- a/app/src/main/java/org/tasks/jobs/SyncWork.kt +++ b/app/src/main/java/org/tasks/jobs/SyncWork.kt @@ -17,7 +17,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.analytics.Firebase import org.tasks.billing.Inventory @@ -44,7 +44,7 @@ class SyncWork @AssistedInject constructor( @Assisted context: Context, @Assisted workerParams: WorkerParameters, firebase: Firebase, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val preferences: Preferences, private val caldavDao: CaldavDao, private val caldavSynchronizer: Lazy, @@ -74,7 +74,7 @@ class SyncWork @AssistedInject constructor( } preferences.setBoolean(syncStatus, true) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() try { doSync() preferences.lastSync = currentTimeMillis() @@ -82,7 +82,7 @@ class SyncWork @AssistedInject constructor( firebase.reportException(e) } finally { preferences.setBoolean(syncStatus, false) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } return Result.success() } diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.kt b/app/src/main/java/org/tasks/notifications/NotificationManager.kt index 9f93139e4..c16b4834a 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.kt +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.kt @@ -13,7 +13,7 @@ import com.todoroo.astrid.utility.Constants import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.data.dao.LocationDao import org.tasks.data.dao.NotificationDao @@ -45,7 +45,7 @@ class NotificationManager @Inject constructor( private val notificationDao: NotificationDao, private val taskDao: TaskDao, private val locationDao: LocationDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val notificationManager: ThrottledNotificationManager, private val markdownProvider: MarkdownProvider, private val permissionChecker: PermissionChecker, @@ -176,7 +176,7 @@ class NotificationManager @Inject constructor( useGroupKey = false, ) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } @SuppressLint("MissingPermission") diff --git a/app/src/main/java/org/tasks/opentasks/OpenTasksSynchronizer.kt b/app/src/main/java/org/tasks/opentasks/OpenTasksSynchronizer.kt index 45fda16e4..9e906e14c 100644 --- a/app/src/main/java/org/tasks/opentasks/OpenTasksSynchronizer.kt +++ b/app/src/main/java/org/tasks/opentasks/OpenTasksSynchronizer.kt @@ -7,7 +7,7 @@ import com.todoroo.astrid.service.TaskDeleter import dagger.hilt.android.qualifiers.ApplicationContext import org.dmfs.tasks.contract.TaskContract import org.dmfs.tasks.contract.TaskContract.Tasks -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.analytics.Constants import org.tasks.analytics.Firebase @@ -36,7 +36,7 @@ class OpenTasksSynchronizer @Inject constructor( @ApplicationContext private val context: Context, private val caldavDao: CaldavDao, private val taskDeleter: TaskDeleter, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskDao: TaskDao, private val firebase: Firebase, private val iCalendar: iCalendar, @@ -111,7 +111,7 @@ class OpenTasksSynchronizer @Inject constructor( if (local.id == NO_ID) { caldavDao.insert(local) Timber.d("Created calendar: $local") - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } else if ( local.name != remote.name || local.color != remote.color || @@ -122,7 +122,7 @@ class OpenTasksSynchronizer @Inject constructor( local.access = remote.access caldavDao.update(local) Timber.d("Updated calendar: $local") - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } return local } @@ -184,7 +184,7 @@ class OpenTasksSynchronizer @Inject constructor( caldavDao.update(calendar) Timber.d("Updating parents for ${calendar.uuid}") caldavDao.updateParents(calendar.uuid!!) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun removeDeleted(calendar: String, uids: List) { @@ -202,7 +202,7 @@ class OpenTasksSynchronizer @Inject constructor( private suspend fun setError(account: CaldavAccount, message: String?) { account.error = message caldavDao.update(account) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() if (!message.isNullOrBlank()) { Timber.e(message) } diff --git a/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt b/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt index db5dbf5e1..66a3a3932 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/DashClock.kt @@ -4,8 +4,8 @@ import android.os.Bundle import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager import org.tasks.R +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.compose.FilterSelectionActivity.Companion.launch import org.tasks.compose.FilterSelectionActivity.Companion.registerForFilterPickerResult import org.tasks.injection.InjectingPreferenceFragment @@ -16,14 +16,14 @@ import javax.inject.Inject class DashClock : InjectingPreferenceFragment() { @Inject lateinit var defaultFilterProvider: DefaultFilterProvider - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster private val listPickerLauncher = registerForFilterPickerResult { defaultFilterProvider.dashclockFilter = it lifecycleScope.launch { refreshPreferences() } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } override fun getPreferenceXml() = R.xml.preferences_dashclock diff --git a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt index bb51fc164..ac6fe6d33 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt @@ -18,10 +18,10 @@ import com.google.android.material.color.DynamicColors import com.todoroo.andlib.utility.AndroidUtilities.atLeastTiramisu import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager import org.tasks.R import org.tasks.billing.Inventory import org.tasks.billing.PurchaseActivity +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.compose.FilterSelectionActivity.Companion.launch import org.tasks.compose.FilterSelectionActivity.Companion.registerForFilterPickerResult import org.tasks.dialogs.ColorPalettePicker @@ -48,7 +48,7 @@ class LookAndFeel : InjectingPreferenceFragment() { @Inject lateinit var themeBase: ThemeBase @Inject lateinit var themeColor: ThemeColor @Inject lateinit var preferences: Preferences - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster @Inject lateinit var defaultFilterProvider: DefaultFilterProvider @Inject lateinit var inventory: Inventory @Inject lateinit var locale: Locale @@ -56,7 +56,7 @@ class LookAndFeel : InjectingPreferenceFragment() { private val listPickerLauncher = registerForFilterPickerResult { defaultFilterProvider.setDefaultOpenFilter(it) findPreference(R.string.p_default_open_filter).summary = it.title - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } override fun getPreferenceXml() = R.xml.preferences_look_and_feel diff --git a/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt b/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt index 9285dc0e3..0e2b30648 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt @@ -17,8 +17,8 @@ import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.astrid.voice.VoiceOutputAssistant import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager import org.tasks.R +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.compose.FilterSelectionActivity.Companion.launch import org.tasks.compose.FilterSelectionActivity.Companion.registerForFilterPickerResult import org.tasks.dialogs.MyTimePickerDialog.Companion.newTimePicker @@ -39,13 +39,13 @@ class Notifications : InjectingPreferenceFragment() { @Inject lateinit var preferences: Preferences @Inject lateinit var defaultFilterProvider: DefaultFilterProvider - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster @Inject lateinit var voiceOutputAssistant: VoiceOutputAssistant private val listPickerLauncher = registerForFilterPickerResult { defaultFilterProvider.setBadgeFilter(it) findPreference(R.string.p_badge_list).summary = it.title - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } override fun getPreferenceXml() = R.xml.preferences_notifications diff --git a/app/src/main/java/org/tasks/sync/SyncAdapters.kt b/app/src/main/java/org/tasks/sync/SyncAdapters.kt index bca9c7b72..3e0efdc10 100644 --- a/app/src/main/java/org/tasks/sync/SyncAdapters.kt +++ b/app/src/main/java/org/tasks/sync/SyncAdapters.kt @@ -5,7 +5,7 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.async import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.data.OpenTaskDao import org.tasks.data.dao.CaldavDao @@ -34,7 +34,7 @@ class SyncAdapters @Inject constructor( private val googleTaskDao: GoogleTaskDao, private val openTaskDao: OpenTaskDao, private val preferences: Preferences, - private val localBroadcastManager: LocalBroadcastManager + private val refreshBroadcaster: RefreshBroadcaster ) { private val scope = CoroutineScope(newSingleThreadExecutor().asCoroutineDispatcher() + SupervisorJob()) private val sync = Debouncer(TAG_SYNC) { workManager.sync(it) } @@ -42,7 +42,7 @@ class SyncAdapters @Inject constructor( val currentState = preferences.getBoolean(R.string.p_sync_ongoing_android, false) if (currentState != newState && isOpenTaskSyncEnabled()) { preferences.setBoolean(R.string.p_sync_ongoing_android, newState) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } } diff --git a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt index af68df252..481e3d6e8 100644 --- a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt +++ b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt @@ -11,7 +11,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import io.ktor.client.call.body import io.ktor.http.isSuccess import kotlinx.serialization.json.Json -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.Strings.isNullOrEmpty import org.tasks.analytics.Firebase import org.tasks.caldav.VtodoCache @@ -52,7 +52,7 @@ class MicrosoftSynchronizer @Inject constructor( @param:ApplicationContext private val context: Context, private val caldavDao: CaldavDao, private val taskDao: TaskDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, private val taskDeleter: TaskDeleter, private val firebase: Firebase, private val taskCreator: TaskCreator, @@ -130,7 +130,7 @@ class MicrosoftSynchronizer @Inject constructor( } else if (local.name != remoteName || local.access != access) { remote.applyTo(local) caldavDao.update(local) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } if (local.ctag?.isNotBlank() == true) { deltaSync(account, local, remote, microsoft) @@ -275,7 +275,7 @@ class MicrosoftSynchronizer @Inject constructor( } Timber.d("UPDATE $list") caldavDao.update(list) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun getTaskLists( @@ -368,7 +368,7 @@ class MicrosoftSynchronizer @Inject constructor( } Timber.d("UPDATE $list") caldavDao.update(list) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private suspend fun updateTask(list: CaldavCalendar, remote: Tasks.Task) { @@ -488,7 +488,7 @@ class MicrosoftSynchronizer @Inject constructor( private suspend fun setError(account: CaldavAccount, message: String?) { account.error = message caldavDao.update(account) - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() if (!isNullOrEmpty(message)) { Timber.e(message) } diff --git a/app/src/main/java/org/tasks/ui/ChipListCache.kt b/app/src/main/java/org/tasks/ui/ChipListCache.kt index df23a5f60..203d1ecf3 100644 --- a/app/src/main/java/org/tasks/ui/ChipListCache.kt +++ b/app/src/main/java/org/tasks/ui/ChipListCache.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.compose.throttleLatest import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.TagDataDao @@ -23,7 +23,7 @@ import javax.inject.Singleton class ChipListCache @Inject internal constructor( caldavDao: CaldavDao, tagDataDao: TagDataDao, - private val localBroadcastManager: LocalBroadcastManager, + private val refreshBroadcaster: RefreshBroadcaster, ) { private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) private val lists: MutableMap = HashMap() @@ -42,7 +42,7 @@ class ChipListCache @Inject internal constructor( lists.clear() it.associateByTo(lists) { filter -> filter.uuid } } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } private fun updateTags(updated: List) { @@ -51,7 +51,7 @@ class ChipListCache @Inject internal constructor( for (update in updated) { tagDatas[update.remoteId] = TagFilter(update) } - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() } fun getCaldavList(caldav: String?): CaldavFilter? = lists[caldav] diff --git a/app/src/main/java/org/tasks/widget/WidgetClickActivity.kt b/app/src/main/java/org/tasks/widget/WidgetClickActivity.kt index e6cf9b9d6..ff5ec5320 100644 --- a/app/src/main/java/org/tasks/widget/WidgetClickActivity.kt +++ b/app/src/main/java/org/tasks/widget/WidgetClickActivity.kt @@ -9,7 +9,7 @@ import com.todoroo.astrid.service.TaskCompleter import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.launch -import org.tasks.LocalBroadcastManager +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.R import org.tasks.analytics.Firebase import org.tasks.data.entity.Task @@ -25,7 +25,7 @@ import javax.inject.Inject class WidgetClickActivity : AppCompatActivity(), OnDismissHandler { @Inject lateinit var taskCompleter: TaskCompleter @Inject lateinit var taskDao: TaskDao - @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject lateinit var refreshBroadcaster: RefreshBroadcaster @Inject lateinit var preferences: Preferences @Inject lateinit var firebase: Firebase @@ -101,7 +101,7 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler { collapsed.remove(group) } widgetPreferences.collapsed = collapsed - localBroadcastManager.broadcastRefresh() + refreshBroadcaster.broadcastRefresh() finish() } else -> { diff --git a/kmp/src/commonMain/kotlin/org/tasks/broadcast/RefreshBroadcaster.kt b/kmp/src/commonMain/kotlin/org/tasks/broadcast/RefreshBroadcaster.kt new file mode 100644 index 000000000..bcc050aa6 --- /dev/null +++ b/kmp/src/commonMain/kotlin/org/tasks/broadcast/RefreshBroadcaster.kt @@ -0,0 +1,5 @@ +package org.tasks.broadcast + +fun interface RefreshBroadcaster { + fun broadcastRefresh() +}