import createHttpStore from "./http-store"; import playerApiClient from "../../network/clients/scoresaber/player/api"; export default ( playerId = null, initialState = null, initialStateType = "initial", ) => { let currentPlayerId = playerId; const onNewData = ({ fetchParams }) => { currentPlayerId = fetchParams?.playerId ?? null; }; const httpStore = createHttpStore( playerApiClient, playerId ? { playerId } : null, initialState, { onInitialized: onNewData, onAfterStateChange: onNewData, }, initialStateType, ); const fetch = async (playerId = currentPlayerId, force = false) => { if (!playerId || (playerId === currentPlayerId && !force)) return false; return httpStore.fetch({ playerId }, force, playerApiClient); }; return { ...httpStore, fetch, getPlayerId: () => currentPlayerId, }; };