import { initializeApp } from "./main.common"; import { App } from "@capacitor/app"; import router from "./router"; import { handleApiError } from "./services/api"; import { loadPlanWithRetry } from "./services/plan"; import { Capacitor } from '@capacitor/core'; console.log("[Capacitor] Starting initialization"); console.log("[Capacitor] Platform:", process.env.VITE_PLATFORM); const app = initializeApp(); // Store initial deep link if app is not ready let pendingDeepLink: string | null = null; // Initialize API error handling window.addEventListener('unhandledrejection', (event) => { if (event.reason?.response) { handleApiError(event.reason, event.reason.config?.url || 'unknown'); } }); // Create reusable handler function const handleDeepLink = async (data: { url: string }) => { try { console.log("[Capacitor Deep Link] START Handler"); console.log("[Capacitor Deep Link] Received URL:", data.url); // Wait for router to be ready await router.isReady(); // Parse the custom URL scheme const parts = data.url.split('://'); if (parts.length !== 2) { throw new Error('Invalid URL format'); } const path = parts[1]; // This will be "claim/01JMAAFZRNSRTQ0EBSD70A8E1H" console.log("[Capacitor Deep Link] Parsed path:", path); // Map parameterized routes const paramRoutes = { 'claim': /^claim\/(.+)$/, // Updated pattern without leading slash }; // Check if path matches any parameterized route for (const [routeName, pattern] of Object.entries(paramRoutes)) { const match = path.match(pattern); if (match) { console.log(`[Capacitor Deep Link] Matched route: ${routeName}, param: ${match[1]}`); await router.replace({ name: routeName, params: { id: match[1] } }); return; } } await router.replace('/' + path); } catch (error) { console.error("[Capacitor Deep Link] Error:", error); handleApiError(error, 'deep-link'); } }; // Register listener App.addListener("appUrlOpen", handleDeepLink); console.log("[Capacitor] Mounting app"); app.mount("#app"); console.log("[Capacitor] App mounted");