@wwdrew/expo-spotify-sdk
Version:
Expo module wrapping the native Spotify iOS (v5) and Android (v4) SDKs for OAuth authentication and App Remote playback control
36 lines • 1.16 kB
JavaScript
/**
* Module-level store backing `useSyncExternalStore` hooks. Initialises lazily on
* first subscription and notifies subscribers when `update` changes the snapshot.
*/
export function createSyncExternalStore(initialState, init) {
let state = initialState;
const listeners = new Set();
let initialised = false;
const store = {
getState: () => state,
getSnapshot: () => state,
update(next) {
const resolved = typeof next === "function" ? next(state) : next;
if (Object.is(resolved, state))
return;
state = resolved;
listeners.forEach((listener) => listener());
},
subscribe(listener) {
if (!initialised) {
initialised = true;
try {
init(store);
}
catch (error) {
initialised = false;
throw error;
}
}
listeners.add(listener);
return () => listeners.delete(listener);
},
};
return store;
}
//# sourceMappingURL=sync-external-store.js.map