import { reactive } from 'vue'; import { isCurrentSession } from '@/utils/session-context.js'; import { getShanghaiDay, normalizeExpiryReminder } from '@/utils/expiry-reminder.js'; const receivedReminders = new Set(); const state = reactive({ assetInfo: null, deviceRealtime: null, currentPackage: null, expiryReminder: null }); export const useAssetStore = () => { const receiveExpiryReminder = (context, value) => { const reminder = normalizeExpiryReminder(value); if (!reminder || !isCurrentSession(context)) return; const day = getShanghaiDay(); const key = JSON.stringify([context.token, context.identifier, day]); if (receivedReminders.has(key)) return; receivedReminders.add(key); state.expiryReminder = { ...context, day, reminder, shown: false }; }; const markExpiryReminderShown = () => { if (state.expiryReminder) state.expiryReminder.shown = true; }; const dismissExpiryReminder = () => { state.expiryReminder = null; }; const setAssetInfo = (info) => { state.assetInfo = info; }; const setDeviceRealtime = (realtime) => { state.deviceRealtime = realtime; }; const setCurrentPackage = (pkg) => { state.currentPackage = pkg; }; const clearAsset = () => { state.assetInfo = null; state.deviceRealtime = null; state.currentPackage = null; state.expiryReminder = null; receivedReminders.clear(); }; return { state, setAssetInfo, setDeviceRealtime, setCurrentPackage, receiveExpiryReminder, markExpiryReminderShown, dismissExpiryReminder, clearAsset }; };