Fix version range calculation by passing full project version list
This commit is contained in:
parent
b16c9546b8
commit
d88b1e0485
@ -467,6 +467,7 @@ export function PublishModal({
|
||||
modrinth: selectedModrinth.map((mc_version) => ({ mc_version })),
|
||||
curseforge: selectedCurseforge.map((mc_version) => ({ mc_version })),
|
||||
},
|
||||
allMcVersions: projectVersions,
|
||||
cutoffMcVersion: lastVersionEnd ?? "",
|
||||
changelog,
|
||||
versionType,
|
||||
|
||||
@ -32,6 +32,9 @@ export const PublishInputSchema = z.object({
|
||||
mcVersions: z.object(createRecord(
|
||||
platforms, z.array(z.object({ mc_version: z.string() }))
|
||||
)),
|
||||
// 项目全部 MC 版本(完整列表)。范围计算必须基于它:只传勾选子集会让
|
||||
// 子集末尾被误判为"最后一个版本",范围按 lastVersionEnd 一路放大到最新 MC 版本
|
||||
allMcVersions: z.array(z.string()).min(1),
|
||||
cutoffMcVersion: z.string(), // 最后一个版本的截止 MC 版本,两个平台共用
|
||||
changelog: z.string(),
|
||||
versionType: BaseVersionSchema.shape.version_type,
|
||||
|
||||
@ -81,11 +81,16 @@ async function runPlatform(
|
||||
// 否则前端进度条会停在 running 假象里,错误也被吞掉。
|
||||
let mcVersionEntries: McVersionEntry[];
|
||||
try {
|
||||
// 范围必须基于完整项目版本列表计算,勾选只决定发布哪些条目
|
||||
const selected = new Set(mcVersions.map((v) => v.mc_version));
|
||||
mcVersionEntries = computeVersionRanges(
|
||||
mcVersions.map(v => v.mc_version),
|
||||
ctx.input.allMcVersions,
|
||||
await getGameVersionsFn(),
|
||||
ctx.input.cutoffMcVersion
|
||||
);
|
||||
).filter((e) => selected.has(e.version));
|
||||
if (mcVersionEntries.length !== selected.size) {
|
||||
throw new Error("勾选版本与项目版本列表不一致,请刷新后重试");
|
||||
}
|
||||
} catch (err) {
|
||||
const msg = errorMessage(err);
|
||||
console.error(`[publish] ${platform} 准备阶段失败:`, err);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user