web2-client/src/shared/stores/root/index.ts

95 lines
2.1 KiB
TypeScript

import { create } from "zustand";
export type Royalty = {
address: string;
value: number;
};
type RootStore = {
name: string;
setName: (name: string) => void;
author: string;
setAuthor: (author: string) => void;
file: File | null;
setFile: (file: File) => void;
fileType: string;
setFileType: (type: string) => void;
fileSrc: string;
setFileSrc: (fileSrc: string) => void;
allowCover: boolean;
setAllowCover: (allowCover: boolean) => void;
cover: File | null;
setCover: (cover: File | null) => void;
isPercentHintOpen: boolean;
setPercentHintOpen: (isPercentHintOpen: boolean) => void;
authors: string[];
setAuthors: (authors: string[]) => void;
royalty: Royalty[];
setRoyalty: (authors: Royalty[]) => void;
price: number;
setPrice: (price: number) => void;
allowResale: boolean;
setAllowResale: (allowResale: boolean) => void;
licenseResalePrice: number;
setLicenseResalePrice: (licenseResalePrice: number) => void;
hashtags: string[];
setHashtags: (hashtags: string[]) => void;
};
export const useRootStore = create<RootStore>((set) => ({
name: "",
setName: (name) => set({ name }),
author: "",
setAuthor: (author) => set({ author }),
file: null,
setFile: (file) => set({ file }),
fileType: "",
setFileType: (fileType) => set({ fileType }),
fileSrc: "",
setFileSrc: (fileSrc) => set({ fileSrc }),
allowCover: false,
setAllowCover: (allowCover) => set({ allowCover }),
cover: null,
setCover: (cover) => set({ cover }),
isPercentHintOpen: true,
setPercentHintOpen: (isPercentHintOpen) => set({ isPercentHintOpen }),
authors: [],
setAuthors: (authors) => set({ authors }),
royalty: [{ address: "", value: 100 }],
setRoyalty: (royalty) => set({ royalty }),
price: 0,
setPrice: (price: number) => set({ price }),
allowResale: false,
setAllowResale: (allowResale) => set({ allowResale }),
licenseResalePrice: 0,
setLicenseResalePrice: (licenseResalePrice) => set({ licenseResalePrice }),
hashtags: [],
setHashtags: (hashtags: string[]) => set({ hashtags }),
}));