diff --git a/services/storage.ts b/services/storage.ts index 5335c52..aa22123 100644 --- a/services/storage.ts +++ b/services/storage.ts @@ -1,6 +1,22 @@ import { EmailTemplate } from '../types'; +// Fallback for crypto.randomUUID in non-secure (HTTP) contexts +export const generateUUID = () => { + if (typeof crypto !== 'undefined' && crypto.randomUUID) { + try { + return crypto.randomUUID(); + } catch (e) { + // Fallback if it exists but fails + } + } + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + const r = Math.random() * 16 | 0; + const v = c === 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); +}; + export const generateTemplateKey = (name: string): string => { return name.trim().toLowerCase().replace(/\s+/g, '_').replace(/[^a-z0-9_]/g, ''); }; @@ -66,6 +82,7 @@ return items;`; }; export const getTemplates = async (): Promise => { + console.log("Fetching templates from /api/templates..."); const response = await fetch('/api/templates'); if (!response.ok) { const errorBody = await response.text(); @@ -75,6 +92,7 @@ export const getTemplates = async (): Promise => { }; export const saveTemplate = async (template: EmailTemplate): Promise => { + console.log("Saving template to /api/templates...", template.name); const response = await fetch('/api/templates', { method: 'POST', headers: { @@ -84,8 +102,15 @@ export const saveTemplate = async (template: EmailTemplate): Promise => { }); if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.details || errorData.error || `Salvataggio fallito con stato ${response.status}`); + let errorMessage = `Errore HTTP ${response.status}`; + try { + const errorData = await response.json(); + errorMessage = errorData.details || errorData.error || errorMessage; + } catch (e) { + const textError = await response.text(); + if (textError) errorMessage = textError; + } + throw new Error(errorMessage); } };