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