mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-03-30 18:59:59 +08:00
### What problem does this PR solve? - Unify top level pages structure - Standardize locale language codes (BCP 47) and time zones (IANA tz) > **Note:** > Newly created user info brings non-standard default values `timezone: "UTC+8\tAsia/Shanghai"` and `language: "English"`. ### Type of change - [x] Refactoring
61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
export const UserSettingBaseKey = 'user-setting';
|
|
|
|
export enum UserSettingRouteKey {
|
|
Profile = 'profile',
|
|
Password = 'password',
|
|
Model = 'model',
|
|
System = 'system',
|
|
Api = 'api',
|
|
Team = 'team',
|
|
MCP = 'mcp',
|
|
Logout = 'logout',
|
|
}
|
|
|
|
export const ProfileSettingBaseKey = 'profile-setting';
|
|
|
|
export enum ProfileSettingRouteKey {
|
|
Profile = 'profile',
|
|
Plan = 'plan',
|
|
Model = 'model',
|
|
System = 'system',
|
|
Api = 'api',
|
|
Team = 'team',
|
|
Prompt = 'prompt',
|
|
Chunk = 'chunk',
|
|
Logout = 'logout',
|
|
}
|
|
|
|
export const TimezoneList = Object.freeze(
|
|
Intl.supportedValuesOf('timeZone')
|
|
.map((tz) => {
|
|
const dtf = new Intl.DateTimeFormat('en-US', {
|
|
hourCycle: 'h24',
|
|
timeZone: tz,
|
|
timeZoneName: 'longOffset',
|
|
});
|
|
|
|
const offsetString = dtf.formatToParts(new Date()).at(-1)!.value;
|
|
const match = /^GMT(?<sign>\+|-)(?<hours>\d{2}):(?<minutes>\d{2})$/i.exec(
|
|
offsetString,
|
|
);
|
|
|
|
const hours = match?.groups?.hours ?? '00';
|
|
const minutes = match?.groups?.minutes ?? '00';
|
|
const sign = match?.groups?.sign;
|
|
|
|
return Object.freeze({
|
|
name: `${offsetString} ${tz}`,
|
|
id: tz,
|
|
offset:
|
|
(sign === '-' ? -1 : 1) * (Number(hours) * 60 + Number(minutes)),
|
|
offsetString,
|
|
});
|
|
})
|
|
.sort((a, b) => a.offset - b.offset),
|
|
);
|
|
|
|
const navigatorTz = new Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
export const DEFAULT_TIMEZONE = TimezoneList.find(
|
|
(tz) => tz.name === navigatorTz,
|
|
)!;
|