access.ts 816 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { create } from "zustand";
  2. import { persist } from "zustand/middleware";
  3. import { queryMeta } from "../utils";
  4. export interface AccessControlStore {
  5. accessCode: string;
  6. token: string;
  7. updateToken: (_: string) => void;
  8. updateCode: (_: string) => void;
  9. enabledAccessControl: () => boolean;
  10. }
  11. export const ACCESS_KEY = "access-control";
  12. export const useAccessStore = create<AccessControlStore>()(
  13. persist(
  14. (set, get) => ({
  15. token: "",
  16. accessCode: "",
  17. enabledAccessControl() {
  18. return queryMeta("access") === "enabled";
  19. },
  20. updateCode(code: string) {
  21. set((state) => ({ accessCode: code }));
  22. },
  23. updateToken(token: string) {
  24. set((state) => ({ token }));
  25. },
  26. }),
  27. {
  28. name: ACCESS_KEY,
  29. version: 1,
  30. }
  31. )
  32. );