import { clearStoredUserProfile } from './mobile-profile.js'; const KEY = 'insuite_mobile_token'; const INSTALLATION_KEY = 'insuite_mobile_installation_id'; const TRIAL_DEVICE_KEY = 'insuite_mobile_trial_device_id'; const TRIAL_START_KEY = 'insuite_mobile_trial_started_at'; const TRIAL_DURATION_MS = 14 * 24 * 60 * 60 * 1000; function parseStoredTimestamp(value) { const parsed = Number(value); return Number.isFinite(parsed) && parsed > 0 ? parsed : 0; } function createInstallationId() { if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') { return crypto.randomUUID(); } return `install_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`; } export function ensureUsageTrialInitialized() { let installationId = localStorage.getItem(INSTALLATION_KEY) || ''; let startedAt = parseStoredTimestamp(localStorage.getItem(TRIAL_START_KEY)); if (!installationId) { installationId = createInstallationId(); localStorage.setItem(INSTALLATION_KEY, installationId); startedAt = 0; } if (!startedAt) { startedAt = Date.now(); localStorage.setItem(TRIAL_START_KEY, String(startedAt)); } return { installationId, startedAt }; } export function setUsageTrialDeviceId(deviceId) { const normalized = String(deviceId || '').trim(); if (!normalized) return ''; localStorage.setItem(TRIAL_DEVICE_KEY, normalized); return normalized; } export function getUsageTrialDeviceId() { return String(localStorage.getItem(TRIAL_DEVICE_KEY) || '').trim(); } export function setUsageTrialStart(startedAt) { const parsed = parseStoredTimestamp(startedAt); if (!parsed) return 0; localStorage.setItem(TRIAL_START_KEY, String(parsed)); return parsed; } export function getUsageTrialState() { const { installationId, startedAt } = ensureUsageTrialInitialized(); const deviceId = getUsageTrialDeviceId(); const expiresAt = startedAt + TRIAL_DURATION_MS; const remainingMs = Math.max(0, expiresAt - Date.now()); const expired = remainingMs <= 0; return { installationId, deviceId, startedAt, expiresAt, remainingMs, expired, totalDurationMs: TRIAL_DURATION_MS, }; } export function isUsageTrialExpired() { return getUsageTrialState().expired; } export function getToken() { if (isUsageTrialExpired()) { clearToken(); return ''; } return localStorage.getItem(KEY) || ''; } export function setToken(token) { if (isUsageTrialExpired()) { clearToken(); return; } const previousToken = localStorage.getItem(KEY) || ''; if (previousToken && previousToken !== token) { clearStoredUserProfile(); } localStorage.setItem(KEY, token); } export function clearToken() { localStorage.removeItem(KEY); clearStoredUserProfile(); }