Merge pull request #383 from ente-io/fix_sharing_to_ente
Fix share to ente upload
This commit is contained in:
commit
918540b775
|
@ -76,7 +76,12 @@ class Configuration {
|
|||
FlutterSecureStorage _secureStorage;
|
||||
String _tempDirectory;
|
||||
String _thumbnailCacheDirectory;
|
||||
String _sharedMediaDirectory;
|
||||
// 6th July 22: Remove this after 3 months. Hopefully, active users
|
||||
// will migrate to newer version of the app, where shared media is stored
|
||||
// on appSupport directory which OS won't clean up automatically
|
||||
String _sharedTempMediaDirectory;
|
||||
|
||||
String _sharedDocumentsMediaDirectory;
|
||||
String _volatilePassword;
|
||||
|
||||
final _secureStorageOptionsIOS =
|
||||
|
@ -106,8 +111,10 @@ class Configuration {
|
|||
var tempDirectoryPath = (await getTemporaryDirectory()).path;
|
||||
_thumbnailCacheDirectory = tempDirectoryPath + "/thumbnail-cache";
|
||||
io.Directory(_thumbnailCacheDirectory).createSync(recursive: true);
|
||||
_sharedMediaDirectory = tempDirectoryPath + "/ente-shared-media";
|
||||
io.Directory(_sharedMediaDirectory).createSync(recursive: true);
|
||||
_sharedTempMediaDirectory = tempDirectoryPath + "/ente-shared-media";
|
||||
io.Directory(_sharedTempMediaDirectory).createSync(recursive: true);
|
||||
_sharedDocumentsMediaDirectory = _documentsDirectory + "/ente-shared-media";
|
||||
io.Directory(_sharedDocumentsMediaDirectory).createSync(recursive: true);
|
||||
if (!_preferences.containsKey(tokenKey)) {
|
||||
await _secureStorage.deleteAll(iOptions: _secureStorageOptionsIOS);
|
||||
} else {
|
||||
|
@ -470,8 +477,12 @@ class Configuration {
|
|||
return _thumbnailCacheDirectory;
|
||||
}
|
||||
|
||||
String getSharedMediaCacheDirectory() {
|
||||
return _sharedMediaDirectory;
|
||||
String getOldSharedMediaCacheDirectory() {
|
||||
return _sharedTempMediaDirectory;
|
||||
}
|
||||
|
||||
String getSharedMediaDirectory() {
|
||||
return _sharedDocumentsMediaDirectory;
|
||||
}
|
||||
|
||||
bool hasConfiguredAccount() {
|
||||
|
|
|
@ -15,7 +15,9 @@ const int kGalleryLoadStartTime = -8000000000000000; // Wednesday, March 6, 1748
|
|||
const int kGalleryLoadEndTime = 9223372036854775807; // 2^63 -1
|
||||
|
||||
// used to identify which ente file are available in app cache
|
||||
const String kSharedMediaIdentifier = 'ente-shared://';
|
||||
// todo: 6Jun22: delete old media identifier after 3 months
|
||||
const String kOldSharedMediaIdentifier = 'ente-shared://';
|
||||
const String kSharedMediaIdentifier = 'ente-shared-media://';
|
||||
|
||||
const int kMaxLivePhotoToastCount = 2;
|
||||
const String kLivePhotoToastCounterKey = "show_live_photo_toast";
|
||||
|
|
|
@ -222,7 +222,9 @@ class File {
|
|||
}
|
||||
|
||||
bool isSharedMediaToAppSandbox() {
|
||||
return localID != null && localID.startsWith(kSharedMediaIdentifier);
|
||||
return localID != null &&
|
||||
(localID.startsWith(kOldSharedMediaIdentifier) ||
|
||||
localID.startsWith(kSharedMediaIdentifier));
|
||||
}
|
||||
|
||||
bool hasLocation() {
|
||||
|
|
|
@ -7,7 +7,6 @@ import 'package:device_info/device_info.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:photo_manager/photo_manager.dart';
|
||||
import 'package:photos/core/configuration.dart';
|
||||
import 'package:photos/core/constants.dart';
|
||||
import 'package:photos/core/event_bus.dart';
|
||||
import 'package:photos/db/files_db.dart';
|
||||
|
@ -309,7 +308,8 @@ Future<bool> deleteLocalFiles(
|
|||
final List<String> localAssetIDs = [];
|
||||
final List<String> localSharedMediaIDs = [];
|
||||
for (String id in localIDs) {
|
||||
if (id.startsWith(kSharedMediaIdentifier)) {
|
||||
if (id.startsWith(kOldSharedMediaIdentifier) ||
|
||||
id.startsWith(kSharedMediaIdentifier)) {
|
||||
localSharedMediaIDs.add(id);
|
||||
} else {
|
||||
localAssetIDs.add(id);
|
||||
|
@ -434,9 +434,7 @@ Future<List<String>> _tryDeleteSharedMediaFiles(List<String> localIDs) {
|
|||
final List<String> actuallyDeletedIDs = [];
|
||||
try {
|
||||
return Future.forEach(localIDs, (id) async {
|
||||
String localPath = Configuration.instance.getSharedMediaCacheDirectory() +
|
||||
"/" +
|
||||
id.replaceAll(kSharedMediaIdentifier, '');
|
||||
String localPath = getSharedMediaPathFromLocalID(id);
|
||||
try {
|
||||
// verify the file exists as the OS may have already deleted it from cache
|
||||
if (io.File(localPath).existsSync()) {
|
||||
|
|
|
@ -344,6 +344,7 @@ class FileUploader {
|
|||
(_isBackground ? "_bg" : "") +
|
||||
".encrypted";
|
||||
MediaUploadData mediaUploadData;
|
||||
var uploadCompleted = false;
|
||||
|
||||
try {
|
||||
_logger.info(
|
||||
|
@ -463,6 +464,7 @@ class FileUploader {
|
|||
Bus.instance.fire(LocalPhotosUpdatedEvent([remoteFile]));
|
||||
}
|
||||
_logger.info("File upload complete for " + remoteFile.toString());
|
||||
uploadCompleted = true;
|
||||
return remoteFile;
|
||||
} catch (e, s) {
|
||||
if (!(e is NoActiveSubscriptionError ||
|
||||
|
@ -474,10 +476,14 @@ class FileUploader {
|
|||
}
|
||||
rethrow;
|
||||
} finally {
|
||||
if (io.Platform.isIOS &&
|
||||
mediaUploadData != null &&
|
||||
mediaUploadData.sourceFile != null) {
|
||||
await mediaUploadData.sourceFile.delete();
|
||||
if (mediaUploadData != null && mediaUploadData.sourceFile != null) {
|
||||
// delete the file from app's internal cache if it was copied to app
|
||||
// for upload. Shared Media should only be cleared when the upload
|
||||
// succeeds.
|
||||
if (io.Platform.isIOS ||
|
||||
(uploadCompleted && file.isSharedMediaToAppSandbox())) {
|
||||
await mediaUploadData.sourceFile.delete();
|
||||
}
|
||||
}
|
||||
if (io.File(encryptedFilePath).existsSync()) {
|
||||
await io.File(encryptedFilePath).delete();
|
||||
|
|
|
@ -86,9 +86,19 @@ Future<io.File> _getLocalDiskFile(
|
|||
}
|
||||
|
||||
String getSharedMediaFilePath(ente.File file) {
|
||||
return Configuration.instance.getSharedMediaCacheDirectory() +
|
||||
"/" +
|
||||
file.localID.replaceAll(kSharedMediaIdentifier, '');
|
||||
return getSharedMediaPathFromLocalID(file.localID);
|
||||
}
|
||||
|
||||
String getSharedMediaPathFromLocalID(String localID) {
|
||||
if (localID.startsWith(kOldSharedMediaIdentifier)) {
|
||||
return Configuration.instance.getOldSharedMediaCacheDirectory() +
|
||||
"/" +
|
||||
localID.replaceAll(kOldSharedMediaIdentifier, '');
|
||||
} else {
|
||||
return Configuration.instance.getSharedMediaDirectory() +
|
||||
"/" +
|
||||
localID.replaceAll(kSharedMediaIdentifier, '');
|
||||
}
|
||||
}
|
||||
|
||||
void preloadThumbnail(ente.File file) {
|
||||
|
|
|
@ -79,9 +79,7 @@ Future<List<File>> convertIncomingSharedMediaToFile(
|
|||
enteFile.title = basename(media.path);
|
||||
var ioFile = dartio.File(media.path);
|
||||
ioFile = ioFile.renameSync(
|
||||
Configuration.instance.getSharedMediaCacheDirectory() +
|
||||
"/" +
|
||||
enteFile.title,
|
||||
Configuration.instance.getSharedMediaDirectory() + "/" + enteFile.title,
|
||||
);
|
||||
enteFile.localID = kSharedMediaIdentifier + enteFile.title;
|
||||
enteFile.collectionID = collectionID;
|
||||
|
|
Loading…
Reference in a new issue