Skip to content

Commit c4888f5

Browse files
committed
Fix permissions view for xapk files
1 parent d880d9c commit c4888f5

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

lib/android/permissions.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
// All permissions available at https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/AndroidManifest.xml
22

3+
import 'dart:collection';
34
import 'package:fluent_ui/fluent_ui.dart';
45
import 'package:flutter/cupertino.dart';
56
import 'package:mdi/mdi.dart';
67
import 'package:wsa_pacman/utils/locale_utils.dart';
8+
import 'package:collection/collection.dart';
79

810
enum AndroidPermission {
911
NONE,
@@ -27,12 +29,16 @@ enum AndroidPermission {
2729

2830
extension AndroidPermissionList on AndroidPermission {
2931

30-
static AndroidPermission? get(String name) => _permissions[name];
31-
//AndroidPermission? operator [] (String name) => _permissions[name];
32-
int coso() {
33-
return 1;
32+
static Set<AndroidPermission> fromNames(Iterable<String> names) {
33+
final permissions = SplayTreeSet<AndroidPermission>((a,b)=> a.index - b.index)
34+
..addAll(names.map((perm) => AndroidPermissionList.get(perm)).whereNotNull());
35+
if (permissions.isEmpty) permissions.add(AndroidPermission.NONE);
36+
return permissions;
3437
}
3538

39+
static AndroidPermission? get(String name) => _permissions[name];
40+
41+
3642
Icon get icon {switch (this) {
3743
case AndroidPermission.NONE: return const Icon(Mdi.gitlab);
3844
case AndroidPermission.X_ADMIN_BRICK: return const Icon(Mdi.bugOutline);

lib/android/reader_xapk.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ class XapkReader extends IsolateRunner<String, APK_READER_FLAGS> {
158158
if (manifestFile == null) return;
159159
log("READING MANIFEST");
160160
final manifest = _decodeManifest(manifestFile.content as List<int>);
161-
Set<AndroidPermission> permissions = manifest.permissions.map((perm) => AndroidPermissionList.get(perm)).whereNotNull().toSet();
162-
if (permissions.isEmpty) permissions.add(AndroidPermission.NONE);
161+
final permissions = AndroidPermissionList.fromNames(manifest.permissions);
163162
updateManifest(manifest, permissions);
164163
String iconFile = manifest.icon.isNotEmpty ? manifest.icon : "icon.png";
165164
final icon = archive.findFile(iconFile);

0 commit comments

Comments
 (0)