From 221ef192bc13d1b40a6777e5d7665de76a29b656 Mon Sep 17 00:00:00 2001 From: LandaMm Date: Tue, 24 Jun 2025 19:05:07 +0200 Subject: [PATCH] feat: permissions store --- web/src/store/admin/permissions.ts | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 web/src/store/admin/permissions.ts diff --git a/web/src/store/admin/permissions.ts b/web/src/store/admin/permissions.ts new file mode 100644 index 0000000..7d9cf4b --- /dev/null +++ b/web/src/store/admin/permissions.ts @@ -0,0 +1,32 @@ +import { getPermissionsApi } from "@/api/admin/permissions"; +import type { AppPermission } from "@/types"; +import { create } from "zustand"; + +export interface IAdminPermissionsState { + permissions: Record; + fetching: boolean; + + fetch: () => Promise; +} + +export const usePermissions = create((set) => ({ + permissions: {}, + fetching: false, + + fetch: async () => { + set({ fetching: true }); + + try { + const response = await getPermissionsApi(); + set({ + permissions: Object.fromEntries( + response.map(({ scope, permissions }) => [scope, permissions]), + ), + }); + } catch (err) { + console.log("ERR: Failed to fetch admin permissions:", err); + } finally { + set({ fetching: false }); + } + }, +}));