Merge remote-tracking branch 'upstream/dev' into dev
Some checks are pending
Sync to Codeberg / Sync Codeberg and Github (push) Waiting to run
Test / Test (push) Waiting to run

This commit is contained in:
thororen1234 2025-02-25 20:19:22 +00:00
commit e224a1cde3
3 changed files with 26 additions and 16 deletions

View file

@ -20,6 +20,7 @@ import { makeLazy, proxyLazy } from "@utils/lazy";
import { LazyComponent } from "@utils/lazyReact";
import { Logger } from "@utils/Logger";
import { canonicalizeMatch } from "@utils/patches";
import { FluxStore } from "@webpack/types";
import { traceFunction } from "../debug/Tracer";
import { Flux } from "./common";
@ -37,6 +38,8 @@ export const onceReady = new Promise<void>(r => _resolveReady = r);
export let wreq: WebpackRequire;
export let cache: WebpackRequire["c"];
export const fluxStores: Record<string, FluxStore> = {};
export type FilterFn = (mod: any) => boolean;
export type PropsFilter = Array<string>;
@ -430,9 +433,24 @@ export function findByCodeLazy(...code: CodeFilter) {
* Find a store by its displayName
*/
export function findStore(name: StoreNameFilter) {
const res = Flux.Store.getAll
? Flux.Store.getAll().find(filters.byStoreName(name))
: find(filters.byStoreName(name), { isIndirect: true });
let res = fluxStores[name] as any;
if (res == null) {
for (const store of Flux.Store.getAll?.() ?? []) {
const storeName = store.getName();
if (storeName === name) {
res = store;
}
if (fluxStores[storeName] == null) {
fluxStores[storeName] = store;
}
}
if (res == null) {
res = find(filters.byStoreName(name), { isIndirect: true });
}
}
if (!res)
handleModuleNotFound("findStore", name);