mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
fix: Selected privileged app
This commit is contained in:
@@ -53,7 +53,10 @@ class PasskeysPrivilegedAppsPreferenceDialogFragmentCompat
|
||||
when(uiState) {
|
||||
is PasskeysPrivilegedAppsViewModel.UiState.Loading -> {}
|
||||
is PasskeysPrivilegedAppsViewModel.UiState.OnPrivilegedAppsToSelectRetrieved -> {
|
||||
mAdapter.setItems(uiState.privilegedApps)
|
||||
mAdapter.apply {
|
||||
setItems(uiState.privilegedApps)
|
||||
selectedItem = uiState.selected.firstOrNull()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,11 @@ class ListSelectionItemAdapter<T>()
|
||||
|
||||
private val itemList: MutableList<T> = ArrayList()
|
||||
var selectedItem: T? = null
|
||||
private set
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
set(value) {
|
||||
field = value
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
var itemSelectedCallback: ItemSelectedCallback<T>? = null
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.data.AndroidPrivilegedApp
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PrivilegedAllowLists.deletePrivilegedAppsFile
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PrivilegedAllowLists.retrieveAllPrivilegedApps
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PrivilegedAllowLists.retrieveCustomPrivilegedApps
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PrivilegedAllowLists.retrievePredefinedPrivilegedApps
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PrivilegedAllowLists.saveCustomPrivilegedApps
|
||||
import com.kunzisoft.keepass.utils.AppUtil.getInstalledBrowsersWithSignatures
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@@ -22,17 +23,21 @@ class PasskeysPrivilegedAppsViewModel(application: Application): AndroidViewMode
|
||||
|
||||
fun retrievePrivilegedAppsToSelect() {
|
||||
viewModelScope.launch {
|
||||
val privilegedApps = retrieveAllPrivilegedApps(getApplication())
|
||||
val privilegedAppsToSelect = getInstalledBrowsersWithSignatures(getApplication())
|
||||
.filter {
|
||||
privilegedApps.none { privilegedApp ->
|
||||
privilegedApp.packageName == it.packageName
|
||||
val predefinedPrivilegedApps = retrievePredefinedPrivilegedApps(getApplication())
|
||||
val customPrivilegedApps = retrieveCustomPrivilegedApps(getApplication())
|
||||
// Only retrieve browser apps that are not already in the predefined list
|
||||
val browserApps = getInstalledBrowsersWithSignatures(getApplication()).filter {
|
||||
predefinedPrivilegedApps.none { privilegedApp ->
|
||||
privilegedApp.packageName == it.packageName
|
||||
&& privilegedApp.fingerprints.any {
|
||||
fingerprint -> fingerprint in it.fingerprints
|
||||
}
|
||||
fingerprint -> fingerprint in it.fingerprints
|
||||
}
|
||||
}
|
||||
_uiState.value = UiState.OnPrivilegedAppsToSelectRetrieved(privilegedAppsToSelect)
|
||||
}
|
||||
_uiState.value = UiState.OnPrivilegedAppsToSelectRetrieved(
|
||||
privilegedApps = browserApps,
|
||||
selected = customPrivilegedApps
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +52,9 @@ class PasskeysPrivilegedAppsViewModel(application: Application): AndroidViewMode
|
||||
sealed class UiState {
|
||||
|
||||
object Loading : UiState()
|
||||
data class OnPrivilegedAppsToSelectRetrieved(val privilegedApps: List<AndroidPrivilegedApp>) : UiState()
|
||||
data class OnPrivilegedAppsToSelectRetrieved(
|
||||
val privilegedApps: List<AndroidPrivilegedApp>,
|
||||
val selected: List<AndroidPrivilegedApp>
|
||||
) : UiState()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user