modmapper-web/lib/plugins.ts

45 lines
1.1 KiB
TypeScript

import { WorkerPool } from "./WorkerPool";
import store from "./store";
import { clearPlugins, setPending } from "../slices/plugins";
export const excludedPlugins = [
"Skyrim.esm",
"Update.esm",
"Dawnguard.esm",
"HearthFires.esm",
"Dragonborn.esm",
];
export const isPluginPath = (path: string) => {
if (
path.endsWith(".esp") ||
path.endsWith(".esm") ||
path.endsWith(".esl")
) {
return true;
}
return false;
}
export const isPlugin = (file: File) => {
return isPluginPath(file.name);
}
export const parsePluginFiles = (pluginFiles: File[], workerPool: WorkerPool) => {
if (pluginFiles.length === 0) {
alert("Found no plugins in the folder. Please select the Data folder underneath the Skyrim installation folder.");
return;
}
store.dispatch(clearPlugins());
store.dispatch(setPending(pluginFiles.length));
pluginFiles.forEach(async (plugin) => {
const contents = new Uint8Array(await plugin.arrayBuffer());
workerPool.pushTask({
skipParsing: excludedPlugins.includes(plugin.name),
filename: plugin.name,
lastModified: plugin.lastModified,
contents,
});
});
}