import {defineStore} from "pinia"; import type Group from "@/mode/Group"; import GroupApi from "@/api/GroupApi"; // @ts-ignore import Tools from "@/utils/Tools"; import GroupInviteApi from "@/api/GroupInviteApi"; export interface IState { groupList: Array; waitCheckMap: Map; groupIndexMap: Map; } export const useGroupStore = defineStore({ id: "group_store", state: (): IState => ({ groupList: [], waitCheckMap: new Map(), groupIndexMap: new Map() }), getters: { getGroupById: (state) => (id: string) => { return state.groupIndexMap.get(id); }, getGroupList(): Array { return this.groupList; }, }, actions: { setGroupList(groupList: Array): Array { return (this.groupList = groupList); }, loadWaitCheckList() { this.waitCheckMap = new Map(); GroupInviteApi.waitCheckList().then(res => { res.data.forEach((value: any) => { this.waitCheckMap.set(value.groupId, value.count); }) }); }, loadGroupList() { GroupApi.list().then(res => { this.groupList = res.data this.groupIndexMap = Tools.listToMap(res.data); }) }, }, });