Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/improsocial/impro
An extensible Bluesky client for web impro.social
Something went wrong. Try again.
JavaScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879import { AppViewConfig, DEFAULT_APP_VIEW_CONFIGS } from "/js/config.js";
const STORAGE_KEY = "appview-config";const RESET_QUERY_PARAM = "reset-appview";
export const CUSTOM_APP_VIEW_CONFIG_ID = "custom";
function isKnownId(id) { if (id === CUSTOM_APP_VIEW_CONFIG_ID) return true; return DEFAULT_APP_VIEW_CONFIGS.some((config) => config.id === id);}
export function isValidAppViewConfig(config) { return ( config && typeof config === "object" && typeof config.id === "string" && isKnownId(config.id) && typeof config.appViewServiceDid === "string" && config.appViewServiceDid.length > 0 && typeof config.chatServiceDid === "string" && config.chatServiceDid.length > 0 );}
function defaultConfig() { const { id, appViewServiceDid, chatServiceDid } = AppViewConfig.BLUESKY; return { id, appViewServiceDid, chatServiceDid };}
export function getAppViewConfig() { const raw = localStorage.getItem(STORAGE_KEY); if (raw) { try { const parsed = JSON.parse(raw); if (isValidAppViewConfig(parsed)) { return { id: parsed.id, appViewServiceDid: parsed.appViewServiceDid, chatServiceDid: parsed.chatServiceDid, }; } } catch { // fall through to default } } return defaultConfig();}
export function setAppViewConfig(config) { if (!isValidAppViewConfig(config)) { throw new Error("Invalid app view config"); } localStorage.setItem( STORAGE_KEY, JSON.stringify({ id: config.id, appViewServiceDid: config.appViewServiceDid, chatServiceDid: config.chatServiceDid, }), );}
export function resetAppViewConfig() { localStorage.removeItem(STORAGE_KEY);}
export function handleAppViewResetQueryParam() { const params = new URLSearchParams(window.location.search); if (!params.has(RESET_QUERY_PARAM)) { return false; } resetAppViewConfig(); const newUrl = new URL(window.location.href); newUrl.searchParams.delete(RESET_QUERY_PARAM); window.history.replaceState({}, "", newUrl.toString()); return true;}