123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { Activate, Activity, getWheelApi, NotReceive, WheelsType } from "@/api/cashWheel";
- import { getToken } from "@/utils/Cookies";
- import { create } from "zustand";
- /**
- * 轮盘store
- */
- interface CurrentWheel extends Activate, Activity {}
- interface State {
- status: 1 | 2 | 3; // status: 1可旋转 2可领取 3 不展示
- currentWheel: Partial<CurrentWheel>;
- totalCount: number;
- receiveTarget: Partial<NotReceive>;
- }
- interface Action {
- setWheel: () => Promise<WheelsType | undefined>;
- }
- const initialState: State = {
- status: 3,
- currentWheel: { count_down: 0 },
- totalCount: 100,
- receiveTarget: {},
- };
- /**
- * @description 系统配置
- */
- export const useWheelStore = create<State & Action>()((set, get) => {
- return {
- ...initialState,
- setWheel: () => {
- if (!getToken()) return Promise.resolve(undefined);
- return getWheelApi().then((res) => {
- const { data } = res;
- if (Array.isArray(data)) {
- set((state) => ({ ...state, ...initialState }));
- return undefined;
- }
- let source = { ...(data.activities?.[0] || {}), ...data.activate };
- if (data.not_receive) {
- set((state) => ({
- ...state,
- status: 2,
- currentWheel: source,
- receiveTarget: data.not_receive[0],
- }));
- return data;
- }
- if (data?.activate?.can === 0) {
- set((state) => ({
- ...state,
- status: 2,
- currentWheel: source,
- receiveTarget: {},
- }));
- return data;
- }
- if (source.can === 1 && data.not_receive === null) {
- set((state) => ({
- ...state,
- status: 1,
- currentWheel: source,
- receiveTarget: {},
- }));
- return data;
- }
- set((state) => ({ ...state, status: 3, currentWheel: source }));
- return data;
- });
- },
- reset: () => set(initialState),
- };
- });
- export default useWheelStore;
|