25 lines
834 B
TypeScript
25 lines
834 B
TypeScript
|
|
import { getSoundFileURL } from "./utils";
|
||
|
|
import { CAM_BASE } from "./config";
|
||
|
|
import type { SoundUploadValue } from "../types/types";
|
||
|
|
|
||
|
|
export function resolveSoundSource(
|
||
|
|
selected: string | undefined,
|
||
|
|
soundOptions: SoundUploadValue[] | undefined
|
||
|
|
): { type: "uploaded"; url: string } | { type: "builtin"; url: string } | undefined {
|
||
|
|
if (!selected) return undefined;
|
||
|
|
|
||
|
|
const isFile = selected.endsWith(".mp3") || selected.endsWith(".wav");
|
||
|
|
|
||
|
|
if (isFile) {
|
||
|
|
const match = soundOptions?.find((o) => o.soundFileName === selected);
|
||
|
|
const version = match?.uploadedAt ?? 0;
|
||
|
|
const url = `${CAM_BASE}/Mobile/${encodeURIComponent(selected)}?v=${version}`;
|
||
|
|
return { type: "uploaded", url };
|
||
|
|
}
|
||
|
|
|
||
|
|
const builtin = getSoundFileURL(selected);
|
||
|
|
if (builtin) return { type: "builtin", url: builtin };
|
||
|
|
|
||
|
|
return undefined;
|
||
|
|
}
|