/**
 * 
 * @description telStatus 当前用户签入的状态
 * @method  setDutyState 设置签入签出状态
 * @method  setRest 设置休息状态
 * @method  setTalkingDeal 设置静音状态
 * @method  setHold 设置保持状态
 * @method  setMeeting 设置三方会议状态
 * @method  setPhoneControlState 设置电话控件状态
 * @method  setCallInfo 设置当前通话信息
 * @method resetState 重置状态
 */
import { defineStore } from 'pinia';
export enum TelStates {
	dutyOff = 'dutyOff', // 签出
	dutyOn = 'dutyOn', // 签入
	rest = 'rest',  // 小休
	ring = 'ring', // 来电响铃
	onHold = 'onHold', // 保持中
	onTransferSuccess = 'onTransferSuccess', // 转接成功，可以开始三方通话
	onCall = 'onCall', // 一通电话通话中
	onTalkingDeal = 'onTalkingDeal', 		// 事后处理中
	onConference = 'onConference' // 一通电话通话中，会议中
}
export enum RestStates {
	resting = 'resting', // 小休中
	InReview = 'InReview', // 小休审批中
	unRest = 'unRest' // 未小休
}
export const useTelStatus = defineStore('telStatus', {
	state: (): TelsStateInfos => ({
		telStatusInfo: {
			isDutyOn: false, // 是否签入
			isRest: RestStates.unRest, // 是否休息  'resting'|'InReview'|'unRest'; 休息中  审核中 其他状态
			isTalkingDeal: false, //是否事后处理
			isMeeting: false, //是否三方会议中
			isHold: false, // 是否保持中
			phoneControlState: TelStates.dutyOff, //当前状态 默认签出
			telsNo: "", // 分机号
			groupName: "", // 分机组名称
			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;
		},
		// 设置静音状态
		setTalkingDeal(data: boolean): void {
			this.telStatusInfo.isTalkingDeal = 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
			};
		},
		// 重置当前通话信息
		resetCallInfo(): void {
			this.telStatusInfo = {
				...this.telStatusInfo,
				isHold: false,
				isRest: RestStates.unRest,
				isMeeting: false,
				isTalkingDeal: false,
				telArea: "", // 电话区号
				telGuid: "", // 电话guid
				telIVR: "", // 电话IVR
				telType: "",//来电 外呼 转接
				fromTel: "",// 来电号码
			};
		},
		// 签出重置所有状态
		resetState(): void {
			this.telStatusInfo = {
				isDutyOn: false, // 是否签入
				isRest: RestStates.unRest, // 是否休息
				isTalkingDeal: false, //是否事后处理
				isMeeting: false, //是否三方会议中
				isHold:false, // 是否保持中
				phoneControlState: TelStates.dutyOff, //当前状态 默认签出
				telsNo: "", // 分机号
				groupName: "", // 分机组名称
				telGongHao: "", // 电话工号
				telArea: "", // 电话区号
				telGuid: "", // 电话guid
				telIVR: "", // 电话IVR
				telType: "", //来电 外呼 转接
				fromTel: "", // 来电号码
			}
		}
	},
	// 开启数据缓存
	persist: {
		enabled: true,
		strategies: [
			{
				//key的名称
				key: `${import.meta.env.VITE_STORAGE_NAME}_telStatusInfo`,
				//更改默认存储，我更改为localStorage
				storage: localStorage,
				// 可以选择哪些进入local存储，这样就不用全部都进去存储了
				// 默认是全部进去存储
			},
			// {
			// 	key: `${import.meta.env.VITE_STORAGE_NAME}_base`,
			// 	storage: localStorage,
			// 	paths: ['isDutyOn','isRest']
			// },
			// {
			// 	key: `${import.meta.env.VITE_STORAGE_NAME}_base2`,
			// 	storage: sessionStorage,
			// 	paths: ['telsNo']
			// },
		]
	}
});
