From 7471b6cab6d504b7d7302812fdf4bee2a581997b Mon Sep 17 00:00:00 2001 From: Artur Date: Mon, 22 Jun 2026 10:56:24 +0500 Subject: [PATCH] 22-06-2026+10-56 --- lib/logic/auth_provider.dart | 46 ++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/logic/auth_provider.dart b/lib/logic/auth_provider.dart index a8073e5..400a811 100644 --- a/lib/logic/auth_provider.dart +++ b/lib/logic/auth_provider.dart @@ -210,22 +210,44 @@ class AuthProvider extends ChangeNotifier { try { final dbFolder = await databaseFactory.getDatabasesPath(); final dbFile = File(p.join(dbFolder, 'chat_app.db')); - if (await dbFile.exists()) { - await dbFile.delete(); - print("БАЗА ДАННЫХ УСПЕШНО УНИЧТОЖЕНА В ЦЕЛЯХ БЕЗОПАСНОСТИ"); - } final journalFile = File(p.join(dbFolder, 'chat_app.db-journal')); - if (await journalFile.exists()) { - await journalFile.delete(); - } final walFile = File(p.join(dbFolder, 'chat_app.db-wal')); - if (await walFile.exists()) { - await walFile.delete(); - } final shmFile = File(p.join(dbFolder, 'chat_app.db-shm')); - if (await shmFile.exists()) { - await shmFile.delete(); + + // Даем операционной системе немного времени на освобождение дескрипторов после закрытия Drift + await Future.delayed(const Duration(milliseconds: 300)); + + Future safeDelete(File file) async { + if (await file.exists()) { + for (int i = 0; i < 5; i++) { + try { + await file.delete(); + print("Файл ${file.path} успешно удален"); + return; + } catch (e) { + if (i == 4) { + // Если не удалось за 5 попыток, пробуем через native deleteDatabase + try { + await databaseFactory.deleteDatabase(file.path); + print("Файл ${file.path} удален через databaseFactory"); + return; + } catch (ex) { + print("Не удалось удалить файл после 5 попыток: $ex"); + rethrow; + } + } + await Future.delayed(const Duration(milliseconds: 200)); + } + } + } } + + await safeDelete(dbFile); + await safeDelete(journalFile); + await safeDelete(walFile); + await safeDelete(shmFile); + + print("БАЗА ДАННЫХ УСПЕШНО УНИЧТОЖЕНА В ЦЕЛЯХ БЕЗОПАСНОСТИ"); } catch (e) { print("Ошибка удаления файлов БД: $e"); }