Skip to content

Commit 96385ce

Browse files
committed
Introduce LoggingAppWidgetProvider | Update widget(s) synchronously
1 parent 1fecb39 commit 96385ce

File tree

5 files changed

+85
-49
lines changed

5 files changed

+85
-49
lines changed

app/src/main/kotlin/com/w2sv/wifiwidget/ui/screens/widgetconfiguration/components/configuration/CheckRowColumn.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,8 @@ fun PropertyConfigurationRow(
305305
modifier = modifier
306306
.fillMaxWidth()
307307
.padding(start = CheckRowDefaults.startPadding)
308-
.thenIfNotNull(shakeController) { shake(it) }) {
308+
.thenIfNotNull(shakeController) { shake(it) }
309+
) {
309310
Row(
310311
verticalAlignment = Alignment.CenterVertically,
311312
modifier = Modifier.fillMaxWidth()

app/src/main/kotlin/com/w2sv/wifiwidget/ui/screens/widgetconfiguration/components/configuration/RefreshingConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import com.w2sv.wifiwidget.ui.designsystem.IconHeaderProperties
2222
import com.w2sv.wifiwidget.ui.designsystem.SubPropertyKeyboardArrowRightIcon
2323
import com.w2sv.wifiwidget.ui.screens.widgetconfiguration.components.dialog.model.InfoDialogData
2424
import com.w2sv.wifiwidget.ui.screens.widgetconfiguration.model.ReversibleWidgetConfiguration
25-
import kotlinx.collections.immutable.persistentListOf
2625
import kotlin.time.Duration
26+
import kotlinx.collections.immutable.persistentListOf
2727

2828
fun refreshingConfigurationCard(
2929
widgetConfiguration: ReversibleWidgetConfiguration,
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.w2sv.widget
2+
3+
import android.appwidget.AppWidgetManager
4+
import android.appwidget.AppWidgetProvider
5+
import android.content.Context
6+
import android.content.Intent
7+
import android.os.Bundle
8+
import com.w2sv.common.utils.toMapString
9+
import slimber.log.i
10+
11+
/**
12+
* An [AppWidgetProvider] that logs upon invocation of its callbacks.
13+
*/
14+
abstract class LoggingAppWidgetProvider : AppWidgetProvider() {
15+
16+
override fun onReceive(context: Context, intent: Intent) {
17+
super.onReceive(context, intent)
18+
i {
19+
"${this::class.simpleName}.onReceive | Action=${intent.action} | Extras=${intent.extras?.toMapString()} | Flags=${intent.flags} | Data=${intent.data}"
20+
}
21+
}
22+
23+
override fun onEnabled(context: Context) {
24+
super.onEnabled(context)
25+
i { "${this::class.simpleName}.onEnabled" }
26+
}
27+
28+
override fun onDisabled(context: Context) {
29+
super.onDisabled(context)
30+
i { "${this::class.simpleName}.onDisabled" }
31+
}
32+
33+
override fun onAppWidgetOptionsChanged(
34+
context: Context?,
35+
appWidgetManager: AppWidgetManager?,
36+
appWidgetId: Int,
37+
newOptions: Bundle?
38+
) {
39+
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
40+
i { "${this::class.simpleName}.onAppWidgetOptionsChanged | newOptions=${newOptions?.toMapString()}" }
41+
}
42+
43+
override fun onUpdate(
44+
context: Context,
45+
appWidgetManager: AppWidgetManager,
46+
appWidgetIds: IntArray
47+
) {
48+
super.onUpdate(context, appWidgetManager, appWidgetIds)
49+
i { "${this::class.simpleName}.onUpdate | appWidgetIds=${appWidgetIds.toList()} | ${Thread.currentThread()}" }
50+
}
51+
52+
override fun onDeleted(context: Context?, appWidgetIds: IntArray?) {
53+
super.onDeleted(context, appWidgetIds)
54+
i { "${this::class.simpleName}.onDeleted | appWidgetIds=${appWidgetIds?.toList()}" }
55+
}
56+
57+
override fun onRestored(
58+
context: Context?,
59+
oldWidgetIds: IntArray?,
60+
newWidgetIds: IntArray?
61+
) {
62+
super.onRestored(context, oldWidgetIds, newWidgetIds)
63+
i { "${this::class.simpleName}.onRestored | oldWidgetIds=${oldWidgetIds?.toList()} | newWidgetIds=${newWidgetIds?.toList()}" }
64+
}
65+
}

core/widget/src/main/kotlin/com/w2sv/widget/WifiWidgetProvider.kt

Lines changed: 15 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,21 @@
11
package com.w2sv.widget
22

33
import android.appwidget.AppWidgetManager
4-
import android.appwidget.AppWidgetProvider
54
import android.content.Context
65
import android.content.Intent
7-
import android.os.Bundle
86
import android.widget.RemoteViews
97
import com.w2sv.androidutils.os.getIntExtraOrNull
10-
import com.w2sv.common.di.AppDefaultScope
118
import com.w2sv.common.utils.log
12-
import com.w2sv.common.utils.toMapString
139
import com.w2sv.core.widget.R
1410
import com.w2sv.widget.data.WidgetModuleWidgetRepository
1511
import com.w2sv.widget.layout.WidgetLayoutPopulator
1612
import com.w2sv.widget.utils.getWifiWidgetIds
1713
import dagger.hilt.android.AndroidEntryPoint
1814
import javax.inject.Inject
19-
import kotlinx.coroutines.CoroutineScope
20-
import kotlinx.coroutines.launch
2115
import slimber.log.i
2216

2317
@AndroidEntryPoint
24-
class WifiWidgetProvider : AppWidgetProvider() {
18+
class WifiWidgetProvider : LoggingAppWidgetProvider() {
2519

2620
@Inject
2721
internal lateinit var widgetDataRefreshWorkerManager: WifiWidgetRefreshWorker.Manager
@@ -35,19 +29,13 @@ class WifiWidgetProvider : AppWidgetProvider() {
3529
@Inject
3630
internal lateinit var widgetRepository: WidgetModuleWidgetRepository
3731

38-
@Inject
39-
@AppDefaultScope
40-
internal lateinit var scope: CoroutineScope
41-
4232
/**
4333
* Called upon the first AppWidget instance being created.
4434
*
4535
* Enqueues [WifiWidgetRefreshWorker] as UniquePeriodicWork if not already enqueued.
4636
*/
4737
override fun onEnabled(context: Context) {
4838
super.onEnabled(context)
49-
i { "onEnabled" }
50-
5139
widgetDataRefreshWorkerManager.applyRefreshingSettings(widgetRepository.refreshing.value)
5240
}
5341

@@ -58,14 +46,11 @@ class WifiWidgetProvider : AppWidgetProvider() {
5846
*/
5947
override fun onDisabled(context: Context) {
6048
super.onDisabled(context)
61-
i { "onDisabled" }
62-
6349
widgetDataRefreshWorkerManager.cancelWorker()
6450
}
6551

6652
override fun onReceive(context: Context, intent: Intent) {
6753
super.onReceive(context, intent)
68-
i { "onReceive | Action=${intent.action} | Extras=${intent.extras?.toMapString()}" }
6954

7055
if (intent.action == ACTION_REFRESH_DATA) {
7156
onUpdate(
@@ -80,41 +65,26 @@ class WifiWidgetProvider : AppWidgetProvider() {
8065
}
8166
}
8267

83-
override fun onAppWidgetOptionsChanged(
84-
context: Context?,
85-
appWidgetManager: AppWidgetManager?,
86-
appWidgetId: Int,
87-
newOptions: Bundle?
88-
) {
89-
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
90-
i { "onAppWidgetOptionsChanged | Bundle=${newOptions?.toMapString()}" }
91-
}
92-
9368
override fun onUpdate(
9469
context: Context,
9570
appWidgetManager: AppWidgetManager,
9671
appWidgetIds: IntArray
9772
) {
98-
scope.launch {
99-
i { "onUpdate | appWidgetIds=${appWidgetIds.toList()} | ${Thread.currentThread()}" }
100-
101-
val widgetView = RemoteViews(
102-
context.packageName,
103-
R.layout.widget
104-
)
105-
106-
appWidgetIds.forEach { id ->
107-
i { "updateWidget | appWidgetId=$id" }
108-
109-
appWidgetManager.updateAppWidget(
110-
id,
111-
widgetLayoutPopulator
112-
.populate(
113-
widget = widgetView,
114-
appWidgetId = id
115-
)
73+
super.onUpdate(context, appWidgetManager, appWidgetIds)
74+
75+
appWidgetIds.forEach { id ->
76+
i { "updateWidget | appWidgetId=$id" }
77+
78+
appWidgetManager.updateAppWidget(
79+
id,
80+
widgetLayoutPopulator.populate(
81+
widget = RemoteViews(
82+
context.packageName,
83+
R.layout.widget
84+
),
85+
appWidgetId = id
11686
)
117-
}
87+
)
11888
}
11989
}
12090

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ android.nonTransitiveRClass=true
1515
android.uniquePackageNames=true
1616
android.nonFinalResIds=false
1717
# ======= Version =======
18-
version=1.7.0
19-
versionCode=67
18+
version=1.7.1-rc1
19+
versionCode=68

0 commit comments

Comments
 (0)