2023-01-15 21:23:47 +09:00
|
|
|
import { DEFAULT_FONT_SIZE } from '~/constants'
|
2023-01-13 02:52:52 +09:00
|
|
|
|
2023-01-23 05:18:03 +09:00
|
|
|
export type FontSize = `${number}px`
|
|
|
|
|
|
|
|
// Temporary type for backward compatibility
|
|
|
|
export type OldFontSize = '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
|
|
|
|
2024-04-12 18:38:43 +09:00
|
|
|
export type NavButtonName = 'home' | 'search' | 'notification' | 'mention' | 'explore' | 'local' | 'federated' | 'moreMenu'
|
|
|
|
|
2023-01-15 23:19:22 +09:00
|
|
|
export interface PreferencesSettings {
|
2023-02-04 02:12:48 +09:00
|
|
|
hideAltIndicatorOnPosts: boolean
|
2024-04-04 19:27:52 +09:00
|
|
|
hideGifIndicatorOnPosts: boolean
|
2023-01-13 02:52:52 +09:00
|
|
|
hideBoostCount: boolean
|
2023-01-26 21:41:43 +09:00
|
|
|
hideReplyCount: boolean
|
2023-01-13 02:52:52 +09:00
|
|
|
hideFavoriteCount: boolean
|
|
|
|
hideFollowerCount: boolean
|
2023-01-21 19:19:03 +09:00
|
|
|
hideTranslation: boolean
|
2023-02-05 02:02:05 +09:00
|
|
|
hideUsernameEmojis: boolean
|
2023-01-25 05:46:33 +09:00
|
|
|
hideAccountHoverCard: boolean
|
2024-03-05 01:45:25 +09:00
|
|
|
hideTagHoverCard: boolean
|
2023-04-28 16:38:44 +09:00
|
|
|
hideNews: boolean
|
2023-01-17 21:55:36 +09:00
|
|
|
grayscaleMode: boolean
|
2023-01-20 03:33:50 +09:00
|
|
|
enableAutoplay: boolean
|
2024-01-18 17:18:49 +09:00
|
|
|
optimizeForLowPerformanceDevice: boolean
|
2023-02-15 19:34:23 +09:00
|
|
|
enableDataSaving: boolean
|
2023-02-01 23:43:27 +09:00
|
|
|
enablePinchToZoom: boolean
|
2023-05-07 00:52:33 +09:00
|
|
|
useStarFavoriteIcon: boolean
|
2023-04-23 19:21:33 +09:00
|
|
|
zenMode: boolean
|
2023-01-15 23:19:22 +09:00
|
|
|
experimentalVirtualScroller: boolean
|
|
|
|
experimentalGitHubCards: boolean
|
|
|
|
experimentalUserPicker: boolean
|
2023-11-07 18:57:44 +09:00
|
|
|
experimentalEmbeddedMedia: 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-29 21:18:49 +09:00
|
|
|
disabledTranslationLanguages: string[]
|
2023-01-16 19:26:19 +09:00
|
|
|
themeColors?: ThemeColors
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface ThemeColors {
|
|
|
|
'--theme-color-name': string
|
|
|
|
|
|
|
|
'--c-primary': string
|
|
|
|
'--c-primary-active': string
|
|
|
|
'--c-primary-light': string
|
|
|
|
'--c-primary-fade': string
|
|
|
|
'--c-dark-primary': string
|
|
|
|
'--c-dark-primary-active': string
|
|
|
|
'--c-dark-primary-light': string
|
|
|
|
'--c-dark-primary-fade': string
|
|
|
|
|
|
|
|
'--rgb-primary': string
|
|
|
|
'--rgb-dark-primary': string
|
2023-01-13 02:52:52 +09:00
|
|
|
}
|
|
|
|
|
2023-01-15 21:23:47 +09:00
|
|
|
export function getDefaultLanguage(languages: string[]) {
|
2024-02-25 01:46:14 +09:00
|
|
|
if (import.meta.server)
|
2023-01-15 21:23:47 +09:00
|
|
|
return 'en-US'
|
|
|
|
return matchLanguages(languages, navigator.languages) || 'en-US'
|
|
|
|
}
|
|
|
|
|
2023-01-15 23:19:22 +09:00
|
|
|
export const DEFAULT__PREFERENCES_SETTINGS: PreferencesSettings = {
|
2023-02-04 02:12:48 +09:00
|
|
|
hideAltIndicatorOnPosts: false,
|
2024-04-04 19:27:52 +09:00
|
|
|
hideGifIndicatorOnPosts: false,
|
2023-01-13 02:52:52 +09:00
|
|
|
hideBoostCount: false,
|
2023-01-26 21:41:43 +09:00
|
|
|
hideReplyCount: false,
|
2023-01-13 02:52:52 +09:00
|
|
|
hideFavoriteCount: false,
|
|
|
|
hideFollowerCount: false,
|
2023-01-21 19:19:03 +09:00
|
|
|
hideTranslation: false,
|
2023-02-05 02:02:05 +09:00
|
|
|
hideUsernameEmojis: false,
|
2023-01-25 05:46:33 +09:00
|
|
|
hideAccountHoverCard: false,
|
2024-03-05 01:45:25 +09:00
|
|
|
hideTagHoverCard: false,
|
2023-04-28 16:38:44 +09:00
|
|
|
hideNews: false,
|
2023-01-17 21:55:36 +09:00
|
|
|
grayscaleMode: false,
|
2023-01-20 03:33:50 +09:00
|
|
|
enableAutoplay: true,
|
2024-01-18 17:18:49 +09:00
|
|
|
optimizeForLowPerformanceDevice: false,
|
2023-02-15 19:34:23 +09:00
|
|
|
enableDataSaving: false,
|
2023-02-01 23:43:27 +09:00
|
|
|
enablePinchToZoom: false,
|
2023-05-07 00:52:33 +09:00
|
|
|
useStarFavoriteIcon: false,
|
2023-04-23 19:21:33 +09:00
|
|
|
zenMode: false,
|
2023-01-13 02:52:52 +09:00
|
|
|
experimentalVirtualScroller: true,
|
|
|
|
experimentalGitHubCards: true,
|
|
|
|
experimentalUserPicker: true,
|
2023-11-07 18:57:44 +09:00
|
|
|
experimentalEmbeddedMedia: false,
|
2023-01-13 02:52:52 +09:00
|
|
|
}
|
2023-04-23 19:21:33 +09:00
|
|
|
|
|
|
|
export function getDefaultUserSettings(locales: string[]): UserSettings {
|
|
|
|
return {
|
|
|
|
language: getDefaultLanguage(locales),
|
|
|
|
fontSize: DEFAULT_FONT_SIZE,
|
|
|
|
disabledTranslationLanguages: [],
|
|
|
|
preferences: DEFAULT__PREFERENCES_SETTINGS,
|
|
|
|
}
|
|
|
|
}
|