Merge branch 'main' into uncategorised
This commit is contained in:
commit
dbc2ab334b
|
@ -134,10 +134,20 @@ export default function Gallery() {
|
|||
const [files, setFilesOriginal] = useState<EnteFile[]>(null);
|
||||
|
||||
const filesUpdateInProgress = useRef(false);
|
||||
const filesCount = useRef(0);
|
||||
const newerFilesFN = useRef<FilesFn>(null);
|
||||
|
||||
const setFilesOriginalWithReSyncIfRequired: SetFiles = (filesFn) => {
|
||||
setFilesOriginal(filesFn);
|
||||
setFilesOriginal((currentFiles) => {
|
||||
let newFiles: EnteFile[];
|
||||
if (typeof filesFn === 'function') {
|
||||
newFiles = filesFn(currentFiles);
|
||||
} else {
|
||||
newFiles = filesFn;
|
||||
}
|
||||
filesCount.current = newFiles?.length;
|
||||
return newFiles;
|
||||
});
|
||||
filesUpdateInProgress.current = false;
|
||||
if (newerFilesFN.current) {
|
||||
const newerFiles = newerFilesFN.current;
|
||||
|
@ -153,7 +163,7 @@ export default function Gallery() {
|
|||
}
|
||||
filesUpdateInProgress.current = true;
|
||||
|
||||
if (!files?.length || files.length < 5000) {
|
||||
if (!filesCount.current || filesCount.current < 5000) {
|
||||
setFilesOriginalWithReSyncIfRequired(filesFn);
|
||||
} else {
|
||||
const waitTime = getData(LS_KEYS.WAIT_TIME) ?? 5000;
|
||||
|
@ -542,6 +552,7 @@ export default function Gallery() {
|
|||
});
|
||||
} finally {
|
||||
await syncWithRemote(false, true);
|
||||
setDeletedFileIds(new Set());
|
||||
finishLoading();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -63,6 +63,17 @@ const ENDPOINT = getEndpoint();
|
|||
const COLLECTION_TABLE = 'collections';
|
||||
const COLLECTION_UPDATION_TIME = 'collection-updation-time';
|
||||
|
||||
export const getCollectionLastSyncTime = async (collection: Collection) =>
|
||||
(await localForage.getItem<number>(`${collection.id}-time`)) ?? 0;
|
||||
|
||||
export const setCollectionLastSyncTime = async (
|
||||
collection: Collection,
|
||||
time: number
|
||||
) => await localForage.setItem<number>(`${collection.id}-time`, time);
|
||||
|
||||
export const removeCollectionLastSyncTime = async (collection: Collection) =>
|
||||
await localForage.removeItem(`${collection.id}-time`);
|
||||
|
||||
const getCollectionWithSecrets = async (
|
||||
collection: EncryptedCollection,
|
||||
masterKey: string
|
||||
|
@ -200,6 +211,8 @@ export const syncCollections = async () => {
|
|||
if (!collection.isDeleted) {
|
||||
collections.push(collection);
|
||||
updationTime = Math.max(updationTime, collection.updationTime);
|
||||
} else {
|
||||
removeCollectionLastSyncTime(collection);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { ElectronAPIs } from 'types/electron';
|
||||
import { ElectronFile } from 'types/upload';
|
||||
import { CustomError } from 'utils/error';
|
||||
import { convertBytesToHumanReadable } from 'utils/file/size';
|
||||
import { addLogLine } from 'utils/logging';
|
||||
import { logError } from 'utils/sentry';
|
||||
|
@ -37,7 +38,12 @@ class ElectronImageProcessorService {
|
|||
);
|
||||
return new Blob([convertedFileData]);
|
||||
} catch (e) {
|
||||
logError(e, 'failed to convert heic natively');
|
||||
if (
|
||||
e.message !==
|
||||
CustomError.WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED
|
||||
) {
|
||||
logError(e, 'failed to convert heic natively');
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +74,12 @@ class ElectronImageProcessorService {
|
|||
);
|
||||
return thumb;
|
||||
} catch (e) {
|
||||
logError(e, 'failed to generate image thumbnail natively');
|
||||
if (
|
||||
e.message !==
|
||||
CustomError.WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED
|
||||
) {
|
||||
logError(e, 'failed to generate image thumbnail natively');
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,10 @@ import { addLogLine } from 'utils/logging';
|
|||
import { isCollectionHidden } from 'utils/collection';
|
||||
import { CustomError } from 'utils/error';
|
||||
import ComlinkCryptoWorker from 'utils/comlink/ComlinkCryptoWorker';
|
||||
import {
|
||||
getCollectionLastSyncTime,
|
||||
setCollectionLastSyncTime,
|
||||
} from './collectionService';
|
||||
|
||||
const ENDPOINT = getEndpoint();
|
||||
const FILES_TABLE = 'files';
|
||||
|
@ -47,9 +51,6 @@ const setLocalFiles = async (files: EnteFile[]) => {
|
|||
}
|
||||
};
|
||||
|
||||
const getCollectionLastSyncTime = async (collection: Collection) =>
|
||||
(await localForage.getItem<number>(`${collection.id}-time`)) ?? 0;
|
||||
|
||||
export const syncFiles = async (
|
||||
collections: Collection[],
|
||||
setFiles: SetFiles
|
||||
|
@ -93,10 +94,7 @@ export const syncFiles = async (
|
|||
files.push(file);
|
||||
}
|
||||
await setLocalFiles(files);
|
||||
await localForage.setItem(
|
||||
`${collection.id}-time`,
|
||||
collection.updationTime
|
||||
);
|
||||
setCollectionLastSyncTime(collection, collection.updationTime);
|
||||
setFiles(preservePhotoswipeProps([...sortFiles(mergeMetadata(files))]));
|
||||
}
|
||||
return sortFiles(mergeMetadata(files));
|
||||
|
|
|
@ -88,13 +88,6 @@ async function generateImageThumbnail(
|
|||
MAX_THUMBNAIL_SIZE
|
||||
);
|
||||
} catch (e) {
|
||||
logError(
|
||||
e,
|
||||
'Error generating thumbnail using electron image processor',
|
||||
{
|
||||
fileFormat: fileTypeInfo.exactType,
|
||||
}
|
||||
);
|
||||
return await generateImageThumbnailUsingCanvas(file, fileTypeInfo);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -48,6 +48,7 @@ export enum CustomError {
|
|||
REQUEST_TIMEOUT = 'request taking too long',
|
||||
HIDDEN_COLLECTION_SYNC_FILE_ATTEMPTED = 'hidden collection sync file attempted',
|
||||
UNKNOWN_ERROR = 'Something went wrong, please try again',
|
||||
WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED = 'Windows native image processing is not supported',
|
||||
}
|
||||
|
||||
function parseUploadErrorCodes(error) {
|
||||
|
|
Loading…
Reference in a new issue