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
12345678910111213141516171819202122232425262728293031323334353637383940414243import { Signal, ReactiveStore, PersistedReactiveStore } from "/js/signals.js";
const LEGACY_SELECTED_FEED_URI_STORAGE_KEY = "home-view-currentFeedUri";
function migrateLegacySelectedFeedUri(storageKey) { if (localStorage.getItem(storageKey) !== null) { return; } const legacyStored = localStorage.getItem( LEGACY_SELECTED_FEED_URI_STORAGE_KEY, ); localStorage.removeItem(LEGACY_SELECTED_FEED_URI_STORAGE_KEY); if (legacyStored === null) { return; } let selectedFeedUri = null; try { selectedFeedUri = JSON.parse(legacyStored); } catch { return; } if (!selectedFeedUri) { return; } localStorage.setItem(storageKey, JSON.stringify({ selectedFeedUri }));}
// Local client state, persisted per account. Logged-out session// state (a null session) doesn't persist.export function createSessionState(session) { let sessionState; if (session) { const storageKey = `session-state:${session.did}`; migrateLegacySelectedFeedUri(storageKey); sessionState = new PersistedReactiveStore(storageKey); } else { sessionState = new ReactiveStore("sessionState"); } // The home view's selected feed, shared with the pinned feeds pane sessionState.$selectedFeedUri = new Signal.State(null); return sessionState;}