Spaces:
Runtime error
Runtime error
| import type { FileData } from "@gradio/client"; | |
| import { uploadToHuggingFace } from "@gradio/utils"; | |
| export const format_chat_for_sharing = async ( | |
| chat: [string | FileData | null, string | FileData | null][] | |
| ): Promise<string> => { | |
| let messages = await Promise.all( | |
| chat.map(async (message_pair) => { | |
| return await Promise.all( | |
| message_pair.map(async (message, i) => { | |
| if (message === null) return ""; | |
| let speaker_emoji = i === 0 ? "π" : "π€"; | |
| let html_content = ""; | |
| if (typeof message === "string") { | |
| const regexPatterns = { | |
| audio: /<audio.*?src="(\/file=.*?)"/g, | |
| video: /<video.*?src="(\/file=.*?)"/g, | |
| image: /<img.*?src="(\/file=.*?)".*?\/>|!\[.*?\]\((\/file=.*?)\)/g | |
| }; | |
| html_content = message; | |
| for (let [_, regex] of Object.entries(regexPatterns)) { | |
| let match; | |
| while ((match = regex.exec(message)) !== null) { | |
| const fileUrl = match[1] || match[2]; | |
| const newUrl = await uploadToHuggingFace(fileUrl, "url"); | |
| html_content = html_content.replace(fileUrl, newUrl); | |
| } | |
| } | |
| } else { | |
| if (!message?.url) return ""; | |
| const file_url = await uploadToHuggingFace(message.url, "url"); | |
| if (message.mime_type?.includes("audio")) { | |
| html_content = `<audio controls src="${file_url}"></audio>`; | |
| } else if (message.mime_type?.includes("video")) { | |
| html_content = file_url; | |
| } else if (message.mime_type?.includes("image")) { | |
| html_content = `<img src="${file_url}" />`; | |
| } | |
| } | |
| return `${speaker_emoji}: ${html_content}`; | |
| }) | |
| ); | |
| }) | |
| ); | |
| return messages | |
| .map((message_pair) => | |
| message_pair.join( | |
| message_pair[0] !== "" && message_pair[1] !== "" ? "\n" : "" | |
| ) | |
| ) | |
| .join("\n"); | |
| }; | |