-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBlocksGlanceWidget.kt
More file actions
48 lines (41 loc) · 1.82 KB
/
BlocksGlanceWidget.kt
File metadata and controls
48 lines (41 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package to.bitkit.appwidget.ui.blocks
import android.content.Context
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.glance.GlanceId
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetManager
import androidx.glance.appwidget.SizeMode
import androidx.glance.appwidget.provideContent
import dagger.hilt.android.EntryPointAccessors
import to.bitkit.appwidget.AppWidgetEntryPoint
import to.bitkit.appwidget.model.AppWidgetData
import to.bitkit.appwidget.model.AppWidgetEntry
import to.bitkit.appwidget.model.AppWidgetType
import to.bitkit.models.widget.toBlockModel
class BlocksGlanceWidget : GlanceAppWidget() {
override val sizeMode = SizeMode.Exact
override suspend fun provideGlance(context: Context, id: GlanceId) {
val store = EntryPointAccessors
.fromApplication(context, AppWidgetEntryPoint::class.java)
.appWidgetPreferencesStore()
val appWidgetId = GlanceAppWidgetManager(context).getAppWidgetId(id)
provideContent {
val data by store.data.collectAsState(initial = AppWidgetData())
val entry = data.entries.find { it.appWidgetId == appWidgetId }
?: AppWidgetEntry(appWidgetId = appWidgetId, type = AppWidgetType.BLOCKS)
val block = data.cachedBlock?.toBlockModel()
BlocksGlanceContent(
entry = entry,
block = block,
)
}
}
override suspend fun onDelete(context: Context, glanceId: GlanceId) {
val appWidgetId = GlanceAppWidgetManager(context).getAppWidgetId(glanceId)
EntryPointAccessors
.fromApplication(context, AppWidgetEntryPoint::class.java)
.appWidgetPreferencesStore()
.unregisterWidget(appWidgetId)
}
}