import { defineStore } from 'pinia';
import { TelsStateInfos, TelStates, RestStates } from './interface';
/**
 * 
 * @methods telStatus 当前用户签入的状态
 */
export const useTelStatus = defineStore('telStatus', {
	state: (): TelsStateInfos => ({
		telStatusInfo: {
			isDutyOn: false, // 是否签入
			isRest: RestStates.unRest, // 是否休息  'resting'|'InReview'|'unRest'; 休息中  审核中 其他状态
			isMute: false, //是否静音
			isMeeting: false, //是否三方会议中
			isHold: false, // 是否保持中
			phoneControlState: TelStates.dutyOff, //当前状态 默认签出
			telsNo: "", // 分机号
			telGongHao: "", // 电话工号
			telArea: "", // 电话区号
			telGuid: "", // 电话guid
			telIVR: "", // 电话IVR
			telType: "", //来电 外呼 转接
			fromTel: "", // 来电号码
		}
	}),
	actions: {
		// 设置签入签出状态
		setDutyState(data: boolean): void {
			this.telStatusInfo.isDutyOn = data;
		},
		// 设置休息状态
		setRest(data: RestStates): void {
			this.telStatusInfo.isRest = data;
		},
		// 设置静音状态
		setMute(data: boolean): void {
			this.telStatusInfo.isMute = data;
		},
		// 设置保持状态
		setHold(data: boolean): void {
			this.telStatusInfo.isHold = data;
		},
		// 设置是否在三方会议中
		setMetTing(data: boolean): void {
			this.telStatusInfo.isMeeting = data;
		},
		// 设置电话控件状态
		setPhoneControlState(data: TelStates): void {
			this.telStatusInfo.phoneControlState = data;
		},
		// 设置当前通话信息
		setCallInfo(data:any): void {
			this.telStatusInfo = {
				...this.telStatusInfo,
				...data
			};
		},
		// 设置通话时长
		setCallTime(data: number): void {
			this.telStatusInfo.callTime = data;
		},
		// 清除通话时长
		clearCallTime(): void {
			// 删除对象属性
			delete this.telStatusInfo.callTime;
		},
		// 签出重置所有状态
		resetState(): void {
			this.telStatusInfo = {
				isDutyOn: false, // 是否签入
				isRest: RestStates.unRest, // 是否休息
				isMute: false, // 是否静音
				isMeeting: false, //是否三方会议中
				isHold:false, // 是否保持中
				phoneControlState: TelStates.dutyOff, //当前状态 默认签出
				telsNo: "", // 分机号
				telGongHao: "", // 电话工号
				telArea: "", // 电话区号
				telGuid: "", // 电话guid
				telIVR: "", // 电话IVR
				telType: "", //来电 外呼 转接
				fromTel: "", // 来电号码
			}
			this.clearCallTime(); // 清除通话时长
		}
	},
	// 开启数据缓存
	persist: {
		enabled: true,
		strategies: [
			{
				//key的名称
				key: 'telStatus',
				//更改默认存储，我更改为localStorage
				storage: localStorage,
				// 可以选择哪些进入local存储，这样就不用全部都进去存储了
				// 默认是全部进去存储
			}
		]
	}
});
