mirror of
https://github.com/Equicord/Equicord.git
synced 2025-06-08 14:13:01 -04:00
Webpack: Make findStore compatible with libdiscore stores
This commit is contained in:
parent
e447dec67b
commit
b4dddfda47
2 changed files with 40 additions and 1 deletions
|
@ -74,6 +74,22 @@ function makeShortcuts() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function findStoreWrapper(findStore: typeof Webpack.findStore) {
|
||||||
|
const cache = new Map<string, unknown>();
|
||||||
|
|
||||||
|
return function (storeName: string) {
|
||||||
|
const cacheKey = String(storeName);
|
||||||
|
if (cache.has(cacheKey)) return cache.get(cacheKey);
|
||||||
|
|
||||||
|
let store: unknown;
|
||||||
|
try {
|
||||||
|
store = findStore(storeName);
|
||||||
|
} catch { }
|
||||||
|
if (store) cache.set(cacheKey, store);
|
||||||
|
return store;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let fakeRenderWin: WeakRef<Window> | undefined;
|
let fakeRenderWin: WeakRef<Window> | undefined;
|
||||||
const find = newFindWrapper(f => f);
|
const find = newFindWrapper(f => f);
|
||||||
const findByProps = newFindWrapper(filters.byProps);
|
const findByProps = newFindWrapper(filters.byProps);
|
||||||
|
@ -98,7 +114,7 @@ function makeShortcuts() {
|
||||||
findComponentByCode: newFindWrapper(filters.componentByCode),
|
findComponentByCode: newFindWrapper(filters.componentByCode),
|
||||||
findAllComponentsByCode: (...code: string[]) => findAll(filters.componentByCode(...code)),
|
findAllComponentsByCode: (...code: string[]) => findAll(filters.componentByCode(...code)),
|
||||||
findExportedComponent: (...props: string[]) => findByProps(...props)[props[0]],
|
findExportedComponent: (...props: string[]) => findByProps(...props)[props[0]],
|
||||||
findStore: newFindWrapper(filters.byStoreName),
|
findStore: findStoreWrapper(Webpack.findStore),
|
||||||
PluginsApi: { getter: () => Vencord.Plugins },
|
PluginsApi: { getter: () => Vencord.Plugins },
|
||||||
plugins: { getter: () => Vencord.Plugins.plugins },
|
plugins: { getter: () => Vencord.Plugins.plugins },
|
||||||
Settings: { getter: () => Vencord.Settings },
|
Settings: { getter: () => Vencord.Settings },
|
||||||
|
|
|
@ -468,6 +468,29 @@ export function findStore(name: StoreNameFilter) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const getLibdiscore = findByCode("libdiscoreWasm is not initialized");
|
||||||
|
const libdiscoreExports = getLibdiscore();
|
||||||
|
|
||||||
|
for (const libdiscoreExportName in libdiscoreExports) {
|
||||||
|
if (!libdiscoreExportName.endsWith("Store")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const storeName = libdiscoreExportName;
|
||||||
|
const store = libdiscoreExports[storeName];
|
||||||
|
|
||||||
|
if (storeName === name) {
|
||||||
|
res = store;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fluxStores[storeName] == null) {
|
||||||
|
fluxStores[storeName] = store;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch { }
|
||||||
|
|
||||||
if (res == null) {
|
if (res == null) {
|
||||||
res = find(filters.byStoreName(name), { isIndirect: true });
|
res = find(filters.byStoreName(name), { isIndirect: true });
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue