Skip to content

Commit 175e1d1

Browse files
committed
fix(getWorkflowInfo): extracted
extracted
1 parent 0f1b84d commit 175e1d1

File tree

2 files changed

+38
-29
lines changed

2 files changed

+38
-29
lines changed

app/page.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import TimeAgo from "timeago-react";
1111
import useManifestPWA from "use-manifest-pwa";
1212
import { useSnapshot } from "valtio";
1313
import { persistState } from "./persistState";
14-
import { readWorkflowInfo, saveWorkflowInfo } from "./utils/exif";
14+
import { readWorkflowInfo, setWorkflowInfo } from "./utils/exif";
1515

1616
/**
1717
* @author snomiao <[email protected]> 2024
@@ -41,7 +41,7 @@ export default function Home() {
4141

4242
useSWR(
4343
"/filelist",
44-
async () => workingDir && (await scanFilelist(workingDir)),
44+
async () => workingDir && (await scanFilelist(workingDir))
4545
);
4646

4747
const monaco = useMonaco();
@@ -51,7 +51,7 @@ export default function Home() {
5151
if (!monaco || !editor) return;
5252
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {
5353
const savebtn = window.document.querySelector(
54-
"#save-workflow",
54+
"#save-workflow"
5555
) as HTMLButtonElement;
5656
savebtn?.click();
5757
// editor.getAction("editor.action.formatDocument")!.run();
@@ -82,7 +82,7 @@ export default function Home() {
8282
await readWorkflowInfo(e).catch((err) => {
8383
toast.error(`FAIL to read ${e.name}\nCause:${String(err)}`);
8484
return null;
85-
}),
85+
})
8686
)
8787
.filter() // filter empty
8888
.toArray();
@@ -276,7 +276,7 @@ export default function Home() {
276276
<video
277277
src={tasklist[snap.editing_index]?.previewUrl ?? ""}
278278
className="h-[3em] w-[3em] inline object-contain rounded"
279-
alt="Preview Editing Video"
279+
// alt="Preview Editing Video"
280280
controls
281281
muted
282282
/>
@@ -285,7 +285,7 @@ export default function Home() {
285285
<audio
286286
src={tasklist[snap.editing_index]?.previewUrl ?? ""}
287287
className="h-[3em] w-[10em] inline rounded"
288-
alt="Preview Editing Audio"
288+
// alt="Preview Editing Audio"
289289
controls
290290
/>
291291
) : (
@@ -326,8 +326,8 @@ export default function Home() {
326326
{!workingDir
327327
? "(download)"
328328
: snap.editing_filename === tasklist[snap.editing_index]?.name
329-
? "(overwrite)"
330-
: "(save as)"}
329+
? "(overwrite)"
330+
: "(save as)"}
331331
</span>
332332
</button>
333333
</div>
@@ -382,7 +382,7 @@ export default function Home() {
382382
const buffer = await file.arrayBuffer();
383383

384384
try {
385-
const newBuffer = saveWorkflowInfo(buffer, file.type, modifiedMetadata);
385+
const newBuffer = setWorkflowInfo(buffer, file.type, modifiedMetadata);
386386
const fileToSave = new File([newBuffer], filename, { type: file.type });
387387

388388
if (workingDir) {
@@ -391,15 +391,17 @@ export default function Home() {
391391
download(fileToSave);
392392
}
393393
} catch (error) {
394-
const msg = "Error processing file: " + error.message;
394+
const msg = `Error processing file: ${
395+
error instanceof Error ? error.message : String(error)
396+
}`;
395397
alert(msg);
396398
throw error;
397399
}
398400
}
399401

400402
async function writeToWorkingDir(
401403
workingDir: FileSystemDirectoryHandle,
402-
file: File,
404+
file: File
403405
) {
404406
const h = await workingDir.getFileHandle(file.name, {
405407
create: true,
@@ -458,7 +460,7 @@ function tryPrettyJson(json: string) {
458460

459461
function chooseNthFileToEdit(
460462
tasklist: Awaited<ReturnType<typeof readWorkflowInfo>>[],
461-
i: number,
463+
i: number
462464
) {
463465
if (!tasklist[i]) {
464466
persistState.editing_index = -1;

app/utils/exif.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,10 @@ import { getFlacMetadata, setFlacMetadata } from "./exif-flac";
22
import { getMp4Metadata, setMp4Metadata } from "./exif-mp4";
33
import { getPngMetadata, setPngMetadata } from "./exif-png";
44
import { getWebpMetadata, setWebpMetadata } from "./exif-webp";
5-
6-
export async function readWorkflowInfo(
7-
e: File | FileSystemFileHandle,
8-
): Promise<{
9-
name: string;
10-
workflowJson: string;
11-
previewUrl: string;
12-
file: File;
13-
lastModified: number;
14-
}> {
15-
if (!(e instanceof File)) e = await e.getFile();
5+
export function getWorkflowInfo(
6+
buffer: ArrayBuffer,
7+
fileType: string
8+
): { workflowJson: string } {
169
const handlers: Record<
1710
string,
1811
(buffer: ArrayBuffer) => Record<string, string>
@@ -24,13 +17,27 @@ export async function readWorkflowInfo(
2417
"video/mp4": getMp4Metadata,
2518
};
2619

27-
const handler = handlers[e.type];
28-
if (!handler) throw new Error(`Unsupported file type: ${e.type}`);
20+
const handler = handlers[fileType];
21+
if (!handler) throw new Error(`Unsupported file type: ${fileType}`);
2922

30-
const metadata = handler(await e.arrayBuffer());
23+
const metadata = handler(buffer);
24+
const workflowJson = metadata?.workflow || metadata?.Workflow;
25+
return { workflowJson };
26+
}
27+
28+
export async function readWorkflowInfo(
29+
e: File | FileSystemFileHandle
30+
): Promise<{
31+
name: string;
32+
workflowJson: string;
33+
previewUrl: string;
34+
file: File;
35+
lastModified: number;
36+
}> {
37+
if (!(e instanceof File)) e = await e.getFile();
38+
const { workflowJson } = getWorkflowInfo(await e.arrayBuffer(), e.type);
3139

3240
const previewUrl = URL.createObjectURL(e);
33-
const workflowJson = metadata?.workflow || metadata?.Workflow;
3441
return {
3542
name: e.name,
3643
workflowJson,
@@ -47,10 +54,10 @@ export async function readWorkflowInfo(
4754
* @param metadata The metadata to save
4855
* @returns The modified file buffer
4956
*/
50-
export function saveWorkflowInfo(
57+
export function setWorkflowInfo(
5158
buffer: ArrayBuffer,
5259
fileType: string,
53-
metadata: Record<string, string>,
60+
metadata: Record<string, string>
5461
): Uint8Array {
5562
const handlers: Record<
5663
string,

0 commit comments

Comments
 (0)