Update storage.ts
This commit is contained in:
@@ -1,6 +1,22 @@
|
|||||||
|
|
||||||
import { EmailTemplate } from '../types';
|
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 => {
|
export const generateTemplateKey = (name: string): string => {
|
||||||
return name.trim().toLowerCase().replace(/\s+/g, '_').replace(/[^a-z0-9_]/g, '');
|
return name.trim().toLowerCase().replace(/\s+/g, '_').replace(/[^a-z0-9_]/g, '');
|
||||||
};
|
};
|
||||||
@@ -66,6 +82,7 @@ return items;`;
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getTemplates = async (): Promise<EmailTemplate[]> => {
|
export const getTemplates = async (): Promise<EmailTemplate[]> => {
|
||||||
|
console.log("Fetching templates from /api/templates...");
|
||||||
const response = await fetch('/api/templates');
|
const response = await fetch('/api/templates');
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
const errorBody = await response.text();
|
const errorBody = await response.text();
|
||||||
@@ -75,6 +92,7 @@ export const getTemplates = async (): Promise<EmailTemplate[]> => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const saveTemplate = async (template: EmailTemplate): Promise<void> => {
|
export const saveTemplate = async (template: EmailTemplate): Promise<void> => {
|
||||||
|
console.log("Saving template to /api/templates...", template.name);
|
||||||
const response = await fetch('/api/templates', {
|
const response = await fetch('/api/templates', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -84,8 +102,15 @@ export const saveTemplate = async (template: EmailTemplate): Promise<void> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
const errorData = await response.json().catch(() => ({}));
|
let errorMessage = `Errore HTTP ${response.status}`;
|
||||||
throw new Error(errorData.details || errorData.error || `Salvataggio fallito con stato ${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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user