Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8cf60ea

Browse files
author
Summers Pittman
committedMar 21, 2025
Moving updateWidgetPreview coroutine out of MainActivity
1 parent 2c6678f commit 8cf60ea

File tree

2 files changed

+26
-21
lines changed

2 files changed

+26
-21
lines changed
 

Diff for: ‎Jetcaster/glancewidget/src/main/java/com/example/jetcaster/glancewidget/JetcasterAppWidgetPreview.kt

+24-13
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,37 @@ import androidx.glance.layout.Spacer
4242
import androidx.glance.layout.fillMaxSize
4343
import androidx.glance.layout.size
4444
import androidx.glance.layout.wrapContentSize
45+
import kotlinx.coroutines.CoroutineScope
46+
import kotlinx.coroutines.Dispatchers
47+
import kotlinx.coroutines.launch
4548

4649
private object SizesPreview {
4750
val medium = 56.dp
4851
}
4952

50-
suspend fun updateWidgetPreview(context: Context) {
53+
/**
54+
* This is a convenience function for updating the widget preview using Generated Previews.
55+
*
56+
* In a real application, this would be called whenever the widget's state changes.
57+
*/
58+
fun updateWidgetPreview(context: Context) {
59+
5160
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
52-
try {
53-
val appwidgetManager = AppWidgetManager.getInstance(context)
61+
CoroutineScope(Dispatchers.IO).launch {
62+
try {
63+
val appwidgetManager = AppWidgetManager.getInstance(context)
5464

55-
appwidgetManager.setWidgetPreview(
56-
ComponentName(context, JetcasterAppWidgetReceiver::class.java),
57-
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
58-
JetcasterAppWidgetPreview().compose(
59-
context,
60-
size = DpSize(160.dp, 64.dp)
61-
),
62-
)
63-
} catch (e: Exception) {
64-
Log.e(TAG, e.message, e)
65+
appwidgetManager.setWidgetPreview(
66+
ComponentName(context, JetcasterAppWidgetReceiver::class.java),
67+
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
68+
JetcasterAppWidgetPreview().compose(
69+
context,
70+
size = DpSize(160.dp, 64.dp)
71+
),
72+
)
73+
} catch (e: Exception) {
74+
Log.e(TAG, e.message, e)
75+
}
6576
}
6677
}
6778
}

Diff for: ‎Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/MainActivity.kt

+2-8
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,18 @@ import android.os.Bundle
2020
import androidx.activity.ComponentActivity
2121
import androidx.activity.compose.setContent
2222
import androidx.activity.enableEdgeToEdge
23+
import com.example.jetcaster.glancewidget.updateWidgetPreview
2324
import com.example.jetcaster.ui.theme.JetcasterTheme
2425
import com.google.accompanist.adaptive.calculateDisplayFeatures
2526
import dagger.hilt.android.AndroidEntryPoint
26-
import kotlinx.coroutines.CoroutineScope
27-
import kotlinx.coroutines.Dispatchers
28-
import kotlinx.coroutines.launch
2927

3028
@AndroidEntryPoint
3129
class MainActivity : ComponentActivity() {
3230
override fun onCreate(savedInstanceState: Bundle?) {
3331
super.onCreate(savedInstanceState)
3432

3533
enableEdgeToEdge()
36-
37-
CoroutineScope(Dispatchers.IO).launch {
38-
com.example.jetcaster.glancewidget.updateWidgetPreview(this@MainActivity)
39-
}
40-
34+
updateWidgetPreview(this)
4135
setContent {
4236
val displayFeatures = calculateDisplayFeatures(this)
4337

0 commit comments

Comments
 (0)
Please sign in to comment.