Skip to content

Commit 04e0326

Browse files
authored
Fix crash on FavoritesObserver (#5335)
Task/Issue URL: https://app.asana.com/0/1202552961248957/1208841273777750/f ### Description Fix NPE when trying to get `AppWidgetManager.getInstance` ### Steps to test this PR NA, code review
1 parent 8ebd7d8 commit 04e0326

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

app/src/main/java/com/duckduckgo/app/widget/FavoritesObserver.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,36 @@ import android.appwidget.AppWidgetManager
2020
import android.content.ComponentName
2121
import android.content.Context
2222
import androidx.lifecycle.LifecycleOwner
23+
import androidx.lifecycle.coroutineScope
2324
import com.duckduckgo.app.browser.R
24-
import com.duckduckgo.app.di.AppCoroutineScope
2525
import com.duckduckgo.app.lifecycle.MainProcessLifecycleObserver
2626
import com.duckduckgo.common.utils.DispatcherProvider
2727
import com.duckduckgo.di.scopes.AppScope
2828
import com.duckduckgo.savedsites.api.SavedSitesRepository
2929
import com.duckduckgo.widget.SearchAndFavoritesWidget
3030
import dagger.SingleInstanceIn
3131
import javax.inject.Inject
32-
import kotlinx.coroutines.CoroutineScope
3332
import kotlinx.coroutines.launch
3433

3534
@SingleInstanceIn(AppScope::class)
3635
class FavoritesObserver @Inject constructor(
3736
context: Context,
3837
private val savedSitesRepository: SavedSitesRepository,
39-
@AppCoroutineScope private val appCoroutineScope: CoroutineScope,
4038
private val dispatcherProvider: DispatcherProvider,
4139
) : MainProcessLifecycleObserver {
4240

43-
private val instance = AppWidgetManager.getInstance(context)
41+
private val appWidgetManager: AppWidgetManager? by lazy {
42+
AppWidgetManager.getInstance(context)
43+
}
4444
private val componentName = ComponentName(context, SearchAndFavoritesWidget::class.java)
4545

4646
override fun onStart(owner: LifecycleOwner) {
47-
appCoroutineScope.launch(dispatcherProvider.io()) {
48-
savedSitesRepository.getFavorites().collect {
49-
instance.notifyAppWidgetViewDataChanged(instance.getAppWidgetIds(componentName), R.id.favoritesGrid)
50-
instance.notifyAppWidgetViewDataChanged(instance.getAppWidgetIds(componentName), R.id.emptyfavoritesGrid)
47+
owner.lifecycle.coroutineScope.launch(dispatcherProvider.io()) {
48+
appWidgetManager?.let { instance ->
49+
savedSitesRepository.getFavorites().collect {
50+
instance.notifyAppWidgetViewDataChanged(instance.getAppWidgetIds(componentName), R.id.favoritesGrid)
51+
instance.notifyAppWidgetViewDataChanged(instance.getAppWidgetIds(componentName), R.id.emptyfavoritesGrid)
52+
}
5153
}
5254
}
5355
}

0 commit comments

Comments
 (0)