import { useCallback, useMemo } from 'react';

import { useTranslation } from 'react-i18next';
import { matchPath, useLocation, useParams } from 'react-router-dom';

import { getNavMenuItems, type NavMenuItem } from '@/utils/navUtils';

/**
 * Topbar 业务逻辑 Hook
 * 处理菜单项获取、路由匹配、翻译等业务逻辑
 */
export function useService() {
    const { t } = useTranslation();
    const location = useLocation();
    // SSG 模式路由含 :lang 段 → lang 有值，菜单生成 /<lang>/xxx；
    // CSR 模式路由无 :lang 段 → lang 为 undefined，菜单生成无前缀的 /xxx。
    // 两种模式共用本组件，getNavMenuItems 依据 lang 是否存在自动适配。
    const { lang } = useParams();

    const menuItems = useMemo(() => getNavMenuItems(lang), [lang]);

    const isActive = useCallback(
        (path: string): boolean => {
            return matchPath({ path, end: false }, location.pathname) !== null;
        },
        [location.pathname]
    );

    const getMenuItemLabel = useCallback(
        (item: NavMenuItem): string => {
            // getNavMenuItems 中已经设置了 locale，item.locale 总是存在
            return t(item.locale!, { defaultValue: item.name });
        },
        [t]
    );

    return {
        menuItems,
        isActive,
        getMenuItemLabel,
    };
}
