diff --git a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue index fa71bb30aa..8bd3be2d80 100644 --- a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue +++ b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue @@ -1097,7 +1097,7 @@ export default { return } // return if there is no change - if (oldRow[column._cn] === rowObj[column._cn] && ((lastSave || rowObj[column._cn]) == rowObj[column._cn])) { + if (oldRow[column._cn] === rowObj[column._cn] && ((lastSave || rowObj[column._cn]) === rowObj[column._cn])) { return } if(saved) this.$set(this.data[row], 'lastSave', oldRow[column._cn]); diff --git a/packages/nocodb/src/lib/noco/common/BaseModel.ts b/packages/nocodb/src/lib/noco/common/BaseModel.ts index abb87fc9e7..938b66b4e8 100644 --- a/packages/nocodb/src/lib/noco/common/BaseModel.ts +++ b/packages/nocodb/src/lib/noco/common/BaseModel.ts @@ -49,7 +49,15 @@ class BaseModel> extends BaseModelSql { public async beforeUpdate(data: any, _trx: any, req): Promise { req = req || {}; req['oldData'] = await this.readByPk(req['params'].id); - if(req.query?.ignoreWebhook === undefined || req.query?.ignoreWebhook == 'false') await this.handleHooks('before.update', data, req); + const ignoreWebhook = req.query?.ignoreWebhook; + if (ignoreWebhook) { + if (ignoreWebhook != 'true' && ignoreWebhook != 'false') { + throw new Error('ignoreWebhook value can be either true or false'); + } + } + if (ignoreWebhook === undefined || ignoreWebhook === 'false') { + await this.handleHooks('before.update', data, req); + } } public async afterUpdate(data: any, _trx: any, req): Promise { @@ -74,7 +82,15 @@ class BaseModel> extends BaseModelSql { user: req.user?.email } ) - if(req.query?.ignoreWebhook === undefined || req.query?.ignoreWebhook == 'false') await this.handleHooks('after.update', data, req); + const ignoreWebhook = req.query?.ignoreWebhook; + if (ignoreWebhook) { + if (ignoreWebhook != 'true' && ignoreWebhook != 'false') { + throw new Error('ignoreWebhook value can be either true or false'); + } + } + if (ignoreWebhook === undefined || ignoreWebhook === 'false') { + await this.handleHooks('after.update', data, req); + } } private _updateAuditDescription(id, oldData: any, data: any) {