Skip to content

Commit

Permalink
Aegis import UI implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
GleammerRay committed Mar 13, 2024
1 parent 3a01e69 commit 8571143
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 4 deletions.
3 changes: 2 additions & 1 deletion lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -344,5 +344,6 @@
"createTag": "Create tag",
"create": "Create",
"tag": "Tag",
"noTags": "No tags"
"noTags": "No tags",
"aegisImport": "Aegis import"
}
41 changes: 38 additions & 3 deletions lib/screens/confirm_import_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import 'log_screen.dart';
enum ImportType {
passy,
kdbx,
aegis,
}

class ConfirmImportScreenArgs {
Expand Down Expand Up @@ -77,11 +78,35 @@ class _ConfirmImportScreen extends State<ConfirmImportScreen> {
icon: const Icon(Icons.check, color: PassyTheme.darkContentColor),
);
break;
case ImportType.aegis:
File file = File(args.path);
await _account.importAegis(
aegisFile: file, password: value.isEmpty ? null : value);
Navigator.popUntil(context,
(route) => route.settings.name == ImportScreen.routeName);
showSnackBar(
message: localizations.imported,
icon: const Icon(Icons.check, color: PassyTheme.darkContentColor),
);
break;
}
} catch (e, s) {
await Future.delayed(const Duration(milliseconds: 200));
if (!mounted) return;
Navigator.pop(context);
if (e.runtimeType.toString() == 'InvalidCipherTextException') {
showSnackBar(
message: localizations.incorrectPassword,
icon: const Icon(Icons.download_for_offline_outlined,
color: PassyTheme.darkContentColor),
action: SnackBarAction(
label: localizations.details,
onPressed: () => Navigator.pushNamed(context, LogScreen.routeName,
arguments: e.toString() + '\n' + s.toString()),
),
);
return;
}
showSnackBar(
message: localizations.couldNotImportAccount,
icon: const Icon(Icons.download_for_offline_outlined,
Expand All @@ -99,10 +124,20 @@ class _ConfirmImportScreen extends State<ConfirmImportScreen> {
Widget build(BuildContext context) {
ConfirmImportScreenArgs args =
ModalRoute.of(context)!.settings.arguments as ConfirmImportScreenArgs;
String title;
switch (args.importType) {
case ImportType.passy:
title = localizations.passyImport;
break;
case ImportType.kdbx:
title = localizations.kdbxImport;
break;
case ImportType.aegis:
title = localizations.aegisImport;
break;
}
return ConfirmStringScaffold(
title: Text(args.importType == ImportType.passy
? localizations.passyImport
: localizations.kdbxImport),
title: Text(title),
message: PassyPadding(Text.rich(
TextSpan(
text: localizations.confirmImport1,
Expand Down
35 changes: 35 additions & 0 deletions lib/screens/import_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,32 @@ class _ImportScreen extends State<ImportScreen> {
);
}

void _onAegisImportPressed() {
MainScreen.shouldLockScreen = false;
FilePicker.platform
.pickFiles(
dialogTitle: localizations.aegisImport,
type: Platform.isAndroid ? FileType.any : FileType.custom,
allowedExtensions: Platform.isAndroid ? null : ['json'],
lockParentWindow: true,
)
.then(
(_pick) {
Future.delayed(const Duration(seconds: 2))
.then((value) => MainScreen.shouldLockScreen = true);
if (_pick == null) return;
Navigator.pushNamed(
context,
ConfirmImportScreen.routeName,
arguments: ConfirmImportScreenArgs(
path: _pick.files[0].path!,
importType: ImportType.aegis,
),
);
},
);
}

@override
Widget build(BuildContext context) {
return Scaffold(
Expand Down Expand Up @@ -108,6 +134,15 @@ class _ImportScreen extends State<ImportScreen> {
right: const Icon(Icons.arrow_forward_ios_rounded),
onPressed: _onKdbxImportPressed,
)),
PassyPadding(ThreeWidgetButton(
center: Text(localizations.aegisImport),
left: const Padding(
padding: EdgeInsets.only(right: 30),
child: Icon(Icons.security),
),
right: const Icon(Icons.arrow_forward_ios_rounded),
onPressed: _onAegisImportPressed,
)),
PassyPadding(ThreeWidgetButton(
center: Text(localizations.passyImport),
left: Padding(
Expand Down

0 comments on commit 8571143

Please sign in to comment.