- Delete the xray settings page (routes/menu/title), geodata UI/service, XraySettingController/Service and routing-sync write paths; the stored xrayTemplateConfig row loses its last readers (GetXrayConfigTemplate now returns the embedded factory template; B1 already deleted the row). - Settings GeneralTab gains the four trafficStatsSwitches switches (settings.trafficStatsSwitches, B1) with the dual warning copy; entity AllSetting carries the key end to end (TestTrafficStatsSwitchesPlumbing). - Tag-directory consumers (panelOutbound, mtproto egress, node/host outbound pickers) move from POST /xray/ to GET /server/outboundDirectory. - Shared Mux/Sockopt forms and balancer helpers relocated to lib/xray; converter preserves sniffing ips/domains exclusions into the panel sidecar instead of dropping them (B2 gap closed by retention). - Freedom final-rules DB fix seeders retired; getDefaultJsonConfig endpoint removed (no in-repo consumer); locales pruned to referenced keys (pages.xray 331 -> 68) plus the five new settings keys.
25 lines
677 B
TypeScript
25 lines
677 B
TypeScript
import { useEffect } from 'react';
|
|
import { useLocation } from 'react-router';
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
const TITLE_KEYS: Record<string, string> = {
|
|
'/': 'menu.dashboard',
|
|
'/inbounds': 'menu.inbounds',
|
|
'/clients': 'menu.clients',
|
|
'/nodes': 'menu.nodes',
|
|
'/hosts': 'menu.hosts',
|
|
'/settings': 'menu.settings',
|
|
};
|
|
|
|
export function usePageTitle() {
|
|
const { pathname } = useLocation();
|
|
const { t } = useTranslation();
|
|
|
|
useEffect(() => {
|
|
const key = TITLE_KEYS[pathname];
|
|
const title = key ? t(key) : 'L-UI';
|
|
const host = window.location.hostname;
|
|
document.title = host ? `${host} - ${title}` : title;
|
|
}, [pathname, t]);
|
|
}
|