import { TFunction } from "i18next"; import { runInAction } from "mobx"; import { sprintf } from "sprintf-js"; import { formatText } from "src/Utility"; import { HOF } from "src/hof/HOF"; import { wwwAXIOS } from "src/Www"; import { GetHOFAPI } from "src/wwwAPI"; export default function setLevelStore() { const formatValue = ( hofs: GetHOFAPI[], onValue: (value: number) => string, ): HOF[] => hofs.map((hof) => ({ ...hof, text: onValue(hof.value), })); return { isTotalTotalLoading: false, isTotalHighestLoading: false, isTotalStandLoading: false, isTotalBandLoading: false, isAtTotalLoading: false, isAtHighestLoading: false, isAtStandLoading: false, isAtBandLoading: false, isAbility5KLoading: false, isAbility7KLoading: false, isAbility9KLoading: false, isLevelLoading: false, totalTotalHOF: [] as HOF[], totalHighestHOF: [] as HOF[], totalStandHOF: [] as HOF[], totalBandHOF: [] as HOF[], atTotalHOF: [] as HOF[], atHighestHOF: [] as HOF[], atStandHOF: [] as HOF[], atBandHOF: [] as HOF[], ability5KHOFs0: [] as HOF[], ability5KHOFs1: [] as HOF[], ability5KHOFs2: [] as HOF[], ability5KHOFs3: [] as HOF[], ability5KHOFs4: [] as HOF[], ability7KHOFs0: [] as HOF[], ability7KHOFs1: [] as HOF[], ability7KHOFs2: [] as HOF[], ability7KHOFs3: [] as HOF[], ability7KHOFs4: [] as HOF[], ability9KHOFs0: [] as HOF[], ability9KHOFs1: [] as HOF[], ability9KHOFs2: [] as HOF[], ability9KHOFs3: [] as HOF[], ability9KHOFs4: [] as HOF[], levelHOFs0: [] as HOF[], levelHOFs1: [] as HOF[], levelHOFs2: [] as HOF[], levelHOFs3: [] as HOF[], levelHOFs4: [] as HOF[], get isLoading() { return ( this.isTotalTotalLoading || this.isTotalHighestLoading || this.isTotalStandLoading || this.isTotalBandLoading || this.isAtTotalLoading || this.isAtHighestLoading || this.isAtStandLoading || this.isAtBandLoading || this.isAbility5KLoading || this.isAbility7KLoading || this.isAbility9KLoading || this.isLevelLoading ); }, async getTotalTotalHOF(t: TFunction) { this.isTotalTotalLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/totalTotal"); if (status === 200) { runInAction(() => { this.totalTotalHOF = formatValue(data, (value) => sprintf(t("textHandled"), formatText(value)), ); this.isTotalTotalLoading = false; }); } }, async getTotalHighestHOF(t: TFunction) { this.isTotalHighestLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/totalHighest"); if (status === 200) { runInAction(() => { this.totalHighestHOF = formatValue(data, (value) => sprintf(t("textCount"), formatText(value)), ); this.isTotalHighestLoading = false; }); } }, async getTotalStandHOF(t: TFunction) { this.isTotalStandLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/totalStand"); if (status === 200) { runInAction(() => { this.totalStandHOF = formatValue(data, (value) => sprintf(t("textStand"), formatText(value)), ); this.isTotalStandLoading = false; }); } }, async getTotalBandHOF(t: TFunction) { this.isTotalBandLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/totalBand"); if (status === 200) { runInAction(() => { this.totalBandHOF = formatValue(data, (value) => sprintf(t("textBand"), formatText(value)), ); this.isTotalBandLoading = false; }); } }, async getAtTotalHOF(t: TFunction) { this.isAtTotalLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/atTotal"); if (status === 200) { runInAction(() => { this.atTotalHOF = formatValue(data, (value) => sprintf(t("textHandled"), formatText(value)), ); this.isAtTotalLoading = false; }); } }, async getAtHighestHOF(t: TFunction) { this.isAtHighestLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/atHighest"); if (status === 200) { runInAction(() => { this.atHighestHOF = formatValue(data, (value) => sprintf(t("textCount"), formatText(value)), ); this.isAtHighestLoading = false; }); } }, async getAtStandHOF(t: TFunction) { this.isAtStandLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/atStand"); if (status === 200) { runInAction(() => { this.atStandHOF = formatValue(data, (value) => sprintf(t("textStand"), formatText(value)), ); this.isAtStandLoading = false; }); } }, async getAtBandHOF(t: TFunction) { this.isAtBandLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/atBand"); if (status === 200) { runInAction(() => { this.atBandHOF = formatValue(data, (value) => sprintf(t("textBand"), formatText(value)), ); this.isAtBandLoading = false; }); } }, async getAbility5KHOF() { this.isAbility5KLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/ability/5K"); if (status === 200) { runInAction(() => { this.ability5KHOFs0 = formatValue(data.slice(0, 10), (value) => sprintf("%s Point", formatText(value)), ); this.ability5KHOFs1 = formatValue(data.slice(10, 20), (value) => sprintf("%s Point", formatText(value)), ); this.ability5KHOFs2 = formatValue(data.slice(20, 30), (value) => sprintf("%s Point", formatText(value)), ); this.ability5KHOFs3 = formatValue(data.slice(30, 40), (value) => sprintf("%s Point", formatText(value)), ); this.ability5KHOFs4 = formatValue(data.slice(40, 50), (value) => sprintf("%s Point", formatText(value)), ); this.isAbility5KLoading = false; }); } }, async getAbility7KHOF() { this.isAbility7KLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/ability/7K"); if (status === 200) { runInAction(() => { this.ability7KHOFs0 = formatValue(data.slice(0, 10), (value) => sprintf("%s Point", formatText(value)), ); this.ability7KHOFs1 = formatValue(data.slice(10, 20), (value) => sprintf("%s Point", formatText(value)), ); this.ability7KHOFs2 = formatValue(data.slice(20, 30), (value) => sprintf("%s Point", formatText(value)), ); this.ability7KHOFs3 = formatValue(data.slice(30, 40), (value) => sprintf("%s Point", formatText(value)), ); this.ability7KHOFs4 = formatValue(data.slice(40, 50), (value) => sprintf("%s Point", formatText(value)), ); this.isAbility7KLoading = false; }); } }, async getAbility9KHOF() { this.isAbility9KLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/ability/9K"); if (status === 200) { runInAction(() => { this.ability9KHOFs0 = formatValue(data.slice(0, 10), (value) => sprintf("%s Point", formatText(value)), ); this.ability9KHOFs1 = formatValue(data.slice(10, 20), (value) => sprintf("%s Point", formatText(value)), ); this.ability9KHOFs2 = formatValue(data.slice(20, 30), (value) => sprintf("%s Point", formatText(value)), ); this.ability9KHOFs3 = formatValue(data.slice(30, 40), (value) => sprintf("%s Point", formatText(value)), ); this.ability9KHOFs4 = formatValue(data.slice(40, 50), (value) => sprintf("%s Point", formatText(value)), ); this.isAbility9KLoading = false; }); } }, async getLevelHOF() { this.isLevelLoading = true; const { status, data } = await wwwAXIOS.get<GetHOFAPI[]>("/hof/level"); if (status === 200) { runInAction(() => { this.levelHOFs0 = formatValue(data.slice(0, 10), (value) => sprintf("LV. %d", value), ); this.levelHOFs1 = formatValue(data.slice(10, 20), (value) => sprintf("LV. %d", value), ); this.levelHOFs2 = formatValue(data.slice(20, 30), (value) => sprintf("LV. %d", value), ); this.levelHOFs3 = formatValue(data.slice(30, 40), (value) => sprintf("LV. %d", value), ); this.levelHOFs4 = formatValue(data.slice(40, 50), (value) => sprintf("LV. %d", value), ); this.isLevelLoading = false; }); } }, }; }