From 08cfd742a09381acfebe08d54f5dcafa46492309 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 20 Jan 2023 10:16:31 +0800 Subject: [PATCH] Distinct OSS lib models by their names (#3266) * Mark ossLibraries non-null * Distinct oss lib models * Cleanup --- .../app/lawnchair/ui/preferences/PreferenceInteractor.kt | 2 +- .../app/lawnchair/ui/preferences/PreferenceViewModel.kt | 9 ++++++--- .../about/acknowledgements/Acknowledgements.kt | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt index 30e68ea16b..2c3eb6e9e1 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt @@ -20,7 +20,7 @@ import app.lawnchair.ossnotices.OssLibrary import kotlinx.coroutines.flow.StateFlow sealed interface PreferenceInteractor { - val ossLibraries: StateFlow?> + val ossLibraries: StateFlow> val iconPacks: StateFlow> val themedIconPacks: StateFlow> } diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt index d031a5e8c0..824e646d44 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt @@ -22,6 +22,7 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope import app.lawnchair.icons.CustomAdaptiveIconDrawable +import app.lawnchair.ossnotices.OssLibrary import app.lawnchair.ossnotices.getOssLibraries import com.android.launcher3.R import kotlinx.coroutines.Dispatchers @@ -31,6 +32,7 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.stateIn import app.lawnchair.util.getPackageVersionCode import app.lawnchair.util.Constants.LAWNICONS_PACKAGE_NAME +import kotlinx.coroutines.flow.StateFlow private val iconPackIntents = listOf( Intent("com.novalauncher.THEME"), @@ -106,10 +108,11 @@ class PreferenceViewModel(private val app: Application) : AndroidViewModel(app), .flowOn(Dispatchers.Default) .stateIn(viewModelScope, SharingStarted.Lazily, listOf()) - override val ossLibraries = flow { - val ossLibraries = app.getOssLibraries(thirdPartyLicenseMetadataId = R.raw.third_party_license_metadata) + override val ossLibraries: StateFlow> = flow { + val ossLibraries = app.getOssLibraries(R.raw.third_party_license_metadata) + .distinctBy { it.name } emit(ossLibraries) } .flowOn(Dispatchers.Default) - .stateIn(viewModelScope, SharingStarted.Lazily, null) + .stateIn(viewModelScope, SharingStarted.Lazily, emptyList()) } diff --git a/lawnchair/src/app/lawnchair/ui/preferences/about/acknowledgements/Acknowledgements.kt b/lawnchair/src/app/lawnchair/ui/preferences/about/acknowledgements/Acknowledgements.kt index 6274a0e9b0..d496e791ee 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/about/acknowledgements/Acknowledgements.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/about/acknowledgements/Acknowledgements.kt @@ -96,7 +96,7 @@ fun OssLibraryItem(ossLibrary: OssLibrary, index: Int) { @Composable fun NoticePage(index: Int) { val ossLibraries by LocalPreferenceInteractor.current.ossLibraries.collectAsState() - val ossLibrary = ossLibraries?.get(index) + val ossLibrary = ossLibraries.getOrNull(index) val dataState = ossLibrary?.let { loadNotice(ossLibrary = it) } val data = dataState?.value