Skip to content

Commit f6817ad

Browse files
committed
Fix WidgetDataRefreshWorker
1 parent 21d60af commit f6817ad

File tree

10 files changed

+18
-89
lines changed

10 files changed

+18
-89
lines changed

app/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ dependencies {
122122
implementation(libs.androidx.workmanager)
123123

124124
// Compose libraries
125-
implementation(platform(libs.androidx.compose.bom))
126125
implementation(libs.androidx.compose.material3)
127126
implementation(libs.androidx.compose.ui)
128127
implementation(libs.androidx.compose.ui.tooling.preview)

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43

54
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
65
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
@@ -26,19 +25,6 @@
2625
</intent-filter>
2726
</activity>
2827

29-
<provider
30-
android:name="androidx.startup.InitializationProvider"
31-
android:authorities="${applicationId}.androidx-startup"
32-
android:exported="false"
33-
tools:node="merge">
34-
35-
<meta-data
36-
android:name="androidx.work.WorkManagerInitializer"
37-
android:value="androidx.startup"
38-
tools:node="remove" />
39-
40-
</provider>
41-
4228

4329
<!--Receivers-->
4430

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
package com.w2sv.wifiwidget
22

33
import android.app.Application
4-
import androidx.hilt.work.HiltWorkerFactory
5-
import androidx.work.Configuration
64
import dagger.hilt.android.HiltAndroidApp
75
import timber.log.Timber
8-
import javax.inject.Inject
96

107
@HiltAndroidApp
11-
class Application : Application(), Configuration.Provider {
12-
13-
@Inject
14-
lateinit var workerFactory: HiltWorkerFactory
8+
class Application : Application() {
159

1610
override fun onCreate() {
1711
super.onCreate()
@@ -20,9 +14,4 @@ class Application : Application(), Configuration.Provider {
2014
Timber.plant(Timber.DebugTree())
2115
}
2216
}
23-
24-
override val workManagerConfiguration: Configuration
25-
get() = Configuration.Builder()
26-
.setWorkerFactory(workerFactory)
27-
.build()
2817
}

app/src/main/kotlin/com/w2sv/wifiwidget/ui/viewmodels/WidgetViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class WidgetViewModel @Inject constructor(
124124
stateFlowMap = repository.refreshingParametersEnablementMap,
125125
syncState = {
126126
repository.saveRefreshingParametersEnablementMap(it)
127-
widgetDataRefreshWorkerManager.applyChangedParameters()
127+
widgetDataRefreshWorkerManager.enableWorkerIfRefreshingEnabled()
128128
},
129129
),
130130
scope = viewModelScope,

domain/src/main/AndroidManifest.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

gradle/libs.versions.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ baselineprofile = "1.2.3"
1515
# Libraries
1616
androidx-activity-compose = "1.8.2"
1717
compose-compiler = "1.5.8"
18-
compose-tooling = "1.6.1"
18+
compose-tooling = "1.6.2"
1919
compose-material3 = "1.2.0"
2020
lifecycle = "2.7.0"
2121
okhttp = "4.12.0"
@@ -41,10 +41,8 @@ androidx-splashscreen = "androidx.core:core-splashscreen:1.0.1"
4141
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" }
4242
androidx-workmanager = "androidx.work:work-runtime-ktx:2.9.0"
4343
androidx-datastore-preferences = "androidx.datastore:datastore-preferences:1.0.0"
44-
androidx-hilt-work = "androidx.hilt:hilt-work:1.1.0"
4544

4645
# .Compose
47-
androidx-compose-bom = "androidx.compose:compose-bom:2024.02.00"
4846
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "compose-material3" }
4947
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose-tooling" }
5048
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose-tooling" }

plugins/src/main/kotlin/HiltPlugin.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class HiltPlugin : Plugin<Project> {
1212

1313
dependencies {
1414
"implementation"(libs.findLibrary("google.hilt").get())
15-
"implementation"(libs.findLibrary("androidx.hilt.work").get())
1615
"ksp"(libs.findLibrary("google.hilt.compiler").get())
1716
}
1817
}

widget/src/main/kotlin/com/w2sv/widget/WidgetDataRefreshWorker.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.w2sv.widget
22

33
import android.content.Context
44
import android.os.PowerManager
5-
import androidx.hilt.work.HiltWorker
65
import androidx.work.Constraints
76
import androidx.work.ExistingPeriodicWorkPolicy
87
import androidx.work.PeriodicWorkRequestBuilder
@@ -11,21 +10,20 @@ import androidx.work.Worker
1110
import androidx.work.WorkerParameters
1211
import com.w2sv.domain.repository.WidgetRepository
1312
import com.w2sv.widget.data.refreshing
14-
import dagger.assisted.Assisted
15-
import dagger.assisted.AssistedInject
1613
import slimber.log.i
1714
import java.time.Duration
1815
import javax.inject.Inject
1916
import javax.inject.Singleton
2017

18+
/**
19+
* Minimum interval for periodic work.
20+
*/
2121
private val REFRESH_PERIOD = Duration.ofMinutes(15L)
2222

23-
@HiltWorker
24-
class WidgetDataRefreshWorker @AssistedInject constructor(
25-
@Assisted appContext: Context,
26-
@Assisted workerParams: WorkerParameters,
27-
private val powerManager: PowerManager
28-
) : Worker(appContext, workerParams) {
23+
class WidgetDataRefreshWorker(appContext: Context, workerParams: WorkerParameters) :
24+
Worker(appContext, workerParams) {
25+
26+
private val powerManager = appContext.getSystemService(PowerManager::class.java)
2927

3028
override fun doWork(): Result {
3129
when (powerManager.isInteractive) {
@@ -43,7 +41,7 @@ class WidgetDataRefreshWorker @AssistedInject constructor(
4341
private val workManager: WorkManager,
4442
private val widgetRepository: WidgetRepository,
4543
) {
46-
fun applyChangedParameters() {
44+
fun enableWorkerIfRefreshingEnabled() {
4745
with(widgetRepository.refreshing) {
4846
when (refreshPeriodically) {
4947
true -> enableWorker(refreshOnLowBattery)

widget/src/main/kotlin/com/w2sv/widget/WidgetProvider.kt

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,15 @@ import android.appwidget.AppWidgetProvider
55
import android.content.Context
66
import android.content.Intent
77
import android.widget.RemoteViews
8-
import com.w2sv.androidutils.generic.getIntExtraOrNull
98
import com.w2sv.widget.ui.WidgetLayoutPopulator
109
import com.w2sv.widget.utils.getWifiWidgetIds
1110
import dagger.hilt.android.AndroidEntryPoint
12-
import kotlinx.coroutines.CoroutineScope
13-
import kotlinx.coroutines.Dispatchers
14-
import kotlinx.coroutines.flow.MutableSharedFlow
15-
import kotlinx.coroutines.flow.asSharedFlow
16-
import kotlinx.coroutines.launch
1711
import slimber.log.i
1812
import javax.inject.Inject
19-
import javax.inject.Singleton
2013

2114
@AndroidEntryPoint
2215
class WidgetProvider : AppWidgetProvider() {
2316

24-
@Inject
25-
lateinit var optionsChanged: OptionsChanged
26-
2717
@Inject
2818
lateinit var widgetDataRefreshWorkerManager: WidgetDataRefreshWorker.Manager
2919

@@ -41,7 +31,9 @@ class WidgetProvider : AppWidgetProvider() {
4131
override fun onEnabled(context: Context?) {
4232
super.onEnabled(context)
4333

44-
widgetDataRefreshWorkerManager.applyChangedParameters()
34+
i { "onEnabled" }
35+
36+
widgetDataRefreshWorkerManager.enableWorkerIfRefreshingEnabled()
4537
}
4638

4739
/**
@@ -52,6 +44,8 @@ class WidgetProvider : AppWidgetProvider() {
5244
override fun onDisabled(context: Context?) {
5345
super.onDisabled(context)
5446

47+
i { "onDisabled" }
48+
5549
widgetDataRefreshWorkerManager.cancelWorker()
5650
}
5751

@@ -61,7 +55,7 @@ class WidgetProvider : AppWidgetProvider() {
6155
i {
6256
"${this::class.java.simpleName}.onReceive | ${intent?.action} | ${
6357
intent?.extras?.keySet()?.toList()
64-
}"
58+
} | ${appWidgetManager.getWifiWidgetIds(context!!).toList()}"
6559
}
6660

6761
when (intent?.action) {
@@ -75,14 +69,6 @@ class WidgetProvider : AppWidgetProvider() {
7569
)
7670
}
7771
}
78-
79-
AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED -> intent.getIntExtraOrNull(
80-
AppWidgetManager.EXTRA_APPWIDGET_ID,
81-
-1,
82-
)?.let { widgetId ->
83-
i { "AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED | id = $widgetId" }
84-
optionsChanged.onOptionsChanged(widgetId)
85-
}
8672
}
8773
}
8874

@@ -112,20 +98,6 @@ class WidgetProvider : AppWidgetProvider() {
11298
}
11399
}
114100

115-
@Singleton
116-
class OptionsChanged @Inject constructor() {
117-
private val scope = CoroutineScope(Dispatchers.Default)
118-
119-
val widgetId get() = _widgetId.asSharedFlow()
120-
private val _widgetId = MutableSharedFlow<Int>()
121-
122-
fun onOptionsChanged(widgetId: Int) {
123-
scope.launch {
124-
_widgetId.emit(widgetId)
125-
}
126-
}
127-
}
128-
129101
companion object {
130102

131103
// ===============

widget/src/main/kotlin/com/w2sv/widget/di/WidgetModule.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.w2sv.widget.di
22

33
import android.appwidget.AppWidgetManager
44
import android.content.Context
5-
import android.os.PowerManager
65
import androidx.work.WorkManager
76
import com.w2sv.domain.repository.WidgetRepository
87
import com.w2sv.widget.data.appearance
@@ -28,11 +27,6 @@ object WidgetModule {
2827
fun appWidgetManager(@ApplicationContext context: Context): AppWidgetManager =
2928
AppWidgetManager.getInstance(context)
3029

31-
@Provides
32-
@Singleton
33-
fun powerManager(@ApplicationContext context: Context): PowerManager =
34-
context.getSystemService(PowerManager::class.java)
35-
3630
@Provides
3731
fun widgetAppearance(widgetRepository: WidgetRepository): WidgetAppearance =
3832
widgetRepository.appearance

0 commit comments

Comments
 (0)