mirror of
https://github.com/webadderallorg/Recordly.git
synced 2026-09-24 06:46:09 +00:00
fix(editor): sanitize export finalizing progress
This commit is contained in:
@@ -58,6 +58,43 @@ describe("resolveExportStatusModel", () => {
|
||||
expect(status.isExportFinalSaveIndeterminate).toBe(true);
|
||||
});
|
||||
|
||||
it("sanitizes invalid finalizing progress before rounding", () => {
|
||||
const negativeStatus = resolveExportStatusModel({
|
||||
isExporting: true,
|
||||
exportProgress: progress({
|
||||
phase: "finalizing",
|
||||
renderProgress: -12.4,
|
||||
}),
|
||||
exportFormat: "mp4",
|
||||
exportPipelineModel: "modern",
|
||||
});
|
||||
const infiniteStatus = resolveExportStatusModel({
|
||||
isExporting: true,
|
||||
exportProgress: progress({
|
||||
phase: "finalizing",
|
||||
renderProgress: Number.POSITIVE_INFINITY,
|
||||
}),
|
||||
exportFormat: "mp4",
|
||||
exportPipelineModel: "modern",
|
||||
});
|
||||
const nanStatus = resolveExportStatusModel({
|
||||
isExporting: true,
|
||||
exportProgress: progress({
|
||||
phase: "finalizing",
|
||||
renderProgress: Number.NaN,
|
||||
}),
|
||||
exportFormat: "mp4",
|
||||
exportPipelineModel: "modern",
|
||||
});
|
||||
|
||||
expect(negativeStatus.exportFinalizingProgress).toBe(0);
|
||||
expect(negativeStatus.exportFinalizingPercent).toBe(0);
|
||||
expect(infiniteStatus.exportFinalizingProgress).toBe(0);
|
||||
expect(infiniteStatus.exportFinalizingPercent).toBe(0);
|
||||
expect(nanStatus.exportFinalizingProgress).toBe(0);
|
||||
expect(nanStatus.exportFinalizingPercent).toBe(0);
|
||||
});
|
||||
|
||||
it("keeps audio finalization out of the muxing-and-saving state", () => {
|
||||
const status = resolveExportStatusModel({
|
||||
isExporting: true,
|
||||
|
||||
@@ -35,12 +35,14 @@ export function resolveExportStatusModel({
|
||||
const isExportFinalizing = exportProgress?.phase === "finalizing";
|
||||
const isRenderingAudio =
|
||||
isExportFinalizing && typeof exportProgress?.audioProgress === "number";
|
||||
const rawFinalizingProgress =
|
||||
typeof exportProgress?.renderProgress === "number"
|
||||
? exportProgress.renderProgress
|
||||
: (exportProgress?.percentage ?? 100);
|
||||
const exportFinalizingProgress = isExportFinalizing
|
||||
? Math.min(
|
||||
typeof exportProgress?.renderProgress === "number"
|
||||
? exportProgress.renderProgress
|
||||
: (exportProgress?.percentage ?? 100),
|
||||
100,
|
||||
? Math.max(
|
||||
0,
|
||||
Math.min(100, Number.isFinite(rawFinalizingProgress) ? rawFinalizingProgress : 0),
|
||||
)
|
||||
: null;
|
||||
const exportFinalizingPercent = isExportFinalizing
|
||||
|
||||
Reference in New Issue
Block a user