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,