Neeraj Gupta пре 1 година
родитељ
комит
5c9e879628
2 измењених фајлова са 15 додато и 2 уклоњено
  1. 5 2
      lib/services/authenticator_service.dart
  2. 10 0
      lib/store/code_store.dart

+ 5 - 2
lib/services/authenticator_service.dart

@@ -161,11 +161,11 @@ class AuthenticatorService {
     }
   }
 
-  Future<void> onlineSync() async {
+  Future<bool> onlineSync() async {
     try {
       if(getAccountMode().isOffline) {
         debugPrint("Skipping sync since account mode is offline");
-        return;
+        return false;
       }
       _logger.info("Sync");
       await _remoteToLocalSync();
@@ -173,6 +173,7 @@ class AuthenticatorService {
       await _localToRemoteSync();
       _logger.info("local push completed");
       Bus.instance.fire(CodesUpdatedEvent());
+      return true;
     } on UnauthorizedError {
       if ((await _db.removeSyncedData()) > 0) {
         Bus.instance.fire(CodesUpdatedEvent());
@@ -180,8 +181,10 @@ class AuthenticatorService {
       debugPrint("Firing logout event");
 
       Bus.instance.fire(TriggerLogoutEvent());
+      return false;
     } catch (e) {
       _logger.severe("Failed to sync with remote", e);
+      return false;
     }
   }
 

+ 10 - 0
lib/store/code_store.dart

@@ -9,6 +9,7 @@ import 'package:ente_auth/models/authenticator/entity_result.dart';
 import 'package:ente_auth/models/code.dart';
 import 'package:ente_auth/services/authenticator_service.dart';
 import 'package:ente_auth/store/offline_authenticator_db.dart';
+import 'package:flutter/foundation.dart';
 import 'package:logging/logging.dart';
 
 class CodeStore {
@@ -89,6 +90,7 @@ class CodeStore {
 
   Future<void> importOfflineCodes() async {
     try {
+      _logger.info('starting offline imports');
       Configuration config = Configuration.instance;
       // Account isn't configured yet, so we can't import offline codes
       if (!config.hasConfiguredAccount()) {
@@ -105,12 +107,20 @@ class CodeStore {
       }
       List<Code> offlineCodes =
       await CodeStore.instance.getAllCodes(accountMode: AccountMode.offline);
+      bool isOnlineSyncDone = await AuthenticatorService.instance.onlineSync();
+      if(!isOnlineSyncDone) {
+        debugPrint("Skipping offline import since online sync failed");
+        return;
+      }
       for (Code eachCode in offlineCodes) {
         await CodeStore.instance.addCode(
           eachCode,
           accountMode: AccountMode.online,
           shouldSync: false,
         );
+        await OfflineAuthenticatorDB.instance.deleteByIDs(
+          generatedIDs: [eachCode.generatedID!],
+        );
       }
       OfflineAuthenticatorDB.instance.clearTable();
       AuthenticatorService.instance.onlineSync().ignore();