- aggiunto componenti per Home Template... ma ancora da provare
- sistemato catprods - Sistemato menu
This commit is contained in:
117
src/store/admin.store.js
Normal file
117
src/store/admin.store.js
Normal file
@@ -0,0 +1,117 @@
|
||||
// @ts-check
|
||||
import { defineStore } from 'pinia';
|
||||
import api from 'src/services/api';
|
||||
|
||||
export const useAdminStore = defineStore('admin', {
|
||||
state: () => ({
|
||||
home: null,
|
||||
loadingHome: false,
|
||||
savingHome: false,
|
||||
events: [],
|
||||
posts: [],
|
||||
loadingEvents: false,
|
||||
loadingPosts: false,
|
||||
saving: false,
|
||||
error: null
|
||||
}),
|
||||
|
||||
actions: {
|
||||
async loadHome() {
|
||||
this.loadingHome = true; this.error = null;
|
||||
try {
|
||||
const { data } = await api.get('/home');
|
||||
this.home = data;
|
||||
} catch (e) {
|
||||
this.error = e?.message || 'Errore caricamento Home';
|
||||
} finally {
|
||||
this.loadingHome = false;
|
||||
}
|
||||
},
|
||||
async saveHome(partial) {
|
||||
this.savingHome = true; this.error = null;
|
||||
try {
|
||||
const payload = { ...(this.home || {}), ...(partial || {}) };
|
||||
const { data } = await api.put('/home', payload);
|
||||
this.home = data;
|
||||
return data;
|
||||
} catch (e) {
|
||||
this.error = e?.message || 'Errore salvataggio Home';
|
||||
throw e;
|
||||
} finally {
|
||||
this.savingHome = false;
|
||||
}
|
||||
},
|
||||
|
||||
async loadEvents(params = { limit: 50 }) {
|
||||
this.loadingEvents = true; this.error = null;
|
||||
try {
|
||||
const { data } = await api.get('/events', { params });
|
||||
this.events = Array.isArray(data?.items) ? data.items : data; // supporta entrambi i formati
|
||||
} catch (e) {
|
||||
this.error = e?.message || 'Errore caricamento Eventi';
|
||||
} finally {
|
||||
this.loadingEvents = false;
|
||||
}
|
||||
},
|
||||
async createEvent(item) {
|
||||
this.saving = true;
|
||||
try {
|
||||
const { data } = await api.post('/events', item);
|
||||
this.events.unshift(data);
|
||||
return data;
|
||||
} finally { this.saving = false; }
|
||||
},
|
||||
async updateEvent(id, partial) {
|
||||
this.saving = true;
|
||||
try {
|
||||
const { data } = await api.put(`/events/${id}`, partial);
|
||||
const i = this.events.findIndex(e => e._id === id);
|
||||
if (i >= 0) this.events[i] = data;
|
||||
return data;
|
||||
} finally { this.saving = false; }
|
||||
},
|
||||
async deleteEvent(id) {
|
||||
this.saving = true;
|
||||
try {
|
||||
await api.delete(`/events/${id}`);
|
||||
this.events = this.events.filter(e => e._id !== id);
|
||||
} finally { this.saving = false; }
|
||||
},
|
||||
|
||||
async loadPosts(params = { limit: 50, sort: '-date' }) {
|
||||
this.loadingPosts = true; this.error = null;
|
||||
try {
|
||||
const { data } = await api.get('/posts', { params });
|
||||
this.posts = Array.isArray(data?.items) ? data.items : data;
|
||||
} catch (e) {
|
||||
this.error = e?.message || 'Errore caricamento Post';
|
||||
} finally {
|
||||
this.loadingPosts = false;
|
||||
}
|
||||
},
|
||||
async createPost(item) {
|
||||
this.saving = true;
|
||||
try {
|
||||
const { data } = await api.post('/posts', item);
|
||||
this.posts.unshift(data);
|
||||
return data;
|
||||
} finally { this.saving = false; }
|
||||
},
|
||||
async updatePost(id, partial) {
|
||||
this.saving = true;
|
||||
try {
|
||||
const { data } = await api.put(`/posts/${id}`, partial);
|
||||
const i = this.posts.findIndex(p => p._id === id);
|
||||
if (i >= 0) this.posts[i] = data;
|
||||
return data;
|
||||
} finally { this.saving = false; }
|
||||
},
|
||||
async deletePost(id) {
|
||||
this.saving = true;
|
||||
try {
|
||||
await api.delete(`/posts/${id}`);
|
||||
this.posts = this.posts.filter(p => p._id !== id);
|
||||
} finally { this.saving = false; }
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user