import audioPlay from "./audioPlay"; import MathUtils from "../../../class/utils/MathUtils"; import Alert from "../../../class/utils/Alert"; import InfoUtils from "../../../class/utils/InfoUtils"; import WuhuConfig from "../../../class/WuhuConfig"; import Log from "../../../class/Log"; /** * @deprecated */ export default function BuyBeer() { // 正在通知 let is_notified = false; let time: number = WuhuConfig.get('_15AlarmTime') || 30; let loop: BeerMonitorLoop = {}; // 循环id let started = null; loop.start = () => { if (started) { Log.info('啤酒助手已在运行'); return; } started = setInterval(async () => { // 海外取消提醒 let { isTravelling, isAbroad } = await InfoUtils.getInstance().getUserState(); if (isTravelling || isAbroad) { loop.stop(); return; } let dt = new Date(); // 已选当天不提醒 const now = [dt.getUTCFullYear(), dt.getUTCMonth(), dt.getUTCDate()]; const ignore_date = WuhuConfig.get('_15_alarm_ignore') || '{}'; if (JSON.stringify(now) === JSON.stringify(ignore_date)) return; // 正常提醒 let m = 14 - (dt.getMinutes() % 15); let s = 60 - dt.getSeconds(); if (m === 0 && s < time) { // 如从通知点开,则本次通知跳过 if (location.href.includes('#clickfromnotify')) { is_notified = true; location.hash = ''; return; } // 本次已通知 if (is_notified) return; is_notified = true; // 发送通知 const notify = new Alert(notify_html, { timeout: 30, sysNotify: true, }); notify.getElement().querySelector('.wh-notify-msg button').addEventListener('click', () => loop.skip_today); notify.getElement().addEventListener('click', ev => { if ((ev.target as HTMLElement).tagName.toLowerCase() === 'a') { // notify.sys_notify.close(); notify.close(); } }); window.setTimeout(audioPlay, 800); window.setTimeout(audioPlay, 800 * 2); window.setTimeout(audioPlay, 800 * 3); } else { is_notified = false; } }, 1000); }; loop.stop = () => { if (started) { clearInterval(started); started = null; } }; loop.set_time = (t) => time = t; loop.status = () => started ? '已启动' : '未启动'; loop.is_running = () => !!started; let mathUtils: MathUtils = MathUtils.getInstance(); let notify_html = `啤酒小助手
提醒您:还有不到 50 秒 NPC 的商品就要刷新了,啤酒血包要抢的可以准备咯。
【啤酒店】 【血包店】` loop.skip_today = () => { const date = new Date(); WuhuConfig.set('_15_alarm_ignore', [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()], false); // 通知 const notify = new Alert(`明早8点前将不再提醒 `); // 通知中的取消按钮 notify.getElement().querySelector('.wh-notify-msg button').addEventListener('click', () => WuhuConfig.set('_15_alarm_ignore', undefined)); }; return loop; } export interface BeerMonitorLoop { start?: Function; stop?: Function; set_time?: Function; status?: Function; is_running?: Function; skip_today?: Function; }