diff --git a/src/components/PublishModal.tsx b/src/components/PublishModal.tsx index 9b953d4..c876ca6 100644 --- a/src/components/PublishModal.tsx +++ b/src/components/PublishModal.tsx @@ -170,6 +170,8 @@ export function PublishModal({ CurseForgeFile[] >([]); + const [canSelect, setCanSelect] = useState(false); + const loadExisting = useCallback(async () => { setLoadingExisting(true); try { @@ -304,6 +306,8 @@ export function PublishModal({ })) .sort((a, b) => compareParsed(a.parsed, b.parsed)) .map((e) => e.row); + + if (!loadingExisting) setCanSelect(true); return [...pending, ...existing]; }, [publishVersions, modrinthExistingVersions, matchedMrNames, config.modrinth.version]); @@ -381,7 +385,7 @@ export function PublishModal({ } }, [open]); useEffect(() => { - if (!loadingExisting && publishVersions.length > 0 && !initRef.current) { + if (canSelect && publishVersions.length > 0 && !initRef.current) { initRef.current = true; setSelectedModrinth( publishVersions.filter((v) => !v.existsModrinth).map((v) => v.key), @@ -390,7 +394,7 @@ export function PublishModal({ publishVersions.filter((v) => !v.existsCurseforge).map((v) => v.key), ); } - }, [loadingExisting, publishVersions]); + }, [canSelect, publishVersions]); // --------------- Steps handling --------------- diff --git a/src/services/versions.ts b/src/services/versions.ts index 4089980..f4a56ee 100644 --- a/src/services/versions.ts +++ b/src/services/versions.ts @@ -87,7 +87,9 @@ export async function compareVersions( // ── Modrinth:按 version 模板生成 version_number 后匹配 ── const modrinth: Record = {}; - const modrinthTmpl = new Template(config.modrinth.version); + const modrinthTmpl = new Template(config.modrinth.version, { + filename_format: config.filename_format, + }); for (const mc_version of mc_versions) { const generatedVersion = modrinthTmpl.format({ version, mc_version }); @@ -101,7 +103,9 @@ export async function compareVersions( // ── CurseForge:按 filename_format 模板生成文件名后匹配 ── const curseforge: Record = {}; - const curseforgeTmpl = new Template(config.filename_format); + const curseforgeTmpl = new Template(config.curseforge.version_name, { + filename_format: config.filename_format, + }); for (const mc_version of mc_versions) { const generatedFilename = curseforgeTmpl.format({ version, mc_version });