Prevent extended delay before fetching Quests on startup. (#340)

This commit is contained in:
Etorix 2025-08-11 08:37:31 -07:00 • committed by GitHub
parent 33d326df18
commit cd773348a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 6 deletions

View file

@ -11,6 +11,7 @@ import { ErrorBoundary, openPluginModal } from "@components/index";
import { EquicordDevs } from "@utils/constants";
import { getIntlMessage } from "@utils/index";
import definePlugin, { StartAt } from "@utils/types";
import { onceReady } from "@webpack";
import { ContextMenuApi, Menu, NavigationRouter } from "@webpack/common";
import { JSX } from "react";
@ -1122,6 +1123,17 @@ export default definePlugin({
rerenderQuests();
}
},
LOGOUT(data) {
settings.store.unclaimedUnignoredQuests = 0;
settings.store.onQuestsPage = false;
},
LOGIN_SUCCESS(data) {
onceReady.then(() => {
fetchAndDispatchQuests("Questify", QuestifyLogger);
});
}
},
renderQuestifyButton: ErrorBoundary.wrap(QuestButton, { noop: true }),

View file

@ -149,7 +149,7 @@ export function questIsIgnored(questID: string): boolean {
export function validateIgnoredQuests(ignoredQuests?: string[], questsData?: Quest[]): [string[], number] {
const quests = questsData ?? Array.from(QuestsStore.quests.values()) as Quest[];
const excludedQuests = Array.from(QuestsStore.excludedQuests.values()) as ExcludedQuest[];
const currentlyIgnored = ignoredQuests ? new Set(ignoredQuests) : new Set(getIgnoredQuestIDs());
const currentlyIgnored = ignoredQuests ? new Set(ignoredQuests) : new Set(getIgnoredQuestIDs(questsData?.[0]?.userStatus?.userId));
const validIgnored = new Set<string>();
let numUnclaimedUnignoredQuests = 0;
@ -175,7 +175,7 @@ export function validateIgnoredQuests(ignoredQuests?: string[], questsData?: Que
export function validateAndOverwriteIgnoredQuests(ignoredQuests?: string[], questsData?: Quest[]): string[] {
const [validIgnored, numUnclaimedUnignoredQuests] = validateIgnoredQuests(ignoredQuests, questsData);
settings.store.unclaimedUnignoredQuests = numUnclaimedUnignoredQuests;
setIgnoredQuestIDs(validIgnored);
setIgnoredQuestIDs(validIgnored, questsData?.[0]?.userStatus?.userId);
return validIgnored;
}

View file

@ -106,6 +106,7 @@ export interface Quest {
};
},
userStatus: null | {
userId: string;
claimedAt: string | null;
completedAt: string | null;
enrolledAt: string | null;

View file

@ -25,15 +25,17 @@ export const leftClick = 0;
export const middleClick = 1;
export const rightClick = 2;
export function setIgnoredQuestIDs(questIDs: string[]): void {
const currentUserID = UserStore.getCurrentUser().id;
export function setIgnoredQuestIDs(questIDs: string[], userId?: string): void {
const currentUserID = userId ?? UserStore.getCurrentUser()?.id;
if (!currentUserID) return;
const { ignoredQuestProfile } = settings.store;
const key = ignoredQuestProfile === "shared" ? "shared" : currentUserID;
settings.store.ignoredQuestIDs[key] = questIDs;
}
export function getIgnoredQuestIDs(): string[] {
const currentUserID = UserStore.getCurrentUser().id;
export function getIgnoredQuestIDs(userId?: string): string[] {
const currentUserID = userId ?? UserStore.getCurrentUser()?.id;
if (!currentUserID) return [];
const { ignoredQuestIDs, ignoredQuestProfile } = settings.store;
const key = ignoredQuestProfile === "shared" ? "shared" : currentUserID;
ignoredQuestIDs[key] ??= [];