diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart index ff6d4a8c0..1add432d2 100644 --- a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart @@ -35,6 +35,12 @@ Future flutterMatrixSdkDatabaseBuilder(Client client) async { ), ); + // Delete database file: + if (database == null && !kIsWeb) { + final dbFile = File(await _getDatabasePath(client.clientName)); + if (await dbFile.exists()) await dbFile.delete(); + } + try { // Send error notification: final l10n = lookupL10n(PlatformDispatcher.instance.locale); @@ -61,9 +67,6 @@ Future _constructDatabase(Client client) async { final cipher = await getDatabaseCipher(); - final databaseDirectory = PlatformInfos.isIOS || PlatformInfos.isMacOS - ? await getLibraryDirectory() - : await getApplicationSupportDirectory(); Directory? fileStorageLocation; try { fileStorageLocation = await getTemporaryDirectory(); @@ -73,7 +76,7 @@ Future _constructDatabase(Client client) async { ); } - final path = join(databaseDirectory.path, '${client.clientName}.sqlite'); + final path = await _getDatabasePath(client.clientName); // fix dlopen for old Android await applyWorkaroundToOpenSqlCipherOnOldAndroidVersions(); @@ -118,6 +121,14 @@ Future _constructDatabase(Client client) async { ); } +Future _getDatabasePath(String clientName) async { + final databaseDirectory = PlatformInfos.isIOS || PlatformInfos.isMacOS + ? await getLibraryDirectory() + : await getApplicationSupportDirectory(); + + return join(databaseDirectory.path, '$clientName.sqlite'); +} + Future _migrateLegacyLocation( String sqlFilePath, String clientName,