From 9e2770bc7ffa5b147a075743205ee160902fea80 Mon Sep 17 00:00:00 2001 From: MicroBlock Date: Thu, 15 Feb 2024 23:40:12 +0800 Subject: [PATCH] fix: auto apply blacklist --- resources/dist.rc | Bin 505164 -> 505233 bytes src/celemod-ui/src/context/blacklist.ts | 1 + src/celemod-ui/src/routes/Manage.tsx | 51 ++++++++++++------------ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/resources/dist.rc b/resources/dist.rc index d1cdb72eae438a89f199e0b8b03b38c3e12265ac..c47e44ad9711c815fa780cbda6687df9f19fa274 100644 GIT binary patch delta 3504 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 { const ctx = { switchProfile: (name: string) => { + console.log('switch to profile', name); callRemote('apply_blacklist_profile', gamePath, name, JSON.stringify(alwaysOnMods)); setCurrentProfileName(name); }, diff --git a/src/celemod-ui/src/routes/Manage.tsx b/src/celemod-ui/src/routes/Manage.tsx index 67d115c..1dc0ee8 100644 --- a/src/celemod-ui/src/routes/Manage.tsx +++ b/src/celemod-ui/src/routes/Manage.tsx @@ -121,20 +121,20 @@ const ModMissing = ({ name, version, optional }: MissingModDepInfo) => { onClick={ gbFileID !== null ? async () => { - setState(_i18n.t('下载中')); - download.downloadMod(name, gbFileID, { - onProgress: (task, progress) => { - setState(`${progress}% (${task.subtasks.length})`); - }, - onFinished: () => { - setState(_i18n.t('下载完成')); - ctx?.reloadMods(); - }, - onFailed: () => { - setState(_i18n.t('下载失败')); - }, - }); - } + setState(_i18n.t('下载中')); + download.downloadMod(name, gbFileID, { + onProgress: (task, progress) => { + setState(`${progress}% (${task.subtasks.length})`); + }, + onFinished: () => { + setState(_i18n.t('下载完成')); + ctx?.reloadMods(); + }, + onFailed: () => { + setState(_i18n.t('下载失败')); + }, + }); + } : undefined } > @@ -208,9 +208,8 @@ const ModLocal = ({ return (
setExpanded(!expanded)} > {hasDeps && (!optional || ctx?.fullTree) ? ( @@ -236,8 +235,8 @@ const ModLocal = ({ {isAlwaysOn ? _i18n.t('始终开启') : enabled - ? _i18n.t('已启用') - : _i18n.t('已禁用')} + ? _i18n.t('已启用') + : _i18n.t('已禁用')} {enabled && @@ -361,7 +360,7 @@ let lastApplyReq = -1; export const Manage = () => { const noEverest = enforceEverest(); if (noEverest) return noEverest; - + const [alwaysOnMods, setAlwaysOnMods] = useAlwaysOnMods(); const [gamePath] = useGamePath(); const modPath = gamePath + '/Mods'; @@ -536,6 +535,7 @@ export const Manage = () => { .toLowerCase() .trim(); + // console.log(name, nameFilter); if (!name.includes(nameFilter)) return false; const checkSpecialFilter = (arg: string) => { @@ -545,9 +545,9 @@ export const Manage = () => { if (!('_missing' in mod)) { if (arg.startsWith('enable')) { - return mod.enabled; + return mod.enabled || alwaysOnMods.includes(mod.name); } else if (arg.startsWith('disable')) { - return !mod.enabled; + return !checkSpecialFilter('enable'); } if (arg.startsWith('hasdep') || arg.startsWith('havedep')) { @@ -622,8 +622,6 @@ export const Manage = () => { // @ts-ignore modsTreeRef.current?.scrollTo(0, 0); }, [excludeDependents]); - - const [alwaysOnMods, setAlwaysOnMods] = useAlwaysOnMods(); const globalCtx = useGlobalContext(); const manageCtx = useMemo( () => ({ @@ -666,9 +664,10 @@ export const Manage = () => { setHasUnsavedChanges(true); lastApplyReq = Date.now(); + let thisReq = lastApplyReq; setTimeout(() => { - if (lastApplyReq === Date.now()) { - manageCtx.switchProfile(manageCtx.currentProfileName); + if (lastApplyReq === thisReq) { + globalCtx.blacklist.switchProfile(manageCtx.currentProfileName); setHasUnsavedChanges(false); } }, 600);