mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-14 22:08:45 +00:00
사소한 리팩토링 3
This commit is contained in:
@@ -5,20 +5,20 @@
|
|||||||
import { ForceLoginModal } from "$lib/components/organisms";
|
import { ForceLoginModal } from "$lib/components/organisms";
|
||||||
import { clientKeyStore, masterKeyStore } from "$lib/stores";
|
import { clientKeyStore, masterKeyStore } from "$lib/stores";
|
||||||
import {
|
import {
|
||||||
requestLogout,
|
|
||||||
requestLogin,
|
requestLogin,
|
||||||
requestClientRegistrationAndSessionUpgrade,
|
requestClientRegistrationAndSessionUpgrade,
|
||||||
requestMasterKeyDownload,
|
requestMasterKeyDownload,
|
||||||
requestDeletedFilesCleanup,
|
requestDeletedFilesCleanup,
|
||||||
|
requestLogout,
|
||||||
} from "./service";
|
} from "./service";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let isForceLoginModalOpen = $state(false);
|
|
||||||
|
|
||||||
let email = $state("");
|
let email = $state("");
|
||||||
let password = $state("");
|
let password = $state("");
|
||||||
|
|
||||||
|
let isForceLoginModalOpen = $state(false);
|
||||||
|
|
||||||
const redirect = async (url: string) => {
|
const redirect = async (url: string) => {
|
||||||
return await goto(`${url}?redirect=${encodeURIComponent(data.redirectPath)}`);
|
return await goto(`${url}?redirect=${encodeURIComponent(data.redirectPath)}`);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -61,19 +61,6 @@
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const importKeys = async () => {
|
|
||||||
const file = fileInput?.files?.[0];
|
|
||||||
if (!file) return;
|
|
||||||
|
|
||||||
if (await importClientKeys(await file.text())) {
|
|
||||||
await upgradeSession(false);
|
|
||||||
} else {
|
|
||||||
// TODO: Error Handling
|
|
||||||
}
|
|
||||||
|
|
||||||
fileInput!.value = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
const upgradeSession = async (force: boolean) => {
|
const upgradeSession = async (force: boolean) => {
|
||||||
const [upgradeRes, upgradeError] = await requestClientRegistrationAndSessionUpgrade(
|
const [upgradeRes, upgradeError] = await requestClientRegistrationAndSessionUpgrade(
|
||||||
$clientKeyStore!,
|
$clientKeyStore!,
|
||||||
@@ -109,6 +96,19 @@
|
|||||||
await goto("/client/pending?redirect=" + encodeURIComponent(data.redirectPath));
|
await goto("/client/pending?redirect=" + encodeURIComponent(data.redirectPath));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const importKeys = async () => {
|
||||||
|
const file = fileInput?.files?.[0];
|
||||||
|
if (!file) return;
|
||||||
|
|
||||||
|
if (await importClientKeys(await file.text())) {
|
||||||
|
await upgradeSession(false);
|
||||||
|
} else {
|
||||||
|
// TODO: Error Handling
|
||||||
|
}
|
||||||
|
|
||||||
|
fileInput!.value = "";
|
||||||
|
};
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
if ($clientKeyStore) {
|
if ($clientKeyStore) {
|
||||||
await goto(data.redirectPath, { replaceState: true });
|
await goto(data.redirectPath, { replaceState: true });
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const workingFiles = new Map<number, Writable<GenerationStatus>>();
|
|||||||
|
|
||||||
let queue: (() => void)[] = [];
|
let queue: (() => void)[] = [];
|
||||||
let memoryUsage = 0;
|
let memoryUsage = 0;
|
||||||
const MEMORY_LIMIT = 100 * 1024 * 1024; // 100 MiB
|
const memoryLimit = 100 * 1024 * 1024; // 100 MiB
|
||||||
|
|
||||||
export const persistentStates = $state({
|
export const persistentStates = $state({
|
||||||
files: [] as File[],
|
files: [] as File[],
|
||||||
@@ -45,10 +45,7 @@ const generateThumbnail = limitFunction(
|
|||||||
status.set("generating");
|
status.set("generating");
|
||||||
|
|
||||||
const thumbnail = await doGenerateThumbnail(fileBuffer, fileType);
|
const thumbnail = await doGenerateThumbnail(fileBuffer, fileType);
|
||||||
if (!thumbnail) {
|
if (!thumbnail) return null;
|
||||||
status.set("error");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const thumbnailBuffer = await thumbnail.arrayBuffer();
|
const thumbnailBuffer = await thumbnail.arrayBuffer();
|
||||||
const thumbnailEncrypted = await encryptData(thumbnailBuffer, dataKey);
|
const thumbnailEncrypted = await encryptData(thumbnailBuffer, dataKey);
|
||||||
@@ -101,7 +98,7 @@ const enqueue = async (
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (priority) {
|
if (priority) {
|
||||||
queue = [() => resolver!(), ...queue];
|
queue = [resolver!, ...queue];
|
||||||
} else {
|
} else {
|
||||||
queue.push(resolver!);
|
queue.push(resolver!);
|
||||||
}
|
}
|
||||||
@@ -116,7 +113,7 @@ export const requestThumbnailGeneration = async (fileInfo: FileInfo) => {
|
|||||||
if (workingFiles.values().some((status) => get(status) !== "error")) {
|
if (workingFiles.values().some((status) => get(status) !== "error")) {
|
||||||
await enqueue(status, fileInfo);
|
await enqueue(status, fileInfo);
|
||||||
}
|
}
|
||||||
while (memoryUsage >= MEMORY_LIMIT) {
|
while (memoryUsage >= memoryLimit) {
|
||||||
await enqueue(status, fileInfo, true);
|
await enqueue(status, fileInfo, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +133,7 @@ export const requestThumbnailGeneration = async (fileInfo: FileInfo) => {
|
|||||||
fileSize = file.byteLength;
|
fileSize = file.byteLength;
|
||||||
|
|
||||||
memoryUsage += fileSize;
|
memoryUsage += fileSize;
|
||||||
if (memoryUsage < MEMORY_LIMIT) {
|
if (memoryUsage < memoryLimit) {
|
||||||
queue.shift()?.();
|
queue.shift()?.();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,8 +143,10 @@ export const requestThumbnailGeneration = async (fileInfo: FileInfo) => {
|
|||||||
fileInfo.contentType,
|
fileInfo.contentType,
|
||||||
fileInfo.dataKey!,
|
fileInfo.dataKey!,
|
||||||
);
|
);
|
||||||
if (!thumbnail) return;
|
if (
|
||||||
if (!(await requestThumbnailUpload(status, fileInfo.id, fileInfo.dataKeyVersion!, thumbnail))) {
|
!thumbnail ||
|
||||||
|
!(await requestThumbnailUpload(status, fileInfo.id, fileInfo.dataKeyVersion!, thumbnail))
|
||||||
|
) {
|
||||||
status.set("error");
|
status.set("error");
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
Reference in New Issue
Block a user