fix: ensure sheet order unique (#6295)

This commit is contained in:
wpxp123456
2025-12-13 15:05:46 +08:00
committed by GitHub
parent b6f3f97eee
commit 59f32cecfd
2 changed files with 21 additions and 0 deletions
+20
View File
@@ -180,6 +180,7 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
sheets[id] = worksheetSnapshot;
sheetOrder.splice(index, 0, id);
this.ensureSheetOrderUnique();
const worksheet = new Worksheet(this._unitId, worksheetSnapshot, this._styles);
this._worksheets.set(id, worksheet);
this._sheetCreated$.next(worksheet);
@@ -191,6 +192,22 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
return this._snapshot.sheetOrder;
}
// Ensure sheet order is unique
ensureSheetOrderUnique() {
const seen = new Set<string>();
const result: string[] = [];
for (const item of this._snapshot.sheetOrder) {
if (!seen.has(item)) {
seen.add(item);
result.push(item);
}
}
this._snapshot.sheetOrder = result;
seen.clear();
}
getWorksheets(): Map<string, Worksheet> {
return this._worksheets;
}
@@ -282,6 +299,7 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
this._worksheets.delete(sheetId);
this._snapshot.sheetOrder.splice(this._snapshot.sheetOrder.indexOf(sheetId), 1);
this.ensureSheetOrderUnique();
this._sheetDisposed$.next(sheetToRemove);
return true;
@@ -446,6 +464,8 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
}
}
this.ensureSheetOrderUnique();
// Active the first sheet.
this.ensureActiveSheet();
}
@@ -44,6 +44,7 @@ export const SetWorksheetOrderMutation: IMutation<ISetWorksheetOrderMutationPara
const config = workbook.getConfig();
config.sheetOrder.splice(params.fromOrder, 1);
config.sheetOrder.splice(params.toOrder, 0, params.subUnitId);
workbook.ensureSheetOrderUnique();
return true;
},
};