// 友情链接功能注入脚本（扩展版）
// 说明：由 BrowserExtBuild 打包时通过 <script src="../src/friendlink.js"> 引入（扩展页 MV3 CSP 限制，不能内联脚本）
// 与网站版 app/static/friendlink.js 的差异：iframe 使用绝对地址，指向站点域名（扩展内相对路径会解析为 chrome-extension://，无法访问）
// 功能：1) 左侧菜单插入友链图标  2) 点击图标 → iframe 弹窗嵌入站点友链页面
(function () {
    'use strict';

    var FRIEND_LINK_ICON = '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="pointer-events:none;"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>';

    /* 打开友链弹窗（iframe 嵌入站点 /friendlinks?embedded=1） */
    function openFriendLinkModal() {
        var isMobile = window.innerWidth < 768;
        var overlay = document.createElement('div');
        overlay.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:999999;display:flex;align-items:center;justify-content:center;';
        overlay.onclick = function (e) { if (e.target === overlay) overlay.remove(); };

        var box = document.createElement('div');
        box.style.cssText = isMobile
            ? 'position:relative;width:100%;height:100%;background:#fff;overflow:hidden;'
            : 'position:relative;width:92%;max-width:960px;height:85vh;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 4px 24px rgba(0,0,0,.12);border:1px solid #E5E7EB;';

        var closeBtn = document.createElement('button');
        closeBtn.style.cssText = 'position:absolute;top:' + (isMobile ? '8px' : '10px') + ';right:' + (isMobile ? '12px' : '14px') + ';width:17px;height:17px;border:none;background:#ff5f57;border-radius:50%;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;flex-shrink:0;z-index:10;';
        closeBtn.innerHTML = '<span style="opacity:0;transition:opacity .15s;font-size:10px;line-height:1;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;width:100%;height:100%;">×</span>';
        closeBtn.onmouseenter = function () { closeBtn.firstElementChild.style.opacity = '1'; };
        closeBtn.onmouseleave = function () { closeBtn.firstElementChild.style.opacity = '0'; };
        closeBtn.onclick = function (e) { e.stopPropagation(); overlay.remove(); };
        box.appendChild(closeBtn);

        var iframe = document.createElement('iframe');
        iframe.style.cssText = 'width:100%;height:100%;border:none;background:#fff;';
        iframe.src = 'https://tab.qingdaohang.cn/friendlinks?embedded=1';
        box.appendChild(iframe);

        overlay.appendChild(box);
        document.body.appendChild(overlay);
    }
    // 暴露全局函数，供 customAbout 等其他入口调用弹窗
    window.openFriendLinkModal = openFriendLinkModal;

    /* 拦截页面中指向 /friendlinks 的链接（如 customAbout 入口），改为弹窗打开（扩展内相对链接不存在，仅为兼容保留） */
    function hijackFriendLinkLinks() {
        var links = document.querySelectorAll('a[href="/friendlinks"],a[href="/friendlinks/"],a[href$="?embedded=1"]');
        for (var i = 0; i < links.length; i++) {
            if (links[i].getAttribute('data-friendlink-hooked')) continue;
            links[i].setAttribute('data-friendlink-hooked', '1');
            links[i].onclick = function (e) { e.preventDefault(); openFriendLinkModal(); };
        }
    }

    /* 在左侧菜单底部按钮组插入友链图标（打赏按钮前） */
    function injectFriendLinkIcon() {
        // 已存在则跳过，避免重复
        if (document.querySelector('[data-friendlink-btn]') || document.querySelector('[title="友情链接"]')) return;

        var ref = document.querySelector('[title="打赏"]');
        // 打赏按钮关闭时（ds_status != 1），用底部按钮组特征定位容器
        if (!ref) {
            var divs = document.querySelectorAll('div');
            for (var i = 0; i < divs.length; i++) {
                var el = divs[i];
                if (!el.children.length) continue;
                var st = window.getComputedStyle(el);
                if (st.position === 'absolute' && st.bottom === '20px' && st.flexDirection === 'column' && st.alignItems === 'center') {
                    ref = el.firstElementChild;
                    break;
                }
            }
        }
        if (!ref || !ref.parentNode) return;

        var btn = document.createElement('div');
        btn.setAttribute('data-friendlink-btn', '1');
        btn.setAttribute('title', '友情链接');
        btn.className = 'p-2 hover:bg-opacity-20 hover:bg-white text-gray-300 flex justify-center items-center rounded-lg mb-2';
        btn.innerHTML = FRIEND_LINK_ICON;
        btn.onclick = openFriendLinkModal;
        ref.parentNode.insertBefore(btn, ref);
    }

    // 统一观察 DOM 变化，触发图标注入和链接拦截
    var observer = new MutationObserver(function () { injectFriendLinkIcon(); hijackFriendLinkLinks(); });
    observer.observe(document.documentElement, { childList: true, subtree: true });
    injectFriendLinkIcon();
    hijackFriendLinkLinks();

    /* 监听友链 iframe 弹窗发来的「打开登录」请求，
     * 模拟点击未登录头像占位（img[alt="logo"] 的父级），触发主应用 openLogin 登录弹窗 */
    window.addEventListener('message', function (e) {
        if (!e.data || e.data.type !== 'friendlink-open-login') return;
        var avatar = document.querySelector('img[alt="logo"]');
        var target = avatar && avatar.parentElement;
        if (target) target.click();
    });
})();
