import $store from '@/sheep/store';
import $helper from '@/sheep/helper';
import dayjs from 'dayjs';
import {
	ref,
	computed
} from 'vue';
import test from '@/sheep/helper/test.js';
import AuthUtil from '@/sheep/api/member/auth';
import sheep from '@/sheep';
import SignInApi from '@/sheep/api/member/signin';
let time = 30;
let timer = null;
// 登录
async function onSign() {
	const {
		code,
		data
	} = await SignInApi.createSignInRecord();
	if (code === 0) {
		showSignUpModal(data)
	}
	if (timer) {
		clearInterval(timer);
	}
	uni.setStorageSync('isRun', false);
	uni.setStorageSync('isSign', true);
}
// 每日重置签到状态
export function resetSignStatusIfNeeded() {
	const today = new Date().toISOString().slice(0, 10); // 获取当前日期，格式为 YYYY-MM-DD
	const lastCheckDate = uni.getStorageSync('lastCheckDate');
	if (today !== lastCheckDate) {
		// 如果跨天了，重置 isSign
		uni.setStorageSync('isSign', false);
		uni.setStorageSync('lastCheckDate', today); // 更新最后检查的日期
	}
}
// 自动签到
export function autoSign() {
	resetSignStatusIfNeeded();
	const isLogin = computed(() => sheep.$store('user').isLogin);
	if (isLogin.value) {
		// 倒计时是否在进行
		// console.log("autoSign执行了")
		uni.setStorageSync('isRun', true);
		if (uni.getStorageSync('isRun') && !uni.getStorageSync('isSign')) {
			// console.log('开始倒计时')
			// 开始一个新的定时器
			timer = setInterval(() => {
				time--;
				// console.log("time", time);
				if (uni.getStorageSync('isSign') || !isLogin.value){
					// console.log('已经签到了或'者已经登出了 不可以在签到')
					cancelAutoSign()
					
				}
				if (time <= 0 && !uni.getStorageSync('isSign')) {
					clearInterval(timer);
					onSign();
				}
			}, 1000);
		}
	}
}
// 取消自动签到
export function cancelAutoSign() {
	// console.log("autoSign取消了")
	if (timer) {
		clearInterval(timer);
	}
	time = 30;
	uni.setStorageSync('isRun', false);
}
// 打开签到弹框
export function showSignUpModal(obj) {
	$store('modal').$patch((state) => {
		state.signUp = true;
		state.signUpInfo = obj;
	});
}
// 关闭签到弹框
export function colseSignUpModal() {
	$store('modal').$patch((state) => {
		state.signUp = false;
	});
}

// 打开获得佣金弹窗
export function showWalletModal(obj) {
	$store('modal').$patch((state) => {
		state.getWallet = true;
		state.getWalletInfo = obj;
	});
}
// 关闭获得佣金弹窗
export function colseWalletModal() {
	$store('modal').$patch((state) => {
		state.getWallet = false;
	});
}
// 打开关注公众号弹窗
export function showSubscribeModal() {
	const modal = $store('modal');
	modal.$patch((state) => {
		state.subscribe = true;
	});
}
// 关闭关注公众号弹窗
export function closeSubscribeModal() {
	const modal = $store('modal');
	modal.$patch((state) => {
		state.subscribe = false;
	});
}
// 打开授权弹框
export function showAuthModal(type = 'accountLogin', isActive = 'accountLogin') {
	const modal = $store('modal');
	if (modal.auth !== '') {
		closeAuthModal();
		setTimeout(() => {
			modal.$patch((state) => {
				state.auth = type;
				state.isActive = isActive;
			});
		}, 100);
	} else {
		modal.$patch((state) => {
			state.auth = type;
			state.isActive = isActive;
		});
	}
}



// 关闭授权弹框
export function closeAuthModal() {
	$store('modal').$patch((state) => {
		state.auth = '';
	});
}

// 打开分享弹框
export function showShareModal(spuId = 0) {
	$store('modal').$patch((state) => {
		state.share = true;
		state.shareInfo.spuId = spuId;
	});
}

// 关闭分享弹框
export function closeShareModal() {
	$store('modal').$patch((state) => {
		state.share = false;
	});
}

// 打开快捷菜单
export function showMenuTools() {
	$store('modal').$patch((state) => {
		state.menu = true;
	});
}

// 关闭快捷菜单
export function closeMenuTools() {
	$store('modal').$patch((state) => {
		state.menu = false;
	});
}

// 发送短信验证码  60秒
export function getSmsCode(event, mobile) {
	const modalStore = $store('modal');
	const lastSendTimer = modalStore.lastTimer[event];
	if (typeof lastSendTimer === 'undefined') {
		$helper.toast('短信发送事件错误');
		return;
	}

	const duration = dayjs().unix() - lastSendTimer;
	const canSend = duration >= 60;
	if (!canSend) {
		$helper.toast('请稍后再试');
		return;
	}
	// 只有 mobile 非空时才校验。因为部分场景（修改密码），不需要输入手机
	if (mobile && !test.mobile(mobile)) {
		$helper.toast('手机号码格式不正确');
		return;
	}

	// 发送验证码 + 更新上次发送验证码时间
	let scene = -1;
	switch (event) {
		case 'resetPassword':
			scene = 4;
			break;
		case 'changePassword':
			scene = 3;
			break;
		case 'changeMobileOld':
			scene = 2;
			break;
		case 'changeMobileNew':
			scene = 5;
			break;
		case 'smsLogin':
			scene = 1;
			break;
		case 'consumptionTransfers':
			scene = 11;
			break;
		case 'zeroBuy':
			scene = 12;
			break;
	}
	AuthUtil.sendSmsCode(mobile, scene).then((res) => {
		if (res.code === 0) {
			modalStore.$patch((state) => {
				state.lastTimer[event] = dayjs().unix();
			});
		}
	});
}

// 获取短信验证码倒计时 -- 60秒
export function getSmsTimer(event, mobile = '') {
	const modalStore = $store('modal');
	const lastSendTimer = modalStore.lastTimer[event];
	if (typeof lastSendTimer === 'undefined') {
		$helper.toast('短信发送事件错误');
		return;
	}
	const duration = ref(dayjs().unix() - lastSendTimer - 60);
	const canSend = duration.value >= 0;
	if (canSend) {
		return '获取验证码';
	}

	if (!canSend) {
		setTimeout(() => {
			duration.value++;
		}, 1000);
		return -duration.value.toString() + ' 秒';
	}
}

// 记录广告弹框历史
export function saveAdvHistory(adv) {
	const modal = $store('modal');

	modal.$patch((state) => {
		if (!state.advHistory.includes(adv.imgUrl)) {
			state.advHistory.push(adv.imgUrl);
		}
	});
}