fix: improve installed apps check

This commit is contained in:
Alberto Ponces
2022-08-25 00:51:47 +01:00
parent 56e85ca7cf
commit 9f82b9b275
10 changed files with 145 additions and 35 deletions

View File

@ -19,7 +19,7 @@ import 'package:stacked/stacked.dart';
@lazySingleton
class HomeViewModel extends BaseViewModel {
final ManagerAPI _managerAPI = ManagerAPI();
final ManagerAPI _managerAPI = locator<ManagerAPI>();
final PatcherAPI _patcherAPI = locator<PatcherAPI>();
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
@ -49,11 +49,10 @@ class HomeViewModel extends BaseViewModel {
}
Future<List<PatchedApplication>> getPatchedApps(bool isUpdatable) async {
await _managerAPI.reAssessSavedApps();
List<PatchedApplication> list = [];
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> patchedApps = prefs.getStringList('patchedApps') ?? [];
for (String str in patchedApps) {
PatchedApplication app = PatchedApplication.fromJson(json.decode(str));
List<PatchedApplication> patchedApps = _managerAPI.getPatchedApps();
for (PatchedApplication app in patchedApps) {
bool hasUpdates = await _managerAPI.hasAppUpdates(app.packageName);
if (hasUpdates == isUpdatable) {
list.add(app);

View File

@ -1,4 +1,3 @@
import 'dart:convert';
import 'package:device_apps/device_apps.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
@ -7,19 +6,20 @@ import 'package:flutter_i18n/flutter_i18n.dart';
import 'package:revanced_manager/app/app.locator.dart';
import 'package:revanced_manager/models/patch.dart';
import 'package:revanced_manager/models/patched_application.dart';
import 'package:revanced_manager/services/manager_api.dart';
import 'package:revanced_manager/services/patcher_api.dart';
import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:stacked/stacked.dart';
class InstallerViewModel extends BaseViewModel {
final ScrollController scrollController = ScrollController();
final ManagerAPI _managerAPI = locator<ManagerAPI>();
final PatcherAPI _patcherAPI = locator<PatcherAPI>();
final PatchedApplication? _app = locator<PatcherViewModel>().selectedApp;
final List<Patch> _patches = locator<PatcherViewModel>().selectedPatches;
static const _installerChannel = MethodChannel(
'app.revanced.manager/installer',
);
final ScrollController scrollController = ScrollController();
double? progress = 0.0;
String logs = '';
String headerLogs = '';
@ -148,10 +148,10 @@ class InstallerViewModel extends BaseViewModel {
);
isInstalled = await _patcherAPI.installPatchedFile(_app!);
if (isInstalled) {
update(1.0, 'Installed...', 'Installed');
update(1.0, 'Installed!', 'Installed');
_app!.patchDate = DateTime.now();
_app!.appliedPatches.addAll(_patches.map((p) => p.name).toList());
await saveApp();
_managerAPI.savePatchedApp(_app!);
} else {
update(1.0, 'Aborting...', 'An error occurred! Aborting');
}
@ -176,16 +176,4 @@ class InstallerViewModel extends BaseViewModel {
DeviceApps.openApp(_app!.packageName);
}
}
Future<void> saveApp() async {
if (_app != null) {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> patchedApps = prefs.getStringList('patchedApps') ?? [];
String appStr = json.encode(_app!.toJson());
patchedApps.removeWhere(
(a) => json.decode(a)['packageName'] == _app!.packageName);
patchedApps.add(appStr);
prefs.setStringList('patchedApps', patchedApps);
}
}
}

View File

@ -10,7 +10,7 @@ class AvailableUpdatesCard extends StatelessWidget {
Key? key,
}) : super(key: key);
final ManagerAPI _managerAPI = ManagerAPI();
final ManagerAPI _managerAPI = locator<ManagerAPI>();
@override
Widget build(BuildContext context) {

View File

@ -11,7 +11,7 @@ class InstalledAppsCard extends StatelessWidget {
Key? key,
}) : super(key: key);
final ManagerAPI _managerAPI = ManagerAPI();
final ManagerAPI _managerAPI = locator<ManagerAPI>();
@override
Widget build(BuildContext context) {