53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
export interface SiteData {
|
|
heroTitle: string;
|
|
heroSubtitle: string;
|
|
}
|
|
|
|
export interface Site {
|
|
id: number;
|
|
userId: number;
|
|
slug: string;
|
|
name: string;
|
|
template: string;
|
|
data: SiteData;
|
|
}
|
|
|
|
// Get sites from localStorage
|
|
export function getUserSites(): Site[] {
|
|
if (typeof window === "undefined") return []; // SSR safe
|
|
const data = localStorage.getItem("userSites");
|
|
return data ? JSON.parse(data) : [];
|
|
}
|
|
|
|
// Save sites to localStorage
|
|
export function saveUserSites(sites: Site[]) {
|
|
localStorage.setItem("userSites", JSON.stringify(sites));
|
|
}
|
|
|
|
export function createSite({
|
|
userId,
|
|
businessName,
|
|
template,
|
|
}: {
|
|
userId: number;
|
|
businessName: string;
|
|
template: string;
|
|
}): Site {
|
|
const sites = getUserSites();
|
|
const id = sites.length + 1;
|
|
const slug = `site-${id}`;
|
|
const newSite: Site = {
|
|
id,
|
|
userId,
|
|
slug,
|
|
name: businessName,
|
|
template,
|
|
data: {
|
|
heroTitle: `Welcome to ${businessName}`,
|
|
heroSubtitle: "Best products ever",
|
|
},
|
|
};
|
|
sites.push(newSite);
|
|
saveUserSites(sites);
|
|
return newSite;
|
|
}
|