From 187dc0e280bb9132fbb12a579182ad483f14afe7 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 3 Jun 2024 14:58:38 +0530 Subject: [PATCH] [Aegis Import]Import group as tags --- .../ui/settings/data/import/aegis_import.dart | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/auth/lib/ui/settings/data/import/aegis_import.dart b/auth/lib/ui/settings/data/import/aegis_import.dart index 03306bc1fa..6886cba3bc 100644 --- a/auth/lib/ui/settings/data/import/aegis_import.dart +++ b/auth/lib/ui/settings/data/import/aegis_import.dart @@ -6,6 +6,7 @@ import 'dart:typed_data'; import 'package:convert/convert.dart'; import 'package:ente_auth/l10n/l10n.dart'; import 'package:ente_auth/models/code.dart'; +import 'package:ente_auth/models/code_display.dart'; import 'package:ente_auth/services/authenticator_service.dart'; import 'package:ente_auth/store/code_store.dart'; import 'package:ente_auth/ui/common/progress_dialog.dart'; @@ -126,8 +127,18 @@ Future _processAegisExportFile( } else { aegisDB = decodedJson['db']; } + final Map groupIDToName = {}; + try { + for (var item in aegisDB?['groups']) { + groupIDToName[item['uuid']] = item['name']; + } + } catch (e) { + Logger("AegisImport").warning("Failed to parse groups", e); + } + final parsedCodes = []; for (var item in aegisDB?['entries']) { + List tags = []; var kind = item['type']; var account = item['name']; var issuer = item['issuer']; @@ -137,7 +148,11 @@ Future _processAegisExportFile( var digits = item['info']['digits']; var counter = item['info']['counter']; - + for (var group in item['groups']) { + if (groupIDToName.containsKey(group)) { + tags.add(groupIDToName[group]!); + } + } // Build the OTP URL String otpUrl; @@ -150,7 +165,10 @@ Future _processAegisExportFile( } else { throw Exception('Invalid OTP type: $kind'); } - parsedCodes.add(Code.fromOTPAuthUrl(otpUrl)); + + Code code = Code.fromOTPAuthUrl(otpUrl); + code = code.copyWith(display: CodeDisplay(tags: tags)); + parsedCodes.add(code); } for (final code in parsedCodes) {