Skip to content

Commit 19f8b41

Browse files
[FIX] spreadsheet_oca: Crash when editing and leaving spreadsheet quickly
When editing a spreadsheet, inserting a pivot or list or making signficant changes, exiting quickly could intermittently cause a race condition where saving does not have enough time to complete. After reloading the record, it crashes with an OWL error "Component Destroyed". This fixes the issue by awaiting the save methods before exiting.
1 parent 1695ecf commit 19f8b41

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,17 @@ export class SpreadsheetRenderer extends Component {
174174
this.stores.inject(ModelStore, this.spreadsheet_model);
175175
});
176176
useSetupAction({
177-
beforeLeave: () => {
178-
this.onSpreadsheetSaved();
179-
return Promise.resolve();
180-
},
177+
beforeLeave: this.onSpreadsheetSaved.bind(this),
181178
});
182179
odooDataProvider.addEventListener("data-source-updated", () => {
183180
const sheetId = this.spreadsheet_model.getters.getActiveSheetId();
184181
this.spreadsheet_model.dispatch("EVALUATE_CELLS", {sheetId});
185182
});
186183
}
187-
onSpreadsheetSaved() {
184+
async onSpreadsheetSaved() {
188185
const data = this.spreadsheet_model.exportData();
189-
this.env.saveRecord({spreadsheet_raw: data});
190-
this.spreadsheet_model.leaveSession();
186+
await this.env.saveRecord({spreadsheet_raw: data});
187+
await this.spreadsheet_model.leaveSession();
191188
this.spreadsheet_model.off("update", this);
192189
}
193190
async downloadAsXLXS() {

0 commit comments

Comments
 (0)