diff --git a/auth/lib/models/code.dart b/auth/lib/models/code.dart index 0850c6e51..6f212d453 100644 --- a/auth/lib/models/code.dart +++ b/auth/lib/models/code.dart @@ -151,11 +151,12 @@ class Code { } String toExportFormat() { - return Uri.parse( - rawData + - "&codeDisplay=" + - jsonEncode((display ?? CodeDisplay()).toJson()), - ).toString(); + return jsonEncode( + Uri.parse( + "$rawData&codeDisplay=" + "${jsonEncode((display ?? CodeDisplay()).toJson())}", + ).toString(), + ); } static String _getIssuer(Uri uri) { diff --git a/auth/lib/store/code_store.dart b/auth/lib/store/code_store.dart index 22352bb90..e5b0d6d7b 100644 --- a/auth/lib/store/code_store.dart +++ b/auth/lib/store/code_store.dart @@ -29,18 +29,16 @@ class CodeStore { final List codes = []; for (final entity in entities) { try { - if (entity.rawData.startsWith('otpauth://')) { - final code = Code.fromOTPAuthUrl(entity.rawData); - code.generatedID = entity.generatedID; - code.hasSynced = entity.hasSynced; - codes.add(code); + final decodeJson = jsonDecode(entity.rawData); + late Code code; + if (decodeJson is String && decodeJson.startsWith('otpauth://')) { + code = Code.fromOTPAuthUrl(decodeJson); } else { - final decodeJson = jsonDecode(entity.rawData); - final code = Code.fromExportJson(decodeJson); - code.generatedID = entity.generatedID; - code.hasSynced = entity.hasSynced; - codes.add(code); + code = Code.fromExportJson(decodeJson); } + code.generatedID = entity.generatedID; + code.hasSynced = entity.hasSynced; + codes.add(code); } catch (e) { _logger.severe("Could not parse code", e); }