|
|
|
@ -1,7 +1,59 @@ |
|
|
|
|
// @ts-check
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @typedef {[code: string, name: string, localName: string]} InitialStateLanguage |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @typedef InitialStateMeta |
|
|
|
|
* @property {string} access_token |
|
|
|
|
* @property {boolean=} advanced_layout |
|
|
|
|
* @property {boolean} auto_play_gif |
|
|
|
|
* @property {boolean} activity_api_enabled |
|
|
|
|
* @property {string} admin |
|
|
|
|
* @property {boolean=} boost_modal |
|
|
|
|
* @property {boolean} crop_images |
|
|
|
|
* @property {boolean=} delete_modal |
|
|
|
|
* @property {boolean=} disable_swiping |
|
|
|
|
* @property {boolean} display_media |
|
|
|
|
* @property {string} domain |
|
|
|
|
* @property {boolean=} expand_spoilers |
|
|
|
|
* @property {boolean} limited_federation_mode |
|
|
|
|
* @property {string} locale |
|
|
|
|
* @property {string | null} mascot |
|
|
|
|
* @property {string=} me |
|
|
|
|
* @property {boolean} profile_directory |
|
|
|
|
* @property {boolean} registrations_open |
|
|
|
|
* @property {boolean} reduce_motion |
|
|
|
|
* @property {string} repository |
|
|
|
|
* @property {boolean} search_enabled |
|
|
|
|
* @property {string} source_url |
|
|
|
|
* @property {string} streaming_api_base_url |
|
|
|
|
* @property {boolean} timeline_preview |
|
|
|
|
* @property {string} title |
|
|
|
|
* @property {boolean} trends |
|
|
|
|
* @property {boolean} unfollow_modal |
|
|
|
|
* @property {boolean} use_blurhash |
|
|
|
|
* @property {boolean=} use_pending_items |
|
|
|
|
* @property {string} version |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @typedef InitialState |
|
|
|
|
* @property {InitialStateLanguage[]} languages |
|
|
|
|
* @property {InitialStateMeta} meta |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
const element = document.getElementById('initial-state'); |
|
|
|
|
/** @type {InitialState | undefined} */ |
|
|
|
|
const initialState = element && JSON.parse(element.textContent); |
|
|
|
|
|
|
|
|
|
const getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop]; |
|
|
|
|
/** |
|
|
|
|
* @template {keyof InitialStateMeta} K |
|
|
|
|
* @param {K} prop |
|
|
|
|
* @returns {InitialStateMeta[K] | undefined} |
|
|
|
|
*/ |
|
|
|
|
const getMeta = (prop) => initialState?.meta && initialState.meta[prop]; |
|
|
|
|
|
|
|
|
|
export const domain = getMeta('domain'); |
|
|
|
|
export const reduceMotion = getMeta('reduce_motion'); |
|
|
|
@ -27,6 +79,8 @@ export const showTrends = getMeta('trends'); |
|
|
|
|
export const title = getMeta('title'); |
|
|
|
|
export const cropImages = getMeta('crop_images'); |
|
|
|
|
export const disableSwiping = getMeta('disable_swiping'); |
|
|
|
|
export const languages = initialState && initialState.languages; |
|
|
|
|
export const timelinePreview = getMeta('timeline_preview'); |
|
|
|
|
export const activityApiEnabled = getMeta('activity_api_enabled'); |
|
|
|
|
export const languages = initialState?.languages; |
|
|
|
|
|
|
|
|
|
export default initialState; |
|
|
|
|