useVipStore.ts 763 B

1234567891011121314151617181920212223242526272829
  1. import { UserVipInfo } from "@/api/user";
  2. import { create } from "zustand";
  3. interface State {
  4. vipData: UserVipInfo | null;
  5. }
  6. interface Action {
  7. setVipData: (value: State["vipData"]) => void;
  8. }
  9. const initialState: State = {
  10. vipData: { vip_exp: 0, vip_level: 0, vip_next_level: 0, vip_score_exp: 0, vip_cashback: 0 },
  11. };
  12. /**
  13. * @description vip
  14. */
  15. export const useVipStore = create<State & Action>()((set, get) => {
  16. return {
  17. ...initialState,
  18. setVipData: (values: State["vipData"]) =>
  19. set((state) => {
  20. return values
  21. ? { ...state, vipData: values }
  22. : { ...state, vipData: initialState.vipData };
  23. }),
  24. reset: () => set(initialState),
  25. };
  26. });