41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
import {create} from "zustand";
|
|
import * as api from "@/api/notices";
|
|
|
|
export const useNoticesStore = create((set, get) => ({
|
|
notices: [],
|
|
fetchNotices: async () => {
|
|
set({error: null});
|
|
try {
|
|
const data = await api.listNotices();
|
|
set({notices: data});
|
|
} catch (error) {
|
|
set(error);
|
|
}
|
|
},
|
|
|
|
addNotice: async (notice) => {
|
|
try {
|
|
const newNotice = await api.createNotice(notice);
|
|
set((state) => ({
|
|
notices: [...state.notices, newNotice],
|
|
}));
|
|
return newNotice;
|
|
} catch (error) {
|
|
set({ error });
|
|
return null;
|
|
}
|
|
},
|
|
|
|
getNoticeById: (noticeId) => {
|
|
return get().notices.find((notice) => String(notice.noticeId) === String(noticeId));
|
|
},
|
|
|
|
getAllImagesByNoticeId: async (noticeId) => {
|
|
try {
|
|
return await api.getAllImagesByNoticeId(noticeId);
|
|
} catch (error) {
|
|
console.error("Error while getting images:", error);
|
|
return ["https://http.cat/404.jpg"];
|
|
}
|
|
}
|
|
})); |