safetwitch/src/settingsManager.ts

143 lines
4.7 KiB
TypeScript
Raw Normal View History

2023-08-19 20:37:11 -04:00
export const setLanguage = (selectedLanguage: string, i18n: any) => {
// Locales and languages in arrays to match them
2023-09-25 17:33:53 -04:00
const locales = ['en-US', 'es-ES', 'nl-NL', 'pt-PT', 'fa-IR', 'he-IL', 'ru-RU', 'ko-KR', 'cs-CZ', 'pl-PL', 'it-IT', 'fr-FR']
const languages = ['English', 'Español', 'Nederlands', 'Português', 'فارسی', 'עִבְרִית', 'Русский', '한국어', 'Česky', 'Polski', 'Italia', 'Français']
2023-08-19 20:37:11 -04:00
const locale = locales[languages.indexOf(selectedLanguage)]
localStorage.setItem("language", locale)
i18n.locale = locale
}
2023-08-18 14:23:59 -04:00
export function getDefaultSettings() {
return {
version: import.meta.env.SAFETWITCH_TAG,
2023-09-25 17:25:42 -04:00
audioOnly: {
name: 'audioOnly',
selected: false,
type: 'checkbox'
},
defaultQuality: {
2023-08-19 20:37:11 -04:00
name: 'defaultQuality',
options: ['160p', '360p', '480p', '720p', '1080p'],
selected: '480p',
type: 'option'
},
2023-08-19 20:37:11 -04:00
language: {
name: 'language',
2023-09-25 17:33:53 -04:00
options: ['English', 'Español', 'Nederlands', 'Português', 'فارسی', 'עִבְרִית', 'Русский', '한국어', 'Česky', 'Polski', 'Italia', 'Français'],
2023-08-19 20:37:11 -04:00
selected: 'English',
type: 'option'
},
chatVisible: {
2023-08-19 20:37:11 -04:00
name: 'chatVisible',
selected: false,
type: 'checkbox'
2023-09-08 20:47:54 -04:00
},
streamTagsVisible: {
name: 'streamTagsVisible',
selected: true,
type: 'checkbox'
},
streamerAboutSectionVisible: {
name: 'streamerAboutSectionVisible',
selected: true,
type: 'checkbox'
2023-09-08 22:23:33 -04:00
},
autoplay: {
name: 'autoplay',
selected: false,
type: 'checkbox'
}
2023-08-18 14:23:59 -04:00
}
}
export function syncUserSettings() {
const defaultSettings = getDefaultSettings()
2023-09-16 18:13:28 -04:00
const userSettings = localStorage.getItem('settings')
if (!userSettings) return
const parsedUserSettings = JSON.parse(userSettings)
2023-09-25 17:25:42 -04:00
if (parsedUserSettings.version === import.meta.env.SAFETWITCH_TAG) {
console.log('Settings up to date!')
return
} else {
console.log('Settings outdated... Migrating')
}
2023-09-25 17:25:42 -04:00
const synced = { ...defaultSettings, ...parsedUserSettings }
synced.version = import.meta.env.SAFETWITCH_TAG
localStorage.setItem('settings', JSON.stringify(synced))
console.log('Migrated!')
}
export function getSetting(key: string): boolean | string {
2023-08-18 14:23:59 -04:00
const storage = localStorage.getItem('settings')
let parsed
if (!storage) {
parsed = getDefaultSettings()
2023-08-18 14:23:59 -04:00
} else {
parsed = JSON.parse(storage)
2023-08-18 14:23:59 -04:00
}
2023-08-18 14:23:59 -04:00
return parsed[key].selected
}
2023-09-27 16:43:55 -04:00
export function getTheme() {
return localStorage.getItem('theme') || "light"
}
export function chatVisible() {
2023-08-18 14:23:59 -04:00
const p = getSetting('chatVisible')
// Flip becuase on the setting page it's
// displayed as "Hide Chat", but the value
// is chatVisible
return !p
}
2023-09-25 17:25:42 -04:00
export const themeList = [
{
// name your theme anything that could be a valid css class name
// remember what you named your theme because you will use it as a class to enable the theme
name: 'dark',
// put any overrides your theme has here
// just as if you were to extend tailwind's theme like normal https://tailwindcss.com/docs/theme#extending-the-default-theme
extend: {
colors: {
"primary": '#141515',
"secondary": '#1e1f1f',
"overlay0": '#282a2a',
"overlay1": '#323434',
"surface0": '#393B3B',
"surface1": '#3F4242',
"crust": '#0C0C0C',
"purple": '#D946EF',
"red": "#980C0C",
"neutral": "#bdbdbd",
"contrast": "white",
}
}
},
{
// name your theme anything that could be a valid css class name
// remember what you named your theme because you will use it as a class to enable the theme
name: 'light',
// put any overrides your theme has here
// just as if you were to extend tailwind's theme like normal https://tailwindcss.com/docs/theme#extending-the-default-theme
extend: {
colors: {
"primary": '#ebeaea',
"secondary": '#e1e0e0',
"overlay0": '#d7d5d5',
"overlay1": '#cdcbcb',
"surface0": '#c6c4c4',
"surface1": '#c0bdbd',
"crust": '#fafafa',
"purple": '#D946EF',
"red": "#e81304",
"neutral": "gray",
"contrast": "black",
}
}
}
]