import { App } from '@capacitor/app';
import { Capacitor } from '@capacitor/core';

/**
 * Derin bağlantı şeması: onoxpanel://
 *
 * Örnekler:
 *   onoxpanel://accounts/123      → /admin/accounts/123
 *   onoxpanel://login             → /login
 *   onoxpanel://dashboard         → /admin/dashboard
 */

export type DeepLinkHandler = (path: string, params: URLSearchParams) => void;

const handlers: DeepLinkHandler[] = [];

export function addDeepLinkHandler(handler: DeepLinkHandler): void {
    handlers.push(handler);
}

export function removeDeepLinkHandler(handler: DeepLinkHandler): void {
    const idx = handlers.indexOf(handler);
    if (idx > -1) handlers.splice(idx, 1);
}

function dispatchDeepLink(url: string): void {
    try {
        const parsed = new URL(url);
        // onoxpanel://accounts/123 → pathname = //accounts/123 (iki eğik çizgi), temizle
        const path = parsed.pathname.replace(/^\/\//, '/') || parsed.host;
        const params = parsed.searchParams;

        // Kayıtlı handler'ları çağır
        for (const handler of handlers) {
            handler(path, params);
        }

        // Varsayılan davranış: Vue Router'a bırak
        if (handlers.length === 0) {
            window.location.assign(path + (parsed.search || ''));
        }
    } catch (err) {
        console.error('[ONOX DeepLink] URL ayrıştırma hatası:', url, err);
    }
}

export function initDeepLinking(): void {
    if (!Capacitor.isNativePlatform()) return;

    // Uygulama zaten açıkken gelen derin bağlantı
    App.addListener('appUrlOpen', (event) => {
        dispatchDeepLink(event.url);
    });

    // Uygulama kapalıyken açılan derin bağlantı (launch URL)
    App.getLaunchUrl().then((result) => {
        if (result?.url) {
            dispatchDeepLink(result.url);
        }
    });
}
