feat: upload backups

This commit is contained in:
izzy
2025-11-21 12:52:27 +00:00
parent 3d2d7fa64c
commit 19ba23056c
12 changed files with 297 additions and 13 deletions

View File

@@ -43,19 +43,23 @@ export const addDummyItems = () => {
export const uploadExecutionQueue = new ExecutorQueue({ concurrency: 2 });
type FilePickerParam = { multiple?: boolean; extensions?: string[] };
type FileUploadParam = { multiple?: boolean; albumId?: string };
export const openFileUploadDialog = async (options: FileUploadParam = {}) => {
const { albumId, multiple = true } = options;
const extensions = uploadManager.getExtensions();
export const openFilePicker = async (options: FilePickerParam = {}) => {
const { multiple = true, extensions } = options;
return new Promise<string[]>((resolve, reject) => {
return new Promise<File[]>((resolve, reject) => {
try {
const fileSelector = document.createElement('input');
fileSelector.type = 'file';
fileSelector.multiple = multiple;
fileSelector.accept = extensions.join(',');
if (extensions) {
fileSelector.accept = extensions.join(',');
}
fileSelector.addEventListener(
'change',
(e: Event) => {
@@ -63,9 +67,9 @@ export const openFileUploadDialog = async (options: FileUploadParam = {}) => {
if (!target.files) {
return;
}
const files = Array.from(target.files);
resolve(fileUploadHandler({ files, albumId }));
const files = Array.from(target.files);
resolve(files);
},
{ passive: true },
);
@@ -78,6 +82,17 @@ export const openFileUploadDialog = async (options: FileUploadParam = {}) => {
});
};
export const openFileUploadDialog = async (options: FileUploadParam = {}) => {
const { albumId, multiple = true } = options;
const extensions = uploadManager.getExtensions();
const files = await openFilePicker({
multiple,
extensions,
});
return fileUploadHandler({ files, albumId });
};
type FileUploadHandlerParams = Omit<FileUploaderParams, 'deviceAssetId' | 'assetFile'> & {
files: File[];
};