diff --git a/lib/store/code_store.dart b/lib/store/code_store.dart index a20296c32..902ef8155 100644 --- a/lib/store/code_store.dart +++ b/lib/store/code_store.dart @@ -98,22 +98,37 @@ class CodeStore { } _logger.info('starting offline imports'); - List offlineCodes = - await CodeStore.instance.getAllCodes(accountMode: AccountMode.offline); - if(offlineCodes.isEmpty) { + List offlineCodes = await CodeStore.instance + .getAllCodes(accountMode: AccountMode.offline); + if (offlineCodes.isEmpty) { return; } bool isOnlineSyncDone = await AuthenticatorService.instance.onlineSync(); - if(!isOnlineSyncDone) { - debugPrint("Skipping offline import since online sync failed"); + if (!isOnlineSyncDone) { + _logger.info("Skipping offline import since online sync failed"); return; } + final List onlineCodes = + await CodeStore.instance.getAllCodes(accountMode: AccountMode.online); + _logger.info( + 'Starting import of ${offlineCodes.length} offline codes when online codes are ${onlineCodes.length}', + ); for (Code eachCode in offlineCodes) { - await CodeStore.instance.addCode( - eachCode, - accountMode: AccountMode.online, - shouldSync: false, + _logger + .info('importing offline code with genID ${eachCode.generatedID}'); + bool alreadyPresent = onlineCodes.any( + (oc) => + oc.issuer == eachCode.issuer && + oc.account == eachCode.account && + oc.secret == eachCode.secret, ); + if (!alreadyPresent) { + await CodeStore.instance.addCode( + eachCode, + accountMode: AccountMode.online, + shouldSync: false, + ); + } await OfflineAuthenticatorDB.instance.deleteByIDs( generatedIDs: [eachCode.generatedID!], ); diff --git a/lib/ui/home_page.dart b/lib/ui/home_page.dart index c6f3c73c9..e8f9305d0 100644 --- a/lib/ui/home_page.dart +++ b/lib/ui/home_page.dart @@ -66,10 +66,9 @@ class _HomePageState extends State { }); _initDeepLinks(); Future.delayed( - const Duration(seconds: 0), - () => CodeStore.instance.importOfflineCodes(), + const Duration(seconds: 1), + () async => await CodeStore.instance.importOfflineCodes(), ); - } void _loadCodes() { diff --git a/pubspec.yaml b/pubspec.yaml index 6eab8b01c..97df72e18 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: ente_auth description: ente two-factor authenticator -version: 1.0.57+57 +version: 1.0.58+58 publish_to: none environment: