novita-anysite / src /lib /sharelink.ts
viktor-hu's picture
Update UI (#8)
25c879d verified
import { nanoid } from "nanoid";
const FILE_NAME_KEY = "novita-anysite-share-filename";
function getShareFilename(): string {
let filename = localStorage.getItem(FILE_NAME_KEY);
if (!filename) {
filename = `${nanoid()}`;
localStorage.setItem(FILE_NAME_KEY, filename);
}
return filename;
}
export async function generateShareLink(html: string) {
const filename = getShareFilename();
const response = await fetch("/api/share-link", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
filename: `${filename}.html`,
code: html,
}),
});
if (!response.ok) {
throw new Error(
`Failed to upload: ${response.status} ${response.statusText}`,
);
}
const result = await response.json();
if (!result.success) {
throw new Error(result.message || "Failed to upload HTML");
}
const uploadedUrl = result.data?.url;
if (!uploadedUrl) {
throw new Error("No URL returned from upload service");
}
return `https://anysite-gallery.novita.ai/${filename}`;
}