Add RefreshBroadcaster interface

pull/3881/head
Alex Baker 3 months ago
parent c9721790ce
commit 68601873fd

@ -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<String, ArrayList<String>>())
@ -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)
}

@ -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()
}
}

@ -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<Long>()
@ -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 {

@ -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
}

@ -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()

@ -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()
}
}

@ -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<Long>) {

@ -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 {

@ -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()
}

@ -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()
}

@ -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)

@ -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)

@ -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()
}

@ -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)

@ -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
}

@ -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(

@ -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(

@ -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)
}
}

@ -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
}

@ -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()
}

@ -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) {

@ -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<CaldavSynchronizer>,
@ -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()
}

@ -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")

@ -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<String>) {
@ -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)
}

@ -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

@ -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

@ -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

@ -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()
}
}

@ -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)
}

@ -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<String?, CaldavFilter> = 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<TagData>) {
@ -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]

@ -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 -> {

@ -0,0 +1,5 @@
package org.tasks.broadcast
fun interface RefreshBroadcaster {
fun broadcastRefresh()
}
Loading…
Cancel
Save