Show permission banner in calendar widget if calendar permission is not granted
This commit is contained in:
parent
b8304f1c1c
commit
09bb040e9a
@ -11,6 +11,8 @@ import androidx.lifecycle.viewModelScope
|
||||
import de.mm20.launcher2.calendar.CalendarRepository
|
||||
import de.mm20.launcher2.favorites.FavoritesRepository
|
||||
import de.mm20.launcher2.ktx.tryStartActivity
|
||||
import de.mm20.launcher2.permissions.PermissionGroup
|
||||
import de.mm20.launcher2.permissions.PermissionsManager
|
||||
import de.mm20.launcher2.search.data.CalendarEvent
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import org.koin.core.component.KoinComponent
|
||||
@ -30,7 +32,8 @@ class CalendarWidgetVM : ViewModel(), KoinComponent {
|
||||
favoritesRepository.getPinnedCalendarEvents().asLiveData(viewModelScope.coroutineContext)
|
||||
var availableDates = listOf(LocalDate.now())
|
||||
|
||||
val permissionMissing = MutableLiveData(false)
|
||||
private val permissionsManager: PermissionsManager by inject()
|
||||
val hasPermission = permissionsManager.hasPermission(PermissionGroup.Calendar).asLiveData()
|
||||
|
||||
private var showRunningPastDayEvents = false
|
||||
val hiddenPastEvents = MutableLiveData(0)
|
||||
|
||||
@ -14,7 +14,9 @@ import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import de.mm20.launcher2.ktx.lifecycleOwner
|
||||
import de.mm20.launcher2.ktx.lifecycleScope
|
||||
import de.mm20.launcher2.permissions.PermissionGroup
|
||||
import de.mm20.launcher2.search.data.CalendarEvent
|
||||
import de.mm20.launcher2.search.data.MissingPermission
|
||||
import de.mm20.launcher2.search.data.Searchable
|
||||
import de.mm20.launcher2.ui.R
|
||||
import de.mm20.launcher2.ui.databinding.ViewCalendarWidgetBinding
|
||||
@ -102,10 +104,20 @@ class CalendarWidget : LauncherWidget {
|
||||
val pinnedCalendarEvents = viewModel.pinnedCalendarEvents
|
||||
val hiddenPastEvents = viewModel.hiddenPastEvents
|
||||
val selectedDate = viewModel.selectedDate
|
||||
val hasPermission = viewModel.hasPermission
|
||||
|
||||
calendarEvents.observe(context as AppCompatActivity) {
|
||||
updateEventList(it, hiddenPastEvents.value ?: 0, hasPermission.value == false)
|
||||
}
|
||||
|
||||
hasPermission.observe(context as AppCompatActivity) {
|
||||
updateEventList(
|
||||
calendarEvents.value ?: emptyList(),
|
||||
hiddenPastEvents.value ?: 0,
|
||||
it == false
|
||||
)
|
||||
}
|
||||
|
||||
calendarEvents.observe(context as AppCompatActivity, {
|
||||
updateEventList(it, hiddenPastEvents.value ?: 0)
|
||||
})
|
||||
pinnedCalendarEvents.observe(context as AppCompatActivity) {
|
||||
binding.calendarWidgetPinnedList.submitItems(it)
|
||||
if (it.isEmpty()) {
|
||||
@ -128,11 +140,21 @@ class CalendarWidget : LauncherWidget {
|
||||
|
||||
private fun updateEventList(
|
||||
events: List<CalendarEvent>,
|
||||
hiddenPastDayEvents: Int
|
||||
hiddenPastDayEvents: Int,
|
||||
missingPermission: Boolean
|
||||
) {
|
||||
val items = events.toMutableList<Searchable>()
|
||||
|
||||
if (events.isEmpty()) {
|
||||
if (missingPermission) {
|
||||
items.add(
|
||||
MissingPermission(
|
||||
context.getString(R.string.permission_calendar_widget),
|
||||
PermissionGroup.Calendar
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
if (events.isEmpty() && !missingPermission) {
|
||||
items.add(
|
||||
InformationText(context.getString(R.string.calendar_widget_no_events))
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user