import type { SelectProps } from 'antd'; import semver from 'semver'; import defualtLocaleOptions from '@/../locales/options.json'; import { homepage, version } from '@/../package.json'; import type { WebuiSetting } from './initialState'; export const DEFAULT_VERSION: string = version; export const DEFAULT_LOCALE_OPTIONS: SelectProps['options'] = defualtLocaleOptions; export const getSetting = async(): Promise => { const res = await fetch('/lobe/config'); const data = (await res.json()) as WebuiSetting; if (!data || (data as any)?.empty) return undefined; return data; }; export const postSetting = async(setting: WebuiSetting) => { await fetch('/lobe/config', { body: JSON.stringify(setting), headers: { 'Content-Type': 'application/json', }, method: 'POST', }); }; export const getVersion = async(): Promise => { const res = await fetch('/lobe/package'); const data = (await res.json()) as any; if (!data || data.empty || !data.version) return DEFAULT_VERSION; return data.version; }; export const getLocaleOptions = async(): Promise => { const res = await fetch('/lobe/locales/options'); const data = (await res.json()) as SelectProps['options']; if (!data || data?.length === 0) return DEFAULT_LOCALE_OPTIONS; return data; }; export const getLatestVersion = async(): Promise => { const res = await fetch( `https://api.github.com/repos/${homepage.replace('https://github.com/', '')}/releases/latest`, ); const data = (await res.json()) as any; if (!data || !data.tag_name) return DEFAULT_VERSION; return semver.clean(data.tag_name as string) || DEFAULT_VERSION; };