Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03af7030 authored by Joel Galenson's avatar Joel Galenson
Browse files

Do not reload Permissions Hub when going back.

To solve this, I moved the call to reload the data so it does not
happen when the Fragment is re-created.  Dimply doing this caused the
loader to re-report its results (making us redraw the screen anyway),
so I stopped the loader.  That required me to make a copy of its data.

Fixes: 129429535
Test: Open Permissions Hub, click something, go back, see no reload.
Test: Open permissions Hub, open filter by permission dialog, see all
groups.

Change-Id: I3510a90f5690f58b9ba18b41b6d13c4e172bed50
parent 15bf2f66
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -136,6 +136,10 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
        return mUsages;
    }

    public void stopLoader(@NonNull LoaderManager loaderManager) {
        loaderManager.destroyLoader(1);
    }

    public static @Nullable AppPermissionUsage.GroupUsage loadLastGroupUsage(
            @NonNull Context context, @NonNull AppPermissionGroup group) {
        if (!Utils.isPermissionsHubEnabled()) {
+10 −14
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
    private static final int MAXIMUM_NUM_BARS = 4;

    private @NonNull PermissionUsages mPermissionUsages;
    private @Nullable List<AppPermissionUsage> mAppPermissionUsages;

    private Collator mCollator;

@@ -192,6 +193,8 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
        mCollator = Collator.getInstance(
                context.getResources().getConfiguration().getLocales().get(0));
        mPermissionUsages = new PermissionUsages(context);

        reloadData();
    }

    @Override
@@ -199,13 +202,7 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
        super.onStart();
        getActivity().setTitle(R.string.permission_usage_title);

        if (mFinishedInitialLoad) {
            setProgressBarVisible(true);
        }

        hideHeader();

        reloadData();
    }

    /**
@@ -350,6 +347,7 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
        if (mPermissionUsages.getUsages().isEmpty()) {
            return;
        }
        mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());

        // Use the saved permission group or the one passed as an argument, if applicable.
        if (mSavedGroupName != null && mFilterGroup == null) {
@@ -368,9 +366,7 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
    }

    private void updateUI() {
        final List<AppPermissionUsage> appPermissionUsages =
                new ArrayList<>(mPermissionUsages.getUsages());
        if (appPermissionUsages.isEmpty() || getActivity() == null) {
        if (mAppPermissionUsages.isEmpty() || getActivity() == null) {
            return;
        }
        Context context = getActivity();
@@ -391,9 +387,9 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
        List<Pair<AppPermissionUsage, GroupUsage>> usages = new ArrayList<>();
        mGroupAppCounts = new ArrayMap<>();
        ArrayList<PermissionApp> permApps = new ArrayList<>();
        int numApps = appPermissionUsages.size();
        int numApps = mAppPermissionUsages.size();
        for (int appNum = 0; appNum < numApps; appNum++) {
            AppPermissionUsage appUsage = appPermissionUsages.get(appNum);
            AppPermissionUsage appUsage = mAppPermissionUsages.get(appNum);
            boolean used = false;
            List<GroupUsage> appGroups = appUsage.getGroupUsages();
            int numGroups = appGroups.size();
@@ -503,6 +499,7 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
            setLoading(false, true);
            mFinishedInitialLoad = true;
            setProgressBarVisible(false);
            mPermissionUsages.stopLoader(getActivity().getLoaderManager());
        }).execute(permApps.toArray(new PermissionApps.PermissionApp[permApps.size()]));
    }

@@ -786,10 +783,9 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader implements
    private @NonNull List<AppPermissionGroup> getOSPermissionGroups() {
        final List<AppPermissionGroup> groups = new ArrayList<>();
        final Set<String> seenGroups = new ArraySet<>();
        final List<AppPermissionUsage> appUsages = mPermissionUsages.getUsages();
        final int numGroups = appUsages.size();
        final int numGroups = mAppPermissionUsages.size();
        for (int i = 0; i < numGroups; i++) {
            final AppPermissionUsage appUsage = appUsages.get(i);
            final AppPermissionUsage appUsage = mAppPermissionUsages.get(i);
            final List<GroupUsage> groupUsages = appUsage.getGroupUsages();
            final int groupUsageCount = groupUsages.size();
            for (int j = 0; j < groupUsageCount; j++) {