mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.4 KiB
Kotlin
94 lines
3.4 KiB
Kotlin
package org.tasks
|
|
|
|
import android.content.BroadcastReceiver
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.content.IntentFilter
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
|
import com.google.common.collect.Lists
|
|
import com.todoroo.astrid.api.AstridApiConstants
|
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
|
import org.tasks.widget.AppWidgetManager
|
|
import javax.inject.Inject
|
|
|
|
class LocalBroadcastManager @Inject constructor(
|
|
@ApplicationContext context: Context,
|
|
private val appWidgetManager: AppWidgetManager,
|
|
) {
|
|
private val localBroadcastManager = LocalBroadcastManager.getInstance(context)
|
|
|
|
fun registerRefreshReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
localBroadcastManager.registerReceiver(broadcastReceiver!!, IntentFilter(REFRESH))
|
|
}
|
|
|
|
fun registerRefreshListReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
val intentFilter = IntentFilter()
|
|
intentFilter.addAction(REFRESH)
|
|
intentFilter.addAction(REFRESH_LIST)
|
|
localBroadcastManager.registerReceiver(broadcastReceiver!!, intentFilter)
|
|
}
|
|
|
|
fun registerTaskCompletedReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
localBroadcastManager.registerReceiver(broadcastReceiver!!, IntentFilter(TASK_COMPLETED))
|
|
}
|
|
|
|
fun registerPurchaseReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
localBroadcastManager.registerReceiver(broadcastReceiver!!, IntentFilter(REFRESH_PURCHASES))
|
|
}
|
|
|
|
fun registerPreferenceReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
localBroadcastManager.registerReceiver(
|
|
broadcastReceiver!!,
|
|
IntentFilter(REFRESH_PREFERENCES)
|
|
)
|
|
}
|
|
|
|
fun broadcastRefresh() {
|
|
localBroadcastManager.sendBroadcast(Intent(REFRESH))
|
|
appWidgetManager.updateWidgets()
|
|
}
|
|
|
|
fun broadcastRefreshList() {
|
|
localBroadcastManager.sendBroadcast(Intent(REFRESH_LIST))
|
|
}
|
|
|
|
fun broadcastPreferenceRefresh() {
|
|
localBroadcastManager.sendBroadcast(Intent(REFRESH_PREFERENCES))
|
|
}
|
|
|
|
fun broadcastTaskCompleted(id: Long, oldDueDate: Long) {
|
|
broadcastTaskCompleted(Lists.newArrayList(id), oldDueDate)
|
|
}
|
|
|
|
fun broadcastTaskCompleted(id: ArrayList<Long>) {
|
|
broadcastTaskCompleted(id, 0)
|
|
}
|
|
|
|
private fun broadcastTaskCompleted(id: ArrayList<Long>, oldDueDate: Long) {
|
|
val intent = Intent(TASK_COMPLETED)
|
|
intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, id)
|
|
intent.putExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, oldDueDate)
|
|
localBroadcastManager.sendBroadcast(intent)
|
|
}
|
|
|
|
fun unregisterReceiver(broadcastReceiver: BroadcastReceiver?) {
|
|
localBroadcastManager.unregisterReceiver(broadcastReceiver!!)
|
|
}
|
|
|
|
fun broadcastPurchasesUpdated() {
|
|
localBroadcastManager.sendBroadcast(Intent(REFRESH_PURCHASES))
|
|
}
|
|
|
|
fun reconfigureWidget(appWidgetId: Int) {
|
|
appWidgetManager.reconfigureWidgets(appWidgetId)
|
|
}
|
|
|
|
companion object {
|
|
const val REFRESH = "${BuildConfig.APPLICATION_ID}.REFRESH"
|
|
const val REFRESH_LIST = "${BuildConfig.APPLICATION_ID}.REFRESH_LIST"
|
|
private const val TASK_COMPLETED = "${BuildConfig.APPLICATION_ID}.REPEAT"
|
|
private const val REFRESH_PURCHASES = "${BuildConfig.APPLICATION_ID}.REFRESH_PURCHASES"
|
|
private const val REFRESH_PREFERENCES = "${BuildConfig.APPLICATION_ID}.REFRESH_PREFERENCES"
|
|
}
|
|
}
|