/**
 * 브라우저 감지 및 유틸리티 함수 모음
 */

export const isClient = typeof window !== 'undefined';

/**
 * 현재 브라우저가 인앱 브라우저(In-App Browser)인지 감지합니다.
 * 주요 대상: 카카오톡, 네이버, 라인, 페이스북, 인스타그램 등
 */
export function isInAppBrowser(): boolean {
    if (!isClient) return false;

    const userAgent = navigator.userAgent.toLowerCase();
    const targetBrowsers = [
        'kakao', // KakaoTalk
        'naver', // Naver App
        'line', // Line
        'instagram', // Instagram
        'facebook', // Facebook App
        'wv', // Android WebView (generic)
    ];

    return targetBrowsers.some((browser) => userAgent.includes(browser));
}

/**
 * 인앱 브라우저에서 탈출하여 시스템 기본 브라우저(Chrome, Safari)로 이동을 시도합니다.
 * 주로 Android 환경에서 intent scheme을 활용합니다.
 */
export function redirectToExternalBrowser() {
    if (!isClient) return;

    const userAgent = navigator.userAgent.toLowerCase();
    const currentUrl = window.location.href;

    // Android: Chrome으로 강제 실행 시도 (Intent Scheme)
    if (/android/i.test(userAgent)) {
        // intent:// 스킴 구성
        // scheme=https; package=com.android.chrome; end;
        // 만약 Chrome이 없다면 마켓으로 이동하지 않고 브라우저 선택창이 뜨도록 유도할 수도 있음
        const intentUrl = `intent://${currentUrl.replace(/^https?:\/\//i, '')}#Intent;scheme=https;package=com.android.chrome;end;`;
        window.location.href = intentUrl;
    } else if (/iphone|ipad|ipod/i.test(userAgent)) {
        // iOS: 강제 탈출이 어렵거나 정책상 막혀있을 수 있음.
        // 일부 앱(카카오톡 등)은 특정 스킴을 지원하기도 하지만,
        // 가장 확실한 방법은 사용자에게 "사파리로 열기"를 안내하는 것입니다.
        // 따라서 여기서는 별도 동작을 하지 않고 호출한 쪽에서 UI 처리를 하도록 합니다.
        // (필요 시 클립보드 복사 등을 수행)
    }
}
