|
@@ -10,6 +10,7 @@ import 'package:dio/dio.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:logging/logging.dart';
|
|
import 'package:logging/logging.dart';
|
|
import 'package:photos/core/configuration.dart';
|
|
import 'package:photos/core/configuration.dart';
|
|
|
|
+import "package:photos/core/constants.dart";
|
|
import 'package:photos/core/errors.dart';
|
|
import 'package:photos/core/errors.dart';
|
|
import 'package:photos/core/event_bus.dart';
|
|
import 'package:photos/core/event_bus.dart';
|
|
import 'package:photos/core/network/network.dart';
|
|
import 'package:photos/core/network/network.dart';
|
|
@@ -34,6 +35,7 @@ import "package:photos/services/user_service.dart";
|
|
import 'package:photos/utils/crypto_util.dart';
|
|
import 'package:photos/utils/crypto_util.dart';
|
|
import 'package:photos/utils/file_download_util.dart';
|
|
import 'package:photos/utils/file_download_util.dart';
|
|
import 'package:photos/utils/file_uploader_util.dart';
|
|
import 'package:photos/utils/file_uploader_util.dart';
|
|
|
|
+import "package:photos/utils/file_util.dart";
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:tuple/tuple.dart';
|
|
import 'package:tuple/tuple.dart';
|
|
import "package:uuid/uuid.dart";
|
|
import "package:uuid/uuid.dart";
|
|
@@ -307,12 +309,36 @@ class FileUploader {
|
|
return file.path.contains(kUploadTempPrefix) &&
|
|
return file.path.contains(kUploadTempPrefix) &&
|
|
file.path.contains(".encrypted");
|
|
file.path.contains(".encrypted");
|
|
});
|
|
});
|
|
- if (filesToDelete.isEmpty) {
|
|
|
|
- return;
|
|
|
|
|
|
+ if (filesToDelete.isNotEmpty) {
|
|
|
|
+ _logger.info('cleaning up state files ${filesToDelete.length}');
|
|
|
|
+ for (final file in filesToDelete) {
|
|
|
|
+ await file.delete();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- _logger.info('cleaning up state files ${filesToDelete.length}');
|
|
|
|
- for (final file in filesToDelete) {
|
|
|
|
- await file.delete();
|
|
|
|
|
|
+
|
|
|
|
+ if (Platform.isAndroid) {
|
|
|
|
+ final sharedMediaDir =
|
|
|
|
+ Configuration.instance.getSharedMediaDirectory() + "/";
|
|
|
|
+ final sharedFiles = await Directory(sharedMediaDir).list().toList();
|
|
|
|
+ if (sharedFiles.isNotEmpty) {
|
|
|
|
+ _logger.info('Shared media directory cleanup ${sharedFiles.length}');
|
|
|
|
+ final int ownerID = Configuration.instance.getUserID()!;
|
|
|
|
+ final existingLocalFileIDs =
|
|
|
|
+ await FilesDB.instance.getExistingLocalFileIDs(ownerID);
|
|
|
|
+ final Set<String> trackedSharedFilePaths = {};
|
|
|
|
+ for (String localID in existingLocalFileIDs) {
|
|
|
|
+ if (localID.contains(sharedMediaIdentifier)) {
|
|
|
|
+ trackedSharedFilePaths
|
|
|
|
+ .add(getSharedMediaPathFromLocalID(localID));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (final file in sharedFiles) {
|
|
|
|
+ if (!trackedSharedFilePaths.contains(file.path)) {
|
|
|
|
+ _logger.info('Deleting stale shared media file ${file.path}');
|
|
|
|
+ await file.delete();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} catch (e, s) {
|
|
} catch (e, s) {
|
|
_logger.severe("Failed to remove stale files", e, s);
|
|
_logger.severe("Failed to remove stale files", e, s);
|