mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
Fix app group bugs (#195)
This commit is contained in:
@@ -249,7 +249,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
val ucdPackages = MutableStateFlow(emptyList<AppInfo>())
|
val ucdPackages = MutableStateFlow(emptyList<AppInfo>())
|
||||||
@RequiresApi(30)
|
@RequiresApi(30)
|
||||||
fun getUcdPackages() {
|
fun getUcdPackages() {
|
||||||
ucdPackages.value = DPM.getUserControlDisabledPackages(DAR).map {
|
ucdPackages.value = DPM.getUserControlDisabledPackages(DAR).distinct().map {
|
||||||
getAppInfo(it)
|
getAppInfo(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
val mddPackages = MutableStateFlow(emptyList<AppInfo>())
|
val mddPackages = MutableStateFlow(emptyList<AppInfo>())
|
||||||
@RequiresApi(28)
|
@RequiresApi(28)
|
||||||
fun getMddPackages() {
|
fun getMddPackages() {
|
||||||
mddPackages.value = DPM.getMeteredDataDisabledPackages(DAR).map { getAppInfo(it) }
|
mddPackages.value = DPM.getMeteredDataDisabledPackages(DAR).distinct().map { getAppInfo(it) }
|
||||||
}
|
}
|
||||||
@RequiresApi(28)
|
@RequiresApi(28)
|
||||||
fun setPackageMdd(name: String, status: Boolean): Boolean {
|
fun setPackageMdd(name: String, status: Boolean): Boolean {
|
||||||
@@ -299,7 +299,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
val kuPackages = MutableStateFlow(emptyList<AppInfo>())
|
val kuPackages = MutableStateFlow(emptyList<AppInfo>())
|
||||||
@RequiresApi(28)
|
@RequiresApi(28)
|
||||||
fun getKuPackages() {
|
fun getKuPackages() {
|
||||||
kuPackages.value = DPM.getKeepUninstalledPackages(DAR)?.map { getAppInfo(it) } ?: emptyList()
|
kuPackages.value = DPM.getKeepUninstalledPackages(DAR)?.distinct()?.map { getAppInfo(it) } ?: emptyList()
|
||||||
}
|
}
|
||||||
@RequiresApi(28)
|
@RequiresApi(28)
|
||||||
fun setPackageKu(name: String, status: Boolean) {
|
fun setPackageKu(name: String, status: Boolean) {
|
||||||
@@ -327,7 +327,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
// Cross-profile widget providers
|
// Cross-profile widget providers
|
||||||
val cpwProviders = MutableStateFlow(emptyList<AppInfo>())
|
val cpwProviders = MutableStateFlow(emptyList<AppInfo>())
|
||||||
fun getCpwProviders() {
|
fun getCpwProviders() {
|
||||||
cpwProviders.value = DPM.getCrossProfileWidgetProviders(DAR).map { getAppInfo(it) }
|
cpwProviders.value = DPM.getCrossProfileWidgetProviders(DAR).distinct().map { getAppInfo(it) }
|
||||||
}
|
}
|
||||||
fun setCpwProvider(name: String, status: Boolean): Boolean {
|
fun setCpwProvider(name: String, status: Boolean): Boolean {
|
||||||
val result = if (status) {
|
val result = if (status) {
|
||||||
@@ -388,7 +388,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
@RequiresApi(34)
|
@RequiresApi(34)
|
||||||
fun getCmPolicy(): Int {
|
fun getCmPolicy(): Int {
|
||||||
return DPM.credentialManagerPolicy?.let { policy ->
|
return DPM.credentialManagerPolicy?.let { policy ->
|
||||||
cmPackages.value = policy.packageNames.map { getAppInfo(it) }
|
cmPackages.value = policy.packageNames.distinct().map { getAppInfo(it) }
|
||||||
policy.policyType
|
policy.policyType
|
||||||
} ?: -1
|
} ?: -1
|
||||||
}
|
}
|
||||||
@@ -409,7 +409,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
val pimPackages = MutableStateFlow(emptyList<AppInfo>())
|
val pimPackages = MutableStateFlow(emptyList<AppInfo>())
|
||||||
fun getPimPackages(): Boolean {
|
fun getPimPackages(): Boolean {
|
||||||
return DPM.getPermittedInputMethods(DAR).let { packages ->
|
return DPM.getPermittedInputMethods(DAR).let { packages ->
|
||||||
pimPackages.value = packages?.map { getAppInfo(it) } ?: emptyList()
|
pimPackages.value = packages?.distinct()?.map { getAppInfo(it) } ?: emptyList()
|
||||||
packages == null
|
packages == null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -429,7 +429,7 @@ class MyViewModel(application: Application): AndroidViewModel(application) {
|
|||||||
val pasPackages = MutableStateFlow(emptyList<AppInfo>())
|
val pasPackages = MutableStateFlow(emptyList<AppInfo>())
|
||||||
fun getPasPackages(): Boolean {
|
fun getPasPackages(): Boolean {
|
||||||
return DPM.getPermittedAccessibilityServices(DAR).let { packages ->
|
return DPM.getPermittedAccessibilityServices(DAR).let { packages ->
|
||||||
pasPackages.value = packages?.map { getAppInfo(it) } ?: emptyList()
|
pasPackages.value = packages?.distinct()?.map { getAppInfo(it) } ?: emptyList()
|
||||||
packages == null
|
packages == null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -763,6 +763,7 @@ fun PackageFunctionScreen(
|
|||||||
val groups by appGroups.collectAsStateWithLifecycle()
|
val groups by appGroups.collectAsStateWithLifecycle()
|
||||||
val packages by packagesState.collectAsStateWithLifecycle()
|
val packages by packagesState.collectAsStateWithLifecycle()
|
||||||
var packageName by rememberSaveable { mutableStateOf("") }
|
var packageName by rememberSaveable { mutableStateOf("") }
|
||||||
|
var dialog by remember { mutableStateOf(false) }
|
||||||
var selectedGroup by remember { mutableStateOf<AppGroup?>(null) }
|
var selectedGroup by remember { mutableStateOf<AppGroup?>(null) }
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
onGet()
|
onGet()
|
||||||
@@ -787,6 +788,7 @@ fun PackageFunctionScreen(
|
|||||||
{ Text("(${it.apps.size}) ${it.name}") },
|
{ Text("(${it.apps.size}) ${it.name}") },
|
||||||
{
|
{
|
||||||
selectedGroup = it
|
selectedGroup = it
|
||||||
|
dialog = true
|
||||||
expand = false
|
expand = false
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -821,7 +823,8 @@ fun PackageFunctionScreen(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Modifier.fillMaxWidth().padding(horizontal = HorizontalPadding).padding(bottom = 10.dp),
|
Modifier.fillMaxWidth().padding(horizontal = HorizontalPadding).padding(bottom = 10.dp),
|
||||||
packageName.isValidPackageName
|
packageName.isValidPackageName &&
|
||||||
|
packages.find { it.name == packageName } == null
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.add))
|
Text(stringResource(R.string.add))
|
||||||
}
|
}
|
||||||
@@ -830,14 +833,14 @@ fun PackageFunctionScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (selectedGroup != null) AlertDialog(
|
if (dialog) AlertDialog(
|
||||||
text = {
|
text = {
|
||||||
Column {
|
Column {
|
||||||
Button({
|
Button({
|
||||||
selectedGroup!!.apps.forEach {
|
selectedGroup!!.apps.forEach {
|
||||||
onSet(it, true)
|
onSet(it, true)
|
||||||
}
|
}
|
||||||
selectedGroup = null
|
dialog = false
|
||||||
}) {
|
}) {
|
||||||
Text(stringResource(R.string.add_to_list))
|
Text(stringResource(R.string.add_to_list))
|
||||||
}
|
}
|
||||||
@@ -845,18 +848,18 @@ fun PackageFunctionScreen(
|
|||||||
selectedGroup!!.apps.forEach {
|
selectedGroup!!.apps.forEach {
|
||||||
onSet(it, false)
|
onSet(it, false)
|
||||||
}
|
}
|
||||||
selectedGroup = null
|
dialog = false
|
||||||
}) {
|
}) {
|
||||||
Text(stringResource(R.string.remove_from_list))
|
Text(stringResource(R.string.remove_from_list))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
confirmButton = {
|
confirmButton = {
|
||||||
TextButton({ selectedGroup = null }) {
|
TextButton({ dialog = false }) {
|
||||||
Text(stringResource(R.string.cancel))
|
Text(stringResource(R.string.cancel))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onDismissRequest = { selectedGroup = null }
|
onDismissRequest = { dialog = false }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -969,7 +972,7 @@ fun EditAppGroupScreen(
|
|||||||
packageName = ""
|
packageName = ""
|
||||||
},
|
},
|
||||||
Modifier.fillMaxWidth().padding(horizontal = HorizontalPadding).padding(bottom = 10.dp),
|
Modifier.fillMaxWidth().padding(horizontal = HorizontalPadding).padding(bottom = 10.dp),
|
||||||
packageName.isValidPackageName
|
packageName.isValidPackageName && packageName !in list
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.add))
|
Text(stringResource(R.string.add))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user