export function truncate(value: string, length: number) { if (value.length > length) { return value.substring(0, length) + '...' } else { return value } } const language = localStorage.getItem('language') || 'en-us' export function abbreviate(text: number) { return Intl.NumberFormat(language, { //@ts-ignore notation: 'compact', maximumFractionDigits: 1 }).format(text) } const https = import.meta.env.SAFETWITCH_HTTPS.slice() === 'true' const protocol = https ? 'https://' : 'http://' const rootBackendUrl = `${protocol}${import.meta.env.SAFETWITCH_BACKEND_DOMAIN}/` export async function getEndpoint(endpoint: string) { const res = await fetch(rootBackendUrl + endpoint, { method: 'GET', headers: { 'Accept-Language': language } }) const rawData = await res.json() if (!res.ok) { throw res } if (rawData.status !== 'ok') { throw rawData } const data = rawData.data return data } export function getDefaultSettings() { return { version: import.meta.env.SAFETWITCH_TAG, audioOnly: { name: 'Audio Only', selected: false, type: 'checkbox' }, defaultQuality: { name: 'Default Quality', options: ['160p', '360p', '480p', '720p', '1080p'], selected: '480p', type: 'option' }, chatVisible: { name: 'Hide Chat', selected: false, type: 'checkbox' } } } export function getSetting(key: string): boolean | string { const storage = localStorage.getItem('settings') let parsed if (!storage) { parsed = getDefaultSettings() } else { parsed = JSON.parse(storage) } return parsed[key].selected } export function chatVisible() { const p = getSetting('chatVisible') // Flip becuase on the setting page it's // displayed as "Hide Chat", but the value // is chatVisible return !p }