mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-13 11:00:50 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { saveMediaBuffer } from "../media/store.js";
|
|
|
|
export type BrowserProxyFile = {
|
|
path: string;
|
|
base64: string;
|
|
mimeType?: string;
|
|
};
|
|
|
|
export async function persistBrowserProxyFiles(files: BrowserProxyFile[] | undefined) {
|
|
if (!files || files.length === 0) {
|
|
return new Map<string, string>();
|
|
}
|
|
const mapping = new Map<string, string>();
|
|
for (const file of files) {
|
|
const buffer = Buffer.from(file.base64, "base64");
|
|
const saved = await saveMediaBuffer(buffer, file.mimeType, "browser", buffer.byteLength);
|
|
mapping.set(file.path, saved.path);
|
|
}
|
|
return mapping;
|
|
}
|
|
|
|
export function applyBrowserProxyPaths(result: unknown, mapping: Map<string, string>) {
|
|
if (!result || typeof result !== "object") {
|
|
return;
|
|
}
|
|
const obj = result as Record<string, unknown>;
|
|
if (typeof obj.path === "string" && mapping.has(obj.path)) {
|
|
obj.path = mapping.get(obj.path);
|
|
}
|
|
if (typeof obj.imagePath === "string" && mapping.has(obj.imagePath)) {
|
|
obj.imagePath = mapping.get(obj.imagePath);
|
|
}
|
|
const download = obj.download;
|
|
if (download && typeof download === "object") {
|
|
const d = download as Record<string, unknown>;
|
|
if (typeof d.path === "string" && mapping.has(d.path)) {
|
|
d.path = mapping.get(d.path);
|
|
}
|
|
}
|
|
}
|