fix: Unable to install application regardless of preference

Signed-off-by: validcube <pun.butrach@gmail.com>
This commit is contained in:
validcube 2024-07-29 23:47:48 +07:00
parent 63c6412736
commit c7627ced8e
No known key found for this signature in database
GPG key ID: DBA94253E1D3F267
3 changed files with 9 additions and 87 deletions

View file

@ -832,82 +832,4 @@ class ManagerAPI {
selectedPatchesFile.deleteSync(); selectedPatchesFile.deleteSync();
} }
} }
Future<bool> installTypeDialog(BuildContext context) async {
final ValueNotifier<int> installType = ValueNotifier(0);
if (isRooted) {
await showDialog(
context: context,
barrierDismissible: false,
builder: (context) => AlertDialog(
title: Text(t.installerView.installType),
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
icon: const Icon(Icons.file_download_outlined),
contentPadding: const EdgeInsets.symmetric(vertical: 16),
content: SingleChildScrollView(
child: ValueListenableBuilder(
valueListenable: installType,
builder: (context, value, child) {
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 10,
),
child: Text(
t.installerView.installTypeDescription,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Theme.of(context).colorScheme.secondary,
),
),
),
RadioListTile(
title: Text(t.installerView.installNonRootType),
contentPadding:
const EdgeInsets.symmetric(horizontal: 16),
value: 0,
groupValue: value,
onChanged: (selected) {
installType.value = selected!;
},
),
RadioListTile(
title: Text(t.installerView.installRootType),
contentPadding:
const EdgeInsets.symmetric(horizontal: 16),
value: 1,
groupValue: value,
onChanged: (selected) {
installType.value = selected!;
},
),
],
);
},
),
),
actions: [
OutlinedButton(
child: Text(t.cancelButton),
onPressed: () {
Navigator.of(context).pop();
},
),
FilledButton(
child: Text(t.installerView.installButton),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
);
}
return false;
}
} }

View file

@ -495,7 +495,7 @@ class InstallerViewModel extends BaseViewModel {
Future<void> installResult(BuildContext context, bool installAsRoot) async { Future<void> installResult(BuildContext context, bool installAsRoot) async {
isInstalling = true; isInstalling = true;
try { try {
_app.isRooted = await _managerAPI.installTypeDialog(context); _app.isRooted = installAsRoot;
if (headerLogs != 'Installing...') { if (headerLogs != 'Installing...') {
update( update(
.85, .85,
@ -512,7 +512,7 @@ class InstallerViewModel extends BaseViewModel {
// In case a patch changed the app name or package name, // In case a patch changed the app name or package name,
// update the app info. // update the app info.
final app = final app =
await DeviceApps.getAppFromStorage(_patcherAPI.outFile!.path); await DeviceApps.getAppFromStorage(_patcherAPI.outFile!.path);
if (app != null) { if (app != null) {
_app.name = app.appName; _app.name = app.appName;
_app.packageName = app.packageName; _app.packageName = app.packageName;

View file

@ -1,5 +1,6 @@
// ignore_for_file: use_build_context_synchronously // ignore_for_file: use_build_context_synchronously
import 'dart:math'; import 'dart:math';
import 'package:device_apps/device_apps.dart'; import 'package:device_apps/device_apps.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -11,6 +12,7 @@ import 'package:revanced_manager/services/patcher_api.dart';
import 'package:revanced_manager/services/root_api.dart'; import 'package:revanced_manager/services/root_api.dart';
import 'package:revanced_manager/services/toast.dart'; import 'package:revanced_manager/services/toast.dart';
import 'package:revanced_manager/ui/views/home/home_viewmodel.dart'; import 'package:revanced_manager/ui/views/home/home_viewmodel.dart';
import 'package:revanced_manager/ui/views/installer/installer_viewmodel.dart';
import 'package:revanced_manager/ui/views/navigation/navigation_viewmodel.dart'; import 'package:revanced_manager/ui/views/navigation/navigation_viewmodel.dart';
import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart'; import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart';
import 'package:stacked/stacked.dart'; import 'package:stacked/stacked.dart';
@ -25,11 +27,7 @@ class AppInfoViewModel extends BaseViewModel {
BuildContext context, BuildContext context,
PatchedApplication app, PatchedApplication app,
) async { ) async {
app.isRooted = await _managerAPI.installTypeDialog(context); locator<InstallerViewModel>().installTypeDialog(context);
final int statusCode = await _patcherAPI.installPatchedFile(context, app);
if (statusCode == 0) {
locator<HomeViewModel>().initialize(context);
}
} }
Future<void> exportApp( Future<void> exportApp(
@ -152,7 +150,7 @@ class AppInfoViewModel extends BaseViewModel {
backgroundColor: Theme.of(context).colorScheme.secondaryContainer, backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
content: Text(t.appInfoView.removeAppDialogText), content: Text(t.appInfoView.removeAppDialogText),
actions: <Widget>[ actions: <Widget>[
OutlinedButton( TextButton(
child: Text(t.cancelButton), child: Text(t.cancelButton),
onPressed: () => Navigator.of(context).pop(), onPressed: () => Navigator.of(context).pop(),
), ),
@ -160,7 +158,9 @@ class AppInfoViewModel extends BaseViewModel {
child: Text(t.okButton), child: Text(t.okButton),
onPressed: () => { onPressed: () => {
_managerAPI.deleteLastPatchedApp(), _managerAPI.deleteLastPatchedApp(),
Navigator.of(context)..pop()..pop(), Navigator.of(context)
..pop()
..pop(),
locator<HomeViewModel>().initialize(context), locator<HomeViewModel>().initialize(context),
}, },
), ),