Skip to content

Commit 99539fd

Browse files
committed
Refactor FullBleedImageAppWidget to avoid restricted Glance APIs in preview and deletion
1 parent d78a909 commit 99539fd

1 file changed

Lines changed: 12 additions & 13 deletions

File tree

samples/user-interface/appwidgets/src/main/java/com/example/platform/ui/appwidgets/glance/layout/text/FullBleedImageAppWidget.kt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,33 @@
1010
* Unless required by applicable law or agreed to in writing, software
1111
* distributed under the License is distributed on an "AS IS" BASIS,
1212
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-
* See the License for the details;
14-
* and limitations under the License.
13+
* See the License for the details; and limitations under the License.
1514
*/
1615

1716
package com.example.platform.ui.appwidgets.glance.layout.text
1817

19-
import android.annotation.SuppressLint
2018
import android.content.Context
21-
import androidx.compose.runtime.Composable
19+
import android.os.Build
20+
import androidx.annotation.RequiresApi
2221
import androidx.compose.runtime.collectAsState
2322
import androidx.compose.runtime.getValue
2423
import androidx.glance.GlanceId
2524
import androidx.glance.GlanceTheme
26-
import androidx.glance.LocalSize
27-
import androidx.glance.appwidget.AppWidgetId
2825
import androidx.glance.appwidget.GlanceAppWidget
26+
import androidx.glance.appwidget.GlanceAppWidgetManager
2927
import androidx.glance.appwidget.GlanceAppWidgetReceiver
3028
import androidx.glance.appwidget.SizeMode
3129
import androidx.glance.appwidget.provideContent
3230
import androidx.compose.ui.unit.DpSize
3331
import androidx.compose.ui.unit.dp
3432
import com.example.platform.ui.appwidgets.glance.layout.collections.data.FakeImageGridDataRepository
3533
import com.example.platform.ui.appwidgets.glance.layout.collections.data.FakeImageGridDataRepository.Companion.getImageGridDataRepo
36-
import com.example.platform.ui.appwidgets.glance.layout.collections.layout.ImageGridItemData
3734
import com.example.platform.ui.appwidgets.glance.layout.text.layout.FullBleedImageLayout
3835
import kotlinx.coroutines.Dispatchers
3936
import kotlinx.coroutines.withContext
4037

4138
/**
42-
* Glance widget showcasing the Full Bleed Snapping Gallery layout, powered by the existing
43-
* memory-optimized [FakeImageGridDataRepository].
39+
* Glance widget showcasing Full Bleed Snap Scrolling, powered by [FakeImageGridDataRepository].
4440
*/
4541
class FullBleedImageAppWidget : GlanceAppWidget() {
4642
override val sizeMode: SizeMode = SizeMode.Exact
@@ -51,6 +47,7 @@ class FullBleedImageAppWidget : GlanceAppWidget() {
5147
)
5248
)
5349

50+
@RequiresApi(Build.VERSION_CODES_FULL.BAKLAVA_1)
5451
override suspend fun provideGlance(context: Context, id: GlanceId) {
5552
val repo = getImageGridDataRepo(id)
5653

@@ -69,8 +66,9 @@ class FullBleedImageAppWidget : GlanceAppWidget() {
6966
}
7067
}
7168

69+
@RequiresApi(Build.VERSION_CODES_FULL.BAKLAVA_1)
7270
override suspend fun providePreview(context: Context, widgetCategory: Int) {
73-
val repo = getImageGridDataRepo(AppWidgetId(0))
71+
val repo = FakeImageGridDataRepository()
7472

7573
val initialData = withContext(Dispatchers.IO) {
7674
repo.load(context)
@@ -87,15 +85,16 @@ class FullBleedImageAppWidget : GlanceAppWidget() {
8785
}
8886

8987
/**
90-
* Receiver for the Full Bleed Snapping Gallery widget.
88+
* Receiver for the Full Bleed Snap Scrolling widget.
9189
*/
9290
class FullBleedImageAppWidgetReceiver : GlanceAppWidgetReceiver() {
9391
override val glanceAppWidget: GlanceAppWidget = FullBleedImageAppWidget()
9492

95-
@SuppressLint("RestrictedApi")
9693
override fun onDeleted(context: Context, appWidgetIds: IntArray) {
94+
val glanceAppWidgetManager = GlanceAppWidgetManager(context)
9795
appWidgetIds.forEach {
98-
FakeImageGridDataRepository.cleanUp(AppWidgetId(appWidgetId = it))
96+
val glanceId = glanceAppWidgetManager.getGlanceIdBy(it)
97+
FakeImageGridDataRepository.cleanUp(glanceId)
9998
}
10099
super.onDeleted(context, appWidgetIds)
101100
}

0 commit comments

Comments
 (0)