2023-01-15 21:23:47 +09:00
|
|
|
import { DEFAULT_FONT_SIZE } from '~/constants'
|
2023-01-13 02:52:52 +09:00
|
|
|
|
|
|
|
export type FontSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
|
2023-01-13 03:29:10 +09:00
|
|
|
export type ColorMode = 'light' | 'dark' | 'system'
|
2023-01-13 02:52:52 +09:00
|
|
|
|
2023-01-15 23:19:22 +09:00
|
|
|
export interface PreferencesSettings {
|
2023-01-13 02:52:52 +09:00
|
|
|
hideBoostCount: boolean
|
|
|
|
hideFavoriteCount: boolean
|
|
|
|
hideFollowerCount: boolean
|
2023-01-15 23:19:22 +09:00
|
|
|
experimentalVirtualScroller: boolean
|
|
|
|
experimentalGitHubCards: boolean
|
|
|
|
experimentalUserPicker: boolean
|
2023-01-13 02:52:52 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface UserSettings {
|
2023-01-15 23:19:22 +09:00
|
|
|
preferences: Partial<PreferencesSettings>
|
2023-01-13 02:52:52 +09:00
|
|
|
colorMode?: ColorMode
|
|
|
|
fontSize: FontSize
|
|
|
|
language: string
|
2023-01-14 21:58:32 +09:00
|
|
|
zenMode: boolean
|
2023-01-13 02:52:52 +09:00
|
|
|
}
|
|
|
|
|
2023-01-15 21:23:47 +09:00
|
|
|
export function getDefaultLanguage(languages: string[]) {
|
|
|
|
if (process.server)
|
|
|
|
return 'en-US'
|
|
|
|
return matchLanguages(languages, navigator.languages) || 'en-US'
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getDefaultUserSettings(locales: string[]): UserSettings {
|
2023-01-13 02:52:52 +09:00
|
|
|
return {
|
2023-01-15 21:23:47 +09:00
|
|
|
language: getDefaultLanguage(locales),
|
2023-01-13 02:52:52 +09:00
|
|
|
fontSize: DEFAULT_FONT_SIZE,
|
2023-01-14 21:58:32 +09:00
|
|
|
zenMode: false,
|
2023-01-15 23:19:22 +09:00
|
|
|
preferences: {},
|
2023-01-13 02:52:52 +09:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-15 23:19:22 +09:00
|
|
|
export const DEFAULT__PREFERENCES_SETTINGS: PreferencesSettings = {
|
2023-01-13 02:52:52 +09:00
|
|
|
hideBoostCount: false,
|
|
|
|
hideFavoriteCount: false,
|
|
|
|
hideFollowerCount: false,
|
|
|
|
experimentalVirtualScroller: true,
|
|
|
|
experimentalGitHubCards: true,
|
|
|
|
experimentalUserPicker: true,
|
|
|
|
}
|