Clean up EnteFile

This commit is contained in:
Neeraj Gupta
2025-08-07 15:45:55 +05:30
parent 5519981f9c
commit dd76317bb0
12 changed files with 24 additions and 27 deletions

View File

@@ -588,7 +588,6 @@ class FilesDB with SqlDbBase {
EnteFile _getFileFromRow(Map<String, dynamic> row) {
final file = EnteFile();
file.generatedID = row[columnGeneratedID];
file.localID = row[columnLocalID];
// file.uploadedFileID =
// row[columnUploadedFileID] == -1 ? null : row[columnUploadedFileID];
file.ownerID = row[columnOwnerID];

View File

@@ -3,7 +3,6 @@ import "dart:core";
import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:photos/core/constants.dart';
import "package:photos/models/api/diff/trash_time.dart";
import 'package:photos/models/file/file_type.dart';
import "package:photos/models/file/remote/asset.dart";
@@ -25,8 +24,6 @@ class EnteFile {
int? generatedID;
int? ownerID;
String? localID;
String? deviceFolder;
int? creationTime;
int? modificationTime;
@@ -34,14 +31,11 @@ class EnteFile {
late Location? location;
late FileType fileType;
// String? hash;
EnteFile();
static Future<EnteFile> fromAsset(String pathName, AssetEntity lAsset) async {
final EnteFile file = EnteFile();
file.lAsset = lAsset;
file.localID = lAsset.id;
file.deviceFolder = pathName;
file.location =
Location(latitude: lAsset.latitude, longitude: lAsset.longitude);
@@ -54,7 +48,6 @@ class EnteFile {
static EnteFile fromAssetSync(AssetEntity asset) {
final EnteFile file = EnteFile();
file.lAsset = asset;
file.localID = asset.id;
file.deviceFolder = asset.relativePath;
file.location =
Location(latitude: asset.latitude, longitude: asset.longitude);
@@ -82,6 +75,8 @@ class EnteFile {
return file;
}
String? get localID => lAsset?.id ?? sharedAsset?.id;
int get remoteID {
if (rAsset != null) {
return rAsset!.id;
@@ -159,8 +154,9 @@ class EnteFile {
return rAsset != null;
}
bool get isSharedMediaToAppSandbox {
return localID != null && localID!.startsWith(sharedMediaIdentifier);
// returns true if the file is only available in the app's sandbox
bool get isInAppMedia {
return sharedAsset != null;
}
bool get hasLocation {
@@ -223,7 +219,6 @@ class EnteFile {
..cf = cf
..generatedID = generatedID ?? this.generatedID
..ownerID = ownerID ?? this.ownerID
..localID = localID ?? this.localID
..deviceFolder = deviceFolder ?? this.deviceFolder
..creationTime = creationTime ?? this.creationTime
..modificationTime = modificationTime ?? this.modificationTime

View File

@@ -755,7 +755,7 @@ class FileUploader {
);
if (uploadMedia.isDeleted) {
_logger.info("File found to be deleted");
remoteFile.localID = null;
remoteFile.lAsset = null;
}
// await FilesDB.instance.update(remoteFile);
}
@@ -833,7 +833,7 @@ class FileUploader {
// Shared Media should only be cleared when the upload
// succeeds.
if ((Platform.isIOS && (uploadCompleted || uploadHardFailure)) ||
(uploadCompleted && file.isSharedMediaToAppSandbox)) {
(uploadCompleted && file.isInAppMedia)) {
await uploadMedia.delete();
}
}
@@ -857,7 +857,7 @@ class FileUploader {
final bool canIgnoreFile = file.localID != null &&
file.deviceFolder != null &&
file.title != null &&
!file.isSharedMediaToAppSandbox;
!file.isInAppMedia;
// If the file is not uploaded yet and either it can not be ignored or the
// err is related to live photo media, delete the local entry
final bool deleteEntry =

View File

@@ -20,7 +20,7 @@ Logger _logger = Logger("UploadMediaService");
const kMaximumThumbnailCompressionAttempts = 2;
Future<UploadMedia> getUploadMedia(EnteFile file) async {
if (file.isSharedMediaToAppSandbox) {
if (file.isInAppMedia) {
return _getUploadMediaFromSharedAsset(file);
}
return _getUploadMediaFromAsset(file);

View File

@@ -57,7 +57,7 @@ class PreUploadCheck {
);
}
final int userID = Configuration.instance.getUserID()!;
final bool isSandBoxFile = fileToUpload.isSharedMediaToAppSandbox;
final bool isSandBoxFile = fileToUpload.isInAppMedia;
final remoteIDs = await remoteDB.idsWithSameHashAndType(
uploadMedia.hash,
userID,

View File

@@ -138,7 +138,7 @@ class _VideoWidgetMediaKitState extends State<VideoWidgetMediaKit>
if (widget.file.isRemoteFile) {
_loadNetworkVideo();
_setFileSizeIfNull();
} else if (widget.file.isSharedMediaToAppSandbox) {
} else if (widget.file.isInAppMedia) {
final localFile = File(SharedAssetService.getPath(widget.file.localID!));
if (localFile.existsSync()) {
_setVideoController(localFile.path);

View File

@@ -177,7 +177,7 @@ class _VideoWidgetNativeState extends State<VideoWidgetNative>
if (widget.file.isRemoteFile) {
_loadNetworkVideo(update);
_setFileSizeIfNull();
} else if (widget.file.isSharedMediaToAppSandbox) {
} else if (widget.file.isInAppMedia) {
final localFile = File(SharedAssetService.getPath(widget.file.localID!));
if (localFile.existsSync()) {
_setFilePathForNativePlayer(localFile.path, update);

View File

@@ -9,6 +9,7 @@ import 'package:logging/logging.dart';
import 'package:photo_view/photo_view.dart';
import 'package:photos/core/constants.dart';
import 'package:photos/core/event_bus.dart';
import "package:photos/db/remote/table/mapping_table.dart";
import "package:photos/events/file_caption_updated_event.dart";
import "package:photos/events/files_updated_event.dart";
import 'package:photos/events/local_photos_updated_event.dart';
@@ -16,6 +17,7 @@ import "package:photos/events/reset_zoom_of_photo_view_event.dart";
import "package:photos/image/in_memory_image_cache.dart";
import "package:photos/models/file/extensions/file_props.dart";
import 'package:photos/models/file/file.dart';
import "package:photos/service_locator.dart";
import "package:photos/states/detail_page_state.dart";
import "package:photos/theme/colors.dart";
import "package:photos/theme/ente_theme.dart";
@@ -347,8 +349,9 @@ class _ZoomableImageState extends State<ZoomableImage> {
);
} else {
_logger.info("File was deleted " + _photo.toString());
if (_photo.isUploaded) {
_photo.localID = null;
if (_photo.isUploaded && _photo.lAsset != null) {
remoteDB.deleteMappingsForLocalIDs({_photo.lAsset!.id}).ignore();
_photo.lAsset = null;
// FilesDB.instance.update(_photo);
_loadNetworkImage();
} else {

View File

@@ -70,7 +70,7 @@ class _PreviewPropertiesItemWidgetState
}
if ((widget.file.fileType == FileType.video) &&
(widget.file.localID != null || widget.file.durationInSec != 0) &&
(widget.file.lAsset != null || widget.file.durationInSec != 0) &&
data.size != null) {
// show bitrate, i.e. size * 8 / duration formatted
final result = FFProbeProps.formatBitrate(

View File

@@ -51,7 +51,7 @@ Future<void> deleteFilesFromEverywhere(
if (!(await _localFileExist(file))) {
_logger.warning("Already deleted " + file.toString());
alreadyDeletedIDs.add(file.localID!);
} else if (file.isSharedMediaToAppSandbox) {
} else if (file.isInAppMedia) {
sharedAssetIDs.add(file.localID!);
} else {
localAssetIDs.add(file.localID!);
@@ -206,7 +206,7 @@ Future<void> deleteFilesOnDeviceOnly(
if (!(await _localFileExist(file))) {
_logger.warning("Already deleted " + file.toString());
alreadyDeletedIDs.add(file.localID!);
} else if (file.isSharedMediaToAppSandbox) {
} else if (file.isInAppMedia) {
localSharedMediaIDs.add(file.localID!);
} else {
localAssetIDs.add(file.localID!);
@@ -240,7 +240,7 @@ Future<void> deleteFilesOnDeviceOnly(
if (hasLocalOnlyFiles && localOnlyIDs.contains(file.localID)) {
await FilesDB.instance.deleteLocalFile(file);
} else {
file.localID = null;
file.lAsset = null;
throw Exception("pending rewrite change");
// await FilesDB.instance.update(file);
}
@@ -675,7 +675,7 @@ Future<void> _recursivelyReduceBatchSizeAndRetryDeletion({
}
Future<bool> _localFileExist(EnteFile file) async {
if (file.isSharedMediaToAppSandbox) {
if (file.isInAppMedia) {
final localFile = await SharedAssetService.getFile(file.localID!);
return localFile != null;
} else {

View File

@@ -70,7 +70,7 @@ Future<File?> _getLocalDiskFile(
bool liveVideo = false,
bool isOrigin = false,
}) {
if (file.isSharedMediaToAppSandbox) {
if (file.isInAppMedia) {
return SharedAssetService.getFile(file.localID!);
} else if (file.fileType == FileType.livePhoto && liveVideo) {
return Motionphoto.getLivePhotoFile(file.localID!);

View File

@@ -103,7 +103,7 @@ Future<Uint8List?> getThumbnailFromLocal(
if (lruCachedThumbnail != null) {
return lruCachedThumbnail;
}
if (file.isSharedMediaToAppSandbox) {
if (file.isInAppMedia) {
//todo:neeraj support specifying size/quality
return SharedAssetService.getThumbnail(
file.localID!,