22-06-2026+10-56

This commit is contained in:
Artur 2026-06-22 10:56:24 +05:00
parent 4141d6e5f7
commit 7471b6cab6
1 changed files with 34 additions and 12 deletions

View File

@ -210,22 +210,44 @@ class AuthProvider extends ChangeNotifier {
try { try {
final dbFolder = await databaseFactory.getDatabasesPath(); final dbFolder = await databaseFactory.getDatabasesPath();
final dbFile = File(p.join(dbFolder, 'chat_app.db')); 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')); 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')); 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')); 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<void> 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) { } catch (e) {
print("Ошибка удаления файлов БД: $e"); print("Ошибка удаления файлов БД: $e");
} }