import { reactive } from "vue";

type IUser = {
  username?: string;
  nickname?: string;
  /** 真实姓名 */
  realName?: string;
  /** 会员结束时间 */
  membershipEndTime?: string;
  tenantId?: number;
  /** 声部名称 */
  subjectId?: any;
  subjectNames?: string;
  subjectName?: string;
  /** 头像 */
  avatar?: string;
  memberRankSettingId?: number;
  id?: string | number;
  clientType?: "BACKEND" | "SCHOOL" | "TEACHER" | "STUDENT";
  phone?: string;
  schoolInfos?: any[];
  // 当前用户 绑定 的乐器
  instrumentId?: string;
  // 如果学生的声部是打击乐，打击乐可能会有多个乐器id,
  specialInstrumentIds?: any[];
  // 性别
  gender?: 1|0;
};
type IStatus = "init" | "login" | "logout" | "error";
type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";
type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web" | "/api-backend" | "/edu-app" | "/cbs-app";
type IProxy = "" | "/gym" | "/colexiu" | "/orchestra" | "/instrument";

export interface IStoreData {
  platformType: IPlatformType;
  platformApi: IPlatformApi;
  proxy: IProxy;
  isApp: boolean;
  isTeacher: boolean;
}

export const storeData = reactive({
  status: "init" as IStatus,
  /** 用户信息 */
  user: {} as IUser,
  /** 端口 */
  platformType: "STUDENT" as IPlatformType,
  /** api地址前缀 */
  platformApi: "/api-student" as IPlatformApi,
  /** 开发模式api前缀 */
  proxy: "" as IProxy,
  /** 是否在APP中 */
  isApp: false,
  /** 是否是老师端 */
  isTeacher: false,
});

/** 初始化 */
export const setStoreData = (data: IStoreData) => {
  Object.assign(storeData, data);
};

/** 设置用户信息 */
export const setUserInfo = (user: IUser) => {
  storeData.status = "login";
  storeData.user = user || {};
};
export const setLogout = () => {
  storeData.status = "logout";
  storeData.user = {};
};
export const setLoginError = () => {
  storeData.status = "error";
  storeData.user = {};
};
