Confirmation box for link-based imports (#1232)

This commit is contained in:
Imran Remtulla
2024-01-03 19:03:05 -05:00
parent 7ccd08ee2b
commit 1b538931b1

View File

@@ -5,6 +5,7 @@ import 'package:app_links/app_links.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:obtainium/components/generated_form_modal.dart';
import 'package:obtainium/custom_errors.dart'; import 'package:obtainium/custom_errors.dart';
import 'package:obtainium/pages/add_app.dart'; import 'package:obtainium/pages/add_app.dart';
import 'package:obtainium/pages/apps.dart'; import 'package:obtainium/pages/apps.dart';
@@ -76,14 +77,39 @@ class _HomePageState extends State<HomePage> {
try { try {
if (action == 'add') { if (action == 'add') {
await goToAddApp(data); await goToAddApp(data);
} else if (action == 'app') { } else if (action == 'app' || action == 'apps') {
await context var dataStr = Uri.decodeComponent(data);
.read<AppsProvider>() if (await showDialog(
.import('{ "apps": [${Uri.decodeComponent(data)}] }'); context: context,
} else if (action == 'apps') { builder: (BuildContext ctx) {
await context return GeneratedFormModal(
.read<AppsProvider>() title: tr('importX', args: [
.import('{ "apps": ${Uri.decodeComponent(data)} }'); action == 'app' ? tr('app') : tr('appsString')
]),
items: const [],
additionalWidgets: [
ExpansionTile(
title: const Text('Raw JSON'),
children: [
Text(
dataStr,
style: const TextStyle(fontFamily: 'monospace'),
)
],
)
],
);
}) !=
null) {
// ignore: use_build_context_synchronously
var result = await context.read<AppsProvider>().import(
action == 'app'
? '{ "apps": [$dataStr] }'
: '{ "apps": $dataStr }');
// ignore: use_build_context_synchronously
showMessage(
tr('importedX', args: [plural('apps', result.key)]), context);
}
} else { } else {
throw ObtainiumError(tr('unknown')); throw ObtainiumError(tr('unknown'));
} }