From 4f24e34b39c35ec212e906bb18348ba32136e2c7 Mon Sep 17 00:00:00 2001 From: Jorge Pinna Puissant Date: Wed, 9 Nov 2022 08:47:32 +0000 Subject: [PATCH] [IMP] test_lint, *: eslint remove caughtErrorsIgnorePattern from no-unused-vars Unused catch block arguments are now forbidden even when prefixed with an underscore: if the argument on the catch block is not needed, the use of the optional catch binding is enforced. Part-of: odoo/odoo#105433 --- .../src/components/tax_totals/tax_totals.js | 2 +- .../static/src/js/legacy_tax_totals.js | 2 +- .../analytic_distribution.js | 2 +- .../barcodes/static/src/barcode_handlers.js | 2 +- .../static/src/js/recaptcha.js | 2 +- .../public_livechat_window.js | 2 +- .../src/public_models/livechat_button_view.js | 4 +-- addons/mail/static/src/js/utils.js | 4 +-- addons/mail/static/src/models/call_view.js | 2 +- addons/mail/static/src/models/rtc.js | 10 +++---- addons/mail/static/src/models/rtc_session.js | 6 ++-- addons/mail/static/src/models/thread_cache.js | 2 +- .../mail/static/src/utils/media_monitoring.js | 2 +- .../components/attachment_list_tests.js | 2 +- .../src/js/Misc/AbstractReceiptScreen.js | 2 +- .../static/src/js/Popups/CashMovePopup.js | 2 +- .../js/Screens/ReceiptScreen/ReceiptScreen.js | 2 +- addons/point_of_sale/static/src/js/db.js | 4 +-- addons/point_of_sale/static/src/js/models.js | 2 +- .../point_of_sale/static/src/js/printers.js | 2 +- .../static/src/js/PaymentScreen.js | 2 +- .../pos_mercury/static/src/js/pos_mercury.js | 2 +- .../static/src/js/Screens/TicketScreen.js | 2 +- .../static/src/js/Screens/TipScreen.js | 2 +- .../SaleOrderManagementScreen.js | 4 +-- .../static/src/js/product_pricelist_report.js | 2 +- .../global_filters/components/year_picker.js | 2 +- .../src/helpers/odoo_functions_helpers.js | 2 +- .../static/src/o_spreadsheet/migration.js | 2 +- .../static/src/pivot/pivot_model.js | 4 +-- .../static/src/accounting_functions.js | 17 ++++++++--- addons/web/static/src/core/browser/browser.js | 2 +- .../core/domain_selector/domain_selector.js | 2 +- .../fields/domain_selector_field_input.js | 2 +- .../web/static/src/core/errors/error_utils.js | 2 +- .../model_field_selector_popover.js | 29 ++++++++++-------- .../web/static/src/core/network/download.js | 4 +-- .../static/src/core/network/rpc_service.js | 2 +- .../web/static/src/core/scroller_service.js | 2 +- addons/web/static/src/legacy/backend_utils.js | 2 +- .../src/legacy/js/components/datepicker.js | 4 +-- .../static/src/legacy/js/components/pager.js | 4 +-- .../control_panel_model_extension.js | 2 +- .../js/control_panel/custom_filter_item.js | 2 +- .../src/legacy/js/control_panel/search_bar.js | 4 +-- addons/web/static/src/legacy/js/core/ajax.js | 2 +- .../src/legacy/js/core/local_storage.js | 4 +-- .../web/static/src/legacy/js/core/session.js | 2 +- .../src/legacy/js/core/session_storage.js | 4 +-- addons/web/static/src/legacy/js/core/time.js | 6 ++-- .../src/legacy/js/fields/abstract_field.js | 2 +- .../legacy/js/fields/abstract_field_owl.js | 2 +- .../src/legacy/js/fields/basic_fields.js | 12 ++++---- .../src/legacy/js/fields/relational_fields.js | 2 +- .../js/views/kanban/kanban_controller.js | 2 +- .../src/legacy/js/widgets/date_picker.js | 2 +- .../src/legacy/js/widgets/domain_selector.js | 8 ++--- .../search/filter_menu/custom_filter_item.js | 2 +- .../static/src/search/search_arch_parser.js | 2 +- .../src/search/search_bar/search_bar.js | 4 +-- .../src/views/fields/domain/domain_field.js | 30 +++++++++++-------- .../src/views/fields/input_field_hook.js | 8 +++-- .../fields/properties/property_definition.js | 10 +++---- .../web/static/src/views/relational_model.js | 2 +- .../src/webclient/actions/action_service.js | 15 ++++++++-- .../web/static/tests/core/l10n/dates_tests.js | 4 +-- .../tests/core/network/rpc_service_tests.js | 4 +-- .../web/static/tests/helpers/mock_services.js | 6 ++-- .../tests/legacy/fields/basic_fields_tests.js | 4 +-- .../static/tests/legacy/mockserver_tests.js | 4 +-- .../tests/legacy/views/basic_model_tests.js | 2 +- .../static/tests/legacy/views/kanban_tests.js | 2 +- addons/web/static/tests/mock_server_tests.js | 4 +-- .../web/static/tests/search/group_by_tests.js | 14 ++++----- .../actions/reports/report_action_tests.js | 2 +- .../components/media_dialog/image_selector.js | 2 +- .../static/src/js/backend/field_html.js | 4 +-- .../static/src/js/backend/html_field.js | 2 +- .../web_editor/static/src/js/wysiwyg/fonts.js | 2 +- .../src/js/wysiwyg/widgets/link_dialog.js | 2 +- .../js/wysiwyg/widgets/link_popover_widget.js | 2 +- .../static/src/js/editor/snippets.editor.js | 4 +-- .../src/snippets/s_social_media/options.js | 4 +-- .../static/src/snippets/s_website_form/000.js | 2 +- .../static/src/js/event_sponsor_search.js | 2 +- odoo/addons/test_lint/tests/eslintrc | 2 +- 86 files changed, 192 insertions(+), 165 deletions(-) diff --git a/addons/account/static/src/components/tax_totals/tax_totals.js b/addons/account/static/src/components/tax_totals/tax_totals.js index 11e40c02930..cf62e4977e8 100644 --- a/addons/account/static/src/components/tax_totals/tax_totals.js +++ b/addons/account/static/src/components/tax_totals/tax_totals.js @@ -68,7 +68,7 @@ class TaxGroupComponent extends Component { let newValue; try { newValue = parseFloat(this.inputTax.el.value); // Get the new value - } catch (_err) { + } catch { this.inputTax.el.value = oldValue; this.setState("edit"); return; diff --git a/addons/account/static/src/js/legacy_tax_totals.js b/addons/account/static/src/js/legacy_tax_totals.js index 5d8b1a3482d..3715d820fa8 100644 --- a/addons/account/static/src/js/legacy_tax_totals.js +++ b/addons/account/static/src/js/legacy_tax_totals.js @@ -81,7 +81,7 @@ class LegacyTaxGroupComponent extends LegacyComponent { newValue = fieldUtils.parse.float(newValue); // Need a float for format the value newValue = fieldUtils.format.float(newValue, null, {digits: currency.digits}); // Return a string rounded to currency precision newValue = fieldUtils.parse.float(newValue); // Convert back to Float to compare with oldValue to know if value has changed - } catch (_err) { + } catch { $(this.inputTax.el).addClass('o_field_invalid'); this.setState('edit'); return; diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js index cdb37c80d8a..5fc96b27fd6 100644 --- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js +++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js @@ -563,7 +563,7 @@ export class AnalyticDistribution extends Component { parse(value) { try { return typeof value === 'string' || value instanceof String ? oParseFloat(value.replace('%', '')) : value; - } catch (_error) { + } catch { return 0; } } diff --git a/addons/barcodes/static/src/barcode_handlers.js b/addons/barcodes/static/src/barcode_handlers.js index d45d08669f8..aa688cb2c80 100644 --- a/addons/barcodes/static/src/barcode_handlers.js +++ b/addons/barcodes/static/src/barcode_handlers.js @@ -67,7 +67,7 @@ export const barcodeGenericHandlers = { // the scanned barcode could be anything, and could crash the queryselectorall // function targets = getVisibleElements(ui.activeElement, `[barcode_trigger=${barcode.slice(6)}]`); - } catch (_e) { + } catch { console.warn(`Barcode '${barcode}' is not valid`); } for (let elem of targets) { diff --git a/addons/google_recaptcha/static/src/js/recaptcha.js b/addons/google_recaptcha/static/src/js/recaptcha.js index 4d7e876d1d8..c71673eabf1 100644 --- a/addons/google_recaptcha/static/src/js/recaptcha.js +++ b/addons/google_recaptcha/static/src/js/recaptcha.js @@ -47,7 +47,7 @@ const ReCaptcha = Class.extend({ return { token: await window.grecaptcha.execute(this._publicKey, {action: action}) }; - } catch (_e) { + } catch { return { error: _t("The recaptcha site key is invalid."), }; diff --git a/addons/im_livechat/static/src/legacy/widgets/public_livechat_window/public_livechat_window.js b/addons/im_livechat/static/src/legacy/widgets/public_livechat_window/public_livechat_window.js index f826c4e3f36..b1bae5d5f27 100644 --- a/addons/im_livechat/static/src/legacy/widgets/public_livechat_window/public_livechat_window.js +++ b/addons/im_livechat/static/src/legacy/widgets/public_livechat_window/public_livechat_window.js @@ -195,7 +195,7 @@ const PublicLivechatWindow = Widget.extend({ async _postMessage(messageData) { try { await this.messaging.publicLivechatGlobal.livechatButtonView.sendMessage(messageData); - } catch (_err) { + } catch { await this.messaging.publicLivechatGlobal.livechatButtonView.sendMessage(messageData); // try again just in case } this.messaging.publicLivechatGlobal.publicLivechat.widget.postMessage(messageData) diff --git a/addons/im_livechat/static/src/public_models/livechat_button_view.js b/addons/im_livechat/static/src/public_models/livechat_button_view.js index 20e2887a021..cfc62190bcf 100644 --- a/addons/im_livechat/static/src/public_models/livechat_button_view.js +++ b/addons/im_livechat/static/src/public_models/livechat_button_view.js @@ -204,7 +204,7 @@ Model({ message: this.env._t("No available collaborator, please try again later."), sticky: true, }); - } catch (_err) { + } catch { /** * Failure in displaying notification happens when * notification service doesn't exist, which is the case in @@ -283,7 +283,7 @@ Model({ message: this.env._t("Session expired... Please refresh and try again."), sticky: true, }); - } catch (_err) { + } catch { /** * Failure in displaying notification happens when * notification service doesn't exist, which is the case diff --git a/addons/mail/static/src/js/utils.js b/addons/mail/static/src/js/utils.js index 3ce8e01bafa..b66ae7e8ff3 100644 --- a/addons/mail/static/src/js/utils.js +++ b/addons/mail/static/src/js/utils.js @@ -20,7 +20,7 @@ function parseAndTransform(htmlString, transformFunction) { var children; try { children = $('
').html(string).contents(); - } catch (_e) { + } catch { children = $('
').html('
' + string + '
').contents(); } return _parseAndTransform(children, transformFunction) @@ -99,7 +99,7 @@ function htmlToTextContentInline(htmlString) { htmlString = htmlString.replace(//gi,' '); try { div.innerHTML = htmlString; - } catch (_e) { + } catch { div.innerHTML = `
${htmlString}
`; } return div diff --git a/addons/mail/static/src/models/call_view.js b/addons/mail/static/src/models/call_view.js index 476b6c684c5..dedd0151af0 100644 --- a/addons/mail/static/src/models/call_view.js +++ b/addons/mail/static/src/models/call_view.js @@ -35,7 +35,7 @@ Model({ if (this.exists()) { this.update({ isFullScreen: true }); } - } catch (_e) { + } catch { if (this.exists()) { this.update({ isFullScreen: false }); } diff --git a/addons/mail/static/src/models/rtc.js b/addons/mail/static/src/models/rtc.js index 70542c97f39..7f5d83452bd 100644 --- a/addons/mail/static/src/models/rtc.js +++ b/addons/mail/static/src/models/rtc.js @@ -255,7 +255,7 @@ Model({ try { const audioStream = await browser.navigator.mediaDevices.getUserMedia({ audio: this.messaging.userSetting.getAudioConstraints() }); audioTrack = audioStream.getAudioTracks()[0]; - } catch (_e) { + } catch { this.messaging.notify({ message: sprintf( this.env._t(`"%s" requires microphone access`), @@ -329,7 +329,7 @@ Model({ }, ), }); - } catch (_e) { + } catch { /** * The browser is probably missing audioContext, * in that case, voice activation is not enabled @@ -716,14 +716,14 @@ Model({ for (const sender of RTCRtpSenders) { try { peerConnection.removeTrack(sender); - } catch (_e) { + } catch { // ignore error } } for (const transceiver of peerConnection.getTransceivers()) { try { transceiver.stop(); - } catch (_e) { + } catch { // transceiver may already be stopped by the remote. } } @@ -946,7 +946,7 @@ Model({ sourceWebMediaStream = await browser.navigator.mediaDevices.getDisplayMedia({ video: this.videoConfig }); this.messaging.soundEffects.screenSharing.play(); } - } catch (_e) { + } catch { this.messaging.notify({ message: sprintf( this.env._t(`"%s" requires "%s" access`), diff --git a/addons/mail/static/src/models/rtc_session.js b/addons/mail/static/src/models/rtc_session.js index c627ed4a293..6d1003cf790 100644 --- a/addons/mail/static/src/models/rtc_session.js +++ b/addons/mail/static/src/models/rtc_session.js @@ -187,7 +187,7 @@ Model({ try { await transceiver.sender.replaceTrack(track); transceiver.direction = transceiverDirection; - } catch (_e) { + } catch { // ignored, the track is probably already on the peerConnection. } return; @@ -195,7 +195,7 @@ Model({ try { await transceiver.sender.replaceTrack(null); transceiver.direction = transceiverDirection; - } catch (_e) { + } catch { // ignored, the transceiver is probably already removed } if (trackKind === 'video') { @@ -224,7 +224,7 @@ Model({ this.audioElement.pause(); try { this.audioElement.srcObject = undefined; - } catch (_error) { + } catch { // ignore error during remove, the value will be overwritten at next usage anyway } } diff --git a/addons/mail/static/src/models/thread_cache.js b/addons/mail/static/src/models/thread_cache.js index 2ac598e7ce5..66f4067ad03 100644 --- a/addons/mail/static/src/models/thread_cache.js +++ b/addons/mail/static/src/models/thread_cache.js @@ -21,7 +21,7 @@ Model({ try { fetchedMessages = await this._loadMessages({ limit, maxId: Math.min(...messageIds) }); success = true; - } catch (_e) { + } catch { success = false; } if (!this.exists()) { diff --git a/addons/mail/static/src/utils/media_monitoring.js b/addons/mail/static/src/utils/media_monitoring.js index edfe8989421..922ceaa2328 100644 --- a/addons/mail/static/src/utils/media_monitoring.js +++ b/addons/mail/static/src/utils/media_monitoring.js @@ -37,7 +37,7 @@ export async function monitorAudio(track, processorOptions) { let processor; try { processor = await _loadAudioWorkletProcessor(source, audioContext, processorOptions); - } catch (_e) { + } catch { // In case Worklets are not supported by the browser (eg: Safari) processor = _loadScriptProcessor(source, audioContext, processorOptions); } diff --git a/addons/mail/static/tests/qunit_suite_tests/components/attachment_list_tests.js b/addons/mail/static/tests/qunit_suite_tests/components/attachment_list_tests.js index 75360fc1cab..70b59031dd9 100644 --- a/addons/mail/static/tests/qunit_suite_tests/components/attachment_list_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/components/attachment_list_tests.js @@ -356,7 +356,7 @@ QUnit.test('[technical] does not crash when the viewer is closed before image lo try { imageEl.dispatchEvent(new Event('load', { bubbles: true })); successfulLoad = true; - } catch (_err) { + } catch { successfulLoad = false; } finally { assert.ok(successfulLoad, 'should not crash when the image is loaded'); diff --git a/addons/point_of_sale/static/src/js/Misc/AbstractReceiptScreen.js b/addons/point_of_sale/static/src/js/Misc/AbstractReceiptScreen.js index c4f8a57ced5..f88cff74d71 100644 --- a/addons/point_of_sale/static/src/js/Misc/AbstractReceiptScreen.js +++ b/addons/point_of_sale/static/src/js/Misc/AbstractReceiptScreen.js @@ -44,7 +44,7 @@ odoo.define('point_of_sale.AbstractReceiptScreen', function (require) { try { window.print(); return true; - } catch (_err) { + } catch { await this.showPopup('ErrorPopup', { title: this.env._t('Printing is not supported on some browsers'), body: this.env._t( diff --git a/addons/point_of_sale/static/src/js/Popups/CashMovePopup.js b/addons/point_of_sale/static/src/js/Popups/CashMovePopup.js index 075559baa1c..c428fe1ff29 100644 --- a/addons/point_of_sale/static/src/js/Popups/CashMovePopup.js +++ b/addons/point_of_sale/static/src/js/Popups/CashMovePopup.js @@ -22,7 +22,7 @@ odoo.define('point_of_sale.CashMovePopup', function (require) { confirm() { try { parse.float(this.state.inputAmount); - } catch (_error) { + } catch { this.state.inputHasError = true; this.errorMessage = this.env._t('Invalid amount'); return; diff --git a/addons/point_of_sale/static/src/js/Screens/ReceiptScreen/ReceiptScreen.js b/addons/point_of_sale/static/src/js/Screens/ReceiptScreen/ReceiptScreen.js index 68344f21e73..cb255fa7944 100644 --- a/addons/point_of_sale/static/src/js/Screens/ReceiptScreen/ReceiptScreen.js +++ b/addons/point_of_sale/static/src/js/Screens/ReceiptScreen/ReceiptScreen.js @@ -51,7 +51,7 @@ odoo.define('point_of_sale.ReceiptScreen', function (require) { await this._sendReceiptToCustomer(); this.orderUiState.emailSuccessful = true; this.orderUiState.emailNotice = this.env._t('Email sent.'); - } catch (_error) { + } catch { this.orderUiState.emailSuccessful = false; this.orderUiState.emailNotice = this.env._t('Sending email failed. Please try again.'); } diff --git a/addons/point_of_sale/static/src/js/db.js b/addons/point_of_sale/static/src/js/db.js index 0eda21f8b7b..1322143043d 100644 --- a/addons/point_of_sale/static/src/js/db.js +++ b/addons/point_of_sale/static/src/js/db.js @@ -338,7 +338,7 @@ var PosDB = core.Class.extend({ query = query.replace(/[\[\]\(\)\+\*\?\.\-\!\&\^\$\|\~\_\{\}\:\,\\\/]/g,'.'); query = query.replace(/ /g,'.+'); var re = RegExp("([0-9]+):.*?"+utils.unaccent(query),"gi"); - }catch(_e){ + }catch{ return []; } var results = []; @@ -401,7 +401,7 @@ var PosDB = core.Class.extend({ query = query.replace(/[\[\]\(\)\+\*\?\.\-\!\&\^\$\|\~\_\{\}\:\,\\\/]/g,'.'); query = query.replace(/ /g,'.+'); var re = RegExp("([0-9]+):.*?"+utils.unaccent(query),"gi"); - }catch(_e){ + }catch{ return []; } var results = []; diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 349085bfa9d..74dc5073020 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1479,7 +1479,7 @@ class Orderline extends PosModel { if (options.json) { try { this.init_from_JSON(options.json); - } catch(_error) { + } catch { console.error('ERROR: attempting to recover product ID', options.json.product_id, 'not available in the point of sale. Correct the product or clean the browser cache.'); } diff --git a/addons/point_of_sale/static/src/js/printers.js b/addons/point_of_sale/static/src/js/printers.js index f15d8281439..e9d5c3d4518 100644 --- a/addons/point_of_sale/static/src/js/printers.js +++ b/addons/point_of_sale/static/src/js/printers.js @@ -68,7 +68,7 @@ var PrinterMixin = { image = await this.htmlToImg(receipt); try { sendPrintResult = await this.send_printing_job(image); - } catch (_error) { + } catch { // Error in communicating to the IoT box. this.receipt_queue.length = 0; return this.printResultGenerator.IoTActionError(); diff --git a/addons/pos_loyalty/static/src/js/PaymentScreen.js b/addons/pos_loyalty/static/src/js/PaymentScreen.js index 1b21fd2c4ea..f38f77a2ff1 100644 --- a/addons/pos_loyalty/static/src/js/PaymentScreen.js +++ b/addons/pos_loyalty/static/src/js/PaymentScreen.js @@ -64,7 +64,7 @@ export const PosLoyaltyPaymentScreen = (PaymentScreen) => }); return; } - } catch (_e) { + } catch { // Do nothing with error, while this validation step is nice for error messages // it should not be blocking. } diff --git a/addons/pos_mercury/static/src/js/pos_mercury.js b/addons/pos_mercury/static/src/js/pos_mercury.js index 7fd4c931880..c807c476623 100644 --- a/addons/pos_mercury/static/src/js/pos_mercury.js +++ b/addons/pos_mercury/static/src/js/pos_mercury.js @@ -48,7 +48,7 @@ const PosMercuryPosGlobalState = (PosGlobalState) => class PosMercuryPosGlobalSt magtek_generated.shift(); // reader enc status return to_return; - } catch (_e) { + } catch { return 0; } } diff --git a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js index f71d6fb73c1..492f32ce5cb 100644 --- a/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js +++ b/addons/pos_restaurant/static/src/js/Screens/TicketScreen.js @@ -124,7 +124,7 @@ odoo.define('pos_restaurant.TicketScreen', function (require) { } this.env.pos.removeOrder(order); return true; - } catch (_error) { + } catch { const { confirmed } = await this.showPopup('ConfirmPopup', { title: 'Failed to set tip', body: `Failed to set tip to ${order.name}. Do you want to proceed on setting the tips of the remaining?`, diff --git a/addons/pos_restaurant/static/src/js/Screens/TipScreen.js b/addons/pos_restaurant/static/src/js/Screens/TipScreen.js index f7fdfff66ae..7e7451bb4e8 100644 --- a/addons/pos_restaurant/static/src/js/Screens/TipScreen.js +++ b/addons/pos_restaurant/static/src/js/Screens/TipScreen.js @@ -143,7 +143,7 @@ odoo.define('pos_restaurant.TipScreen', function (require) { try { $(this.el).find('.pos-receipt-container').html(receipt); window.print(); - } catch (_err) { + } catch { await this.showPopup('ErrorPopup', { title: this.env._t('Printing is not supported on some browsers'), body: this.env._t( diff --git a/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js b/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js index 6c4f7ebcec5..e14854978e2 100644 --- a/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js +++ b/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js @@ -88,7 +88,7 @@ odoo.define('pos_sale.SaleOrderManagementScreen', function (require) { try { await this.env.pos.load_new_partners(); } - catch (_error){ + catch { } let order_partner = this.env.pos.db.get_partner_by_id(sale_order.partner_id[0]) if(order_partner){ @@ -97,7 +97,7 @@ odoo.define('pos_sale.SaleOrderManagementScreen', function (require) { try { await this.env.pos._loadPartners([sale_order.partner_id[0]]); } - catch (_error){ + catch { const title = this.env._t('Customer loading error'); const body = _.str.sprintf(this.env._t('There was a problem in loading the %s customer.'), sale_order.partner_id[1]); await this.showPopup('ErrorPopup', { title, body }); diff --git a/addons/product/static/src/js/product_pricelist_report.js b/addons/product/static/src/js/product_pricelist_report.js index 29776acb451..ac29979ac7b 100644 --- a/addons/product/static/src/js/product_pricelist_report.js +++ b/addons/product/static/src/js/product_pricelist_report.js @@ -95,7 +95,7 @@ var GeneratePriceList = AbstractAction.extend(StandaloneFieldManagerMixin, { try { this.context.active_ids = params.params.active_ids.split(',').map(id => parseInt(id)); this.context.active_model = params.params.active_model; - } catch(_e) { + } catch { console.log('unable to load ids from the url fragment 🙁'); } } diff --git a/addons/spreadsheet/static/src/global_filters/components/year_picker.js b/addons/spreadsheet/static/src/global_filters/components/year_picker.js index 1aec865a0a6..b2bd97cb59c 100644 --- a/addons/spreadsheet/static/src/global_filters/components/year_picker.js +++ b/addons/spreadsheet/static/src/global_filters/components/year_picker.js @@ -10,7 +10,7 @@ const { DateTime } = luxon; const isValidStaticFormat = (format) => { try { return /^[\d\s/:-]+$/.test(DateTime.local().toFormat(format)); - } catch (_err) { + } catch { return false; } }; diff --git a/addons/spreadsheet/static/src/helpers/odoo_functions_helpers.js b/addons/spreadsheet/static/src/helpers/odoo_functions_helpers.js index 74ef9a42806..a6b42bd87e6 100644 --- a/addons/spreadsheet/static/src/helpers/odoo_functions_helpers.js +++ b/addons/spreadsheet/static/src/helpers/odoo_functions_helpers.js @@ -24,7 +24,7 @@ export function getOdooFunctions(formula, matcher) { let ast; try { ast = parse(formula); - } catch (_) { + } catch { return []; } return _getOdooFunctionsFromAST(ast, matcher); diff --git a/addons/spreadsheet/static/src/o_spreadsheet/migration.js b/addons/spreadsheet/static/src/o_spreadsheet/migration.js index e326675adec..4998f8b1bf5 100644 --- a/addons/spreadsheet/static/src/o_spreadsheet/migration.js +++ b/addons/spreadsheet/static/src/o_spreadsheet/migration.js @@ -67,7 +67,7 @@ function migrate1to2(data) { if (cell.content && cell.content.startsWith("=")) { try { cell.content = migratePivotDaysParameters(cell.content); - } catch (_) { + } catch { continue; } } diff --git a/addons/spreadsheet/static/src/pivot/pivot_model.js b/addons/spreadsheet/static/src/pivot/pivot_model.js index a83289ec383..2659ef9b862 100644 --- a/addons/spreadsheet/static/src/pivot/pivot_model.js +++ b/addons/spreadsheet/static/src/pivot/pivot_model.js @@ -161,7 +161,7 @@ export class SpreadsheetPivotModel extends PivotModel { try { const { field } = this.parseGroupField(fieldName); return this._isCol(field); - } catch (_) { + } catch { false; } } @@ -175,7 +175,7 @@ export class SpreadsheetPivotModel extends PivotModel { try { const { field } = this.parseGroupField(fieldName); return this._isRow(field); - } catch (_) { + } catch { return false; } } diff --git a/addons/spreadsheet_account/static/src/accounting_functions.js b/addons/spreadsheet_account/static/src/accounting_functions.js index 6bac2e25176..1b7d75acb72 100644 --- a/addons/spreadsheet_account/static/src/accounting_functions.js +++ b/addons/spreadsheet_account/static/src/accounting_functions.js @@ -116,18 +116,27 @@ export function parseAccountingDate(dateRange) { parseAccountingYear(dateRange) || parseAccountingDay(dateRange) ); - } catch (_) { - throw new Error(sprintf(_t(`'%s' is not a valid period. Supported formats are "21/12/2022", "Q1/2022", "12/2022", and "2022".`), dateRange)); + } catch { + throw new Error( + sprintf( + _t( + `'%s' is not a valid period. Supported formats are "21/12/2022", "Q1/2022", "12/2022", and "2022".` + ), + dateRange + ) + ); } } const ODOO_FIN_ARGS = ` account_codes (string) ${_t("The prefix of the accounts.")} - date_range (string, date) ${_t(`The date range. Supported formats are "21/12/2022", "Q1/2022", "12/2022", and "2022".`)} + date_range (string, date) ${_t( + `The date range. Supported formats are "21/12/2022", "Q1/2022", "12/2022", and "2022".` + )} offset (number, default=0) ${_t("Year offset applied to date_range.")} company_id (number, optional) ${_t("The company to target (Advanced).")} include_unposted (boolean, default=TRUE) ${_t("Set to TRUE to include unposted entries.")} -` +`; functionRegistry.add("ODOO.CREDIT", { description: _t("Get the total credit for the specified account(s) and period."), diff --git a/addons/web/static/src/core/browser/browser.js b/addons/web/static/src/core/browser/browser.js index bf8f8445487..12ce9b9d34e 100644 --- a/addons/web/static/src/core/browser/browser.js +++ b/addons/web/static/src/core/browser/browser.js @@ -15,7 +15,7 @@ try { // Safari crashes in Private Browsing localStorage.setItem("__localStorage__", "true"); localStorage.removeItem("__localStorage__"); -} catch (_e) { +} catch { localStorage = makeRAMLocalStorage(); sessionStorage = makeRAMLocalStorage(); } diff --git a/addons/web/static/src/core/domain_selector/domain_selector.js b/addons/web/static/src/core/domain_selector/domain_selector.js index fb17aaf041b..012884215ec 100644 --- a/addons/web/static/src/core/domain_selector/domain_selector.js +++ b/addons/web/static/src/core/domain_selector/domain_selector.js @@ -33,7 +33,7 @@ export class DomainSelector extends Component { this.traverseNode(ctx); return ctx.parent; - } catch (_e) { + } catch { // WOWL TODO: rethrow error when not the expected type return false; } diff --git a/addons/web/static/src/core/domain_selector/fields/domain_selector_field_input.js b/addons/web/static/src/core/domain_selector/fields/domain_selector_field_input.js index dfd9fb6ac65..f95c31e95cc 100644 --- a/addons/web/static/src/core/domain_selector/fields/domain_selector_field_input.js +++ b/addons/web/static/src/core/domain_selector/fields/domain_selector_field_input.js @@ -10,7 +10,7 @@ export class DomainSelectorFieldInput extends Component { const parser = parsers.get(this.props.field.type, (value) => value); try { return parser(value); - } catch (_) { + } catch { return value; } } diff --git a/addons/web/static/src/core/errors/error_utils.js b/addons/web/static/src/core/errors/error_utils.js index 8ba710c9821..65fb6cbd929 100644 --- a/addons/web/static/src/core/errors/error_utils.js +++ b/addons/web/static/src/core/errors/error_utils.js @@ -148,7 +148,7 @@ export async function annotateTraceback(error) { const traceback = formatTraceback(error); try { await _loadJS("/web/static/lib/stacktracejs/stacktrace.js"); - } catch (_e) { + } catch { return traceback; } // In Firefox, the error stack generated by anonymous code (example: invalid diff --git a/addons/web/static/src/core/model_field_selector/model_field_selector_popover.js b/addons/web/static/src/core/model_field_selector/model_field_selector_popover.js index 49053ec2b35..57c5f5300f2 100644 --- a/addons/web/static/src/core/model_field_selector/model_field_selector_popover.js +++ b/addons/web/static/src/core/model_field_selector/model_field_selector_popover.js @@ -22,7 +22,7 @@ export class ModelFieldSelectorPopover extends Component { this.fullFieldName = this.fieldNameChain.join("."); if (!this.env.isSmall) { useAutofocus(); - useAutofocus({ refName: 'autofocusDefaultValue', selectAll: true }); + useAutofocus({ refName: "autofocusDefaultValue", selectAll: true }); } onWillStart(async () => { @@ -48,9 +48,9 @@ export class ModelFieldSelectorPopover extends Component { async loadFields() { this.unfilteredFields = await this.modelField.loadModelFields(this.currentNode.resModel); - this.fields = {...this.unfilteredFields}; + this.fields = { ...this.unfilteredFields }; this.fieldKeys = this.sortedKeys(this.fields); - for (let key of this.fieldKeys) { + for (const key of this.fieldKeys) { const field = this.fields[key]; if (!field.searchable || !this.props.filter(field)) { delete this.fields[key]; @@ -75,7 +75,7 @@ export class ModelFieldSelectorPopover extends Component { case "ArrowUp": ev.preventDefault(); ev.stopPropagation(); - if (this.currentActiveFieldId> 0) { + if (this.currentActiveFieldId > 0) { this.currentActiveFieldId--; await this.render(); } @@ -83,7 +83,7 @@ export class ModelFieldSelectorPopover extends Component { case "ArrowDown": ev.preventDefault(); ev.stopPropagation(); - if (this.currentActiveFieldId < this.fieldKeys.length-1) { + if (this.currentActiveFieldId < this.fieldKeys.length - 1) { this.currentActiveFieldId++; await this.render(); } @@ -105,7 +105,10 @@ export class ModelFieldSelectorPopover extends Component { if (this.isDefaultValueVisible) { this.selectDefaultValue(true); } else { - const field = { ...this.fields[this.currentActiveField], name: this.currentActiveField } + const field = { + ...this.fields[this.currentActiveField], + name: this.currentActiveField, + }; this.onFieldSelected(field); } break; @@ -142,7 +145,7 @@ export class ModelFieldSelectorPopover extends Component { field: null, }); this.update(); - } else if(this.props.needDefaultValue) { + } else if (this.props.needDefaultValue) { this.isDefaultValueVisible = true; this.render(); this.update(); @@ -152,7 +155,7 @@ export class ModelFieldSelectorPopover extends Component { this.props.validate(this.fieldNameChain, this.defaultValue); } } - selectDefaultValue (acceptDefaultValue) { + selectDefaultValue(acceptDefaultValue) { if (!acceptDefaultValue) { this.defaultValue = ""; } @@ -166,7 +169,7 @@ export class ModelFieldSelectorPopover extends Component { try { this.chain = await this.props.loadChain(resModel, this.fullFieldName); this.update(); - } catch (_error) { + } catch { // WOWL TODO: rethrow error when not the expected type this.chain = [{ resModel, field: null }]; await this.props.update([]); @@ -186,13 +189,13 @@ ModelFieldSelectorPopover.props = { chain: Array, update: Function, showSearchInput: Boolean, - isDebugMode: { type: Boolean, optional: true}, + isDebugMode: { type: Boolean, optional: true }, loadChain: Function, filter: Function, close: Function, followRelations: { type: Boolean, optional: true }, - needDefaultValue: { type: Boolean, optional: true}, - validate: { type: Function, optional: true}, + needDefaultValue: { type: Boolean, optional: true }, + validate: { type: Function, optional: true }, }; -ModelFieldSelectorPopover.template = "web.ModelFieldSelectorPopover"; +ModelFieldSelectorPopover.template = "web.ModelFieldSelectorPopover"; diff --git a/addons/web/static/src/core/network/download.js b/addons/web/static/src/core/network/download.js index c9be238b78f..007d4045f12 100644 --- a/addons/web/static/src/core/network/download.js +++ b/addons/web/static/src/core/network/download.js @@ -423,7 +423,7 @@ function _download(data, filename, mimetype) { if (typeof blob === "string" || blob.constructor === toString) { try { return saver(`data:${mimeType};base64,${self.btoa(blob)}`); - } catch (_y) { + } catch { return saver(`data:${mimeType},${encodeURIComponent(blob)}`); } } @@ -505,7 +505,7 @@ download._download = (options) => { // a Serialized python Error const node = nodes[1] || nodes[0]; error = JSON.parse(node.textContent); - } catch (_e) { + } catch { error = { message: "Arbitrary Uncaught Python Exception", data: { diff --git a/addons/web/static/src/core/network/rpc_service.js b/addons/web/static/src/core/network/rpc_service.js index 9112c002147..f898c75dc8d 100644 --- a/addons/web/static/src/core/network/rpc_service.js +++ b/addons/web/static/src/core/network/rpc_service.js @@ -69,7 +69,7 @@ export function jsonrpc(env, rpcId, url, params, settings = {}) { let params; try { params = JSON.parse(request.response); - } catch (_) { + } catch { reject( new HTTPError( `server responded with invalid JSON response (HTTP${request.status}): ${request.response}` diff --git a/addons/web/static/src/core/scroller_service.js b/addons/web/static/src/core/scroller_service.js index 4f092d70cac..d7dbc0d4e2d 100644 --- a/addons/web/static/src/core/scroller_service.js +++ b/addons/web/static/src/core/scroller_service.js @@ -38,7 +38,7 @@ export const scrollerService = { let matchingEl = null; try { matchingEl = document.querySelector(`.o_content #${href.value.substr(1)}`); - } catch (_e) { + } catch { // Invalid selector: not an anchor anyway } const triggerEv = new CustomEvent("anchor-link-clicked", { diff --git a/addons/web/static/src/legacy/backend_utils.js b/addons/web/static/src/legacy/backend_utils.js index 654b2696459..b92915cd4a7 100644 --- a/addons/web/static/src/legacy/backend_utils.js +++ b/addons/web/static/src/legacy/backend_utils.js @@ -173,7 +173,7 @@ export function searchModelStateToLegacy(state) { let context = item.context; try { context = makeContext([context]); - } catch (_e) { + } catch { // pass } filter.context = context; diff --git a/addons/web/static/src/legacy/js/components/datepicker.js b/addons/web/static/src/legacy/js/components/datepicker.js index 305f65fe3fd..b46413fa1bf 100644 --- a/addons/web/static/src/legacy/js/components/datepicker.js +++ b/addons/web/static/src/legacy/js/components/datepicker.js @@ -112,7 +112,7 @@ odoo.define('web.DatePickerOwl', function (require) { _formatDate(date) { try { return field_utils.format[this.typeOfDate](date, null, { timezone: false }); - } catch (_err) { + } catch { return false; } } @@ -125,7 +125,7 @@ odoo.define('web.DatePickerOwl', function (require) { _parseInput(inputValue) { try { return field_utils.parse[this.typeOfDate](inputValue, null, { timezone: false }); - } catch (_err) { + } catch { return false; } } diff --git a/addons/web/static/src/legacy/js/components/pager.js b/addons/web/static/src/legacy/js/components/pager.js index 801bf9134b3..4812ce79b11 100644 --- a/addons/web/static/src/legacy/js/components/pager.js +++ b/addons/web/static/src/legacy/js/components/pager.js @@ -84,7 +84,7 @@ odoo.define('web.Pager', function (require) { async _changeSelection(direction) { try { await this.props.validate(); - } catch (_err) { + } catch { return; } const { limit, size } = this.props; @@ -115,7 +115,7 @@ odoo.define('web.Pager', function (require) { async _saveValue(value) { try { await this.props.validate(); - } catch (_err) { + } catch { return; } const [min, max] = value.trim().split(/\s*[\-\s,;]\s*/); diff --git a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js index 4c893c9624b..e2ed43ebed1 100644 --- a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js +++ b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js @@ -904,7 +904,7 @@ odoo.define("web/static/src/js/control_panel/control_panel_model_extension.js", child.attrs.defaultInterval = context.group_by.split(':')[1]; child.tag = 'groupBy'; } - } catch (_e) { } + } catch { } } if (child.attrs.name in this.searchDefaults) { child.attrs.isDefault = true; diff --git a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js index 10128a9345c..69bb852dc4c 100644 --- a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js +++ b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js @@ -265,7 +265,7 @@ odoo.define('web.CustomFilterItem', function (require) { condition.value = field_utils.parse[type](ev.target.value); // Write displayed value in the input and 'displayedValue' property condition.displayedValue = ev.target.value; - } catch (_err) { + } catch { // Parsing error: reverts to previous value ev.target.value = condition.displayedValue; } diff --git a/addons/web/static/src/legacy/js/control_panel/search_bar.js b/addons/web/static/src/legacy/js/control_panel/search_bar.js index 53358df6a07..1fb56936e14 100644 --- a/addons/web/static/src/legacy/js/control_panel/search_bar.js +++ b/addons/web/static/src/legacy/js/control_panel/search_bar.js @@ -163,7 +163,7 @@ odoo.define('web.SearchBar', function (require) { if (typeof args === 'string') { try { args = Domain.prototype.stringToArray(args); - } catch (_err) { + } catch { args = []; } } @@ -295,7 +295,7 @@ odoo.define('web.SearchBar', function (require) { _validateSource(query, source) { try { this._parseWithSource(query, source); - } catch (_err) { + } catch { return false; } return true; diff --git a/addons/web/static/src/legacy/js/core/ajax.js b/addons/web/static/src/legacy/js/core/ajax.js index fca5219a4dd..bc0c40b9522 100644 --- a/addons/web/static/src/legacy/js/core/ajax.js +++ b/addons/web/static/src/legacy/js/core/ajax.js @@ -201,7 +201,7 @@ function get_file(options) { try { // Case of a serialized Odoo Exception: It is Json Parsable var node = nodes[1] || nodes[0]; err = JSON.parse(node.textContent); - } catch (_e) { // Arbitrary uncaught python side exception + } catch { // Arbitrary uncaught python side exception err = { message: nodes.length > 1 ? nodes[1].textContent : '', data: { diff --git a/addons/web/static/src/legacy/js/core/local_storage.js b/addons/web/static/src/legacy/js/core/local_storage.js index 642463f27e2..f567ecb5841 100644 --- a/addons/web/static/src/legacy/js/core/local_storage.js +++ b/addons/web/static/src/legacy/js/core/local_storage.js @@ -39,12 +39,12 @@ try { key: key, newValue: newValue, }); - } catch (_error) {} + } catch {} }); return storage; })(); -} catch (_exception) { +} catch { console.warn('Fail to load localStorage'); storage = new RamStorage(); } diff --git a/addons/web/static/src/legacy/js/core/session.js b/addons/web/static/src/legacy/js/core/session.js index b5880b0f05c..74093dcb59c 100644 --- a/addons/web/static/src/legacy/js/core/session.js +++ b/addons/web/static/src/legacy/js/core/session.js @@ -157,7 +157,7 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, { if(cookie.indexOf(nameEQ) === 0) { try { return JSON.parse(decodeURIComponent(cookie.substring(nameEQ.length))); - } catch(_err) { + } catch { // wrong cookie, delete it this.set_cookie(name, '', -1); } diff --git a/addons/web/static/src/legacy/js/core/session_storage.js b/addons/web/static/src/legacy/js/core/session_storage.js index f78ffdbde5c..0d5198fe2af 100644 --- a/addons/web/static/src/legacy/js/core/session_storage.js +++ b/addons/web/static/src/legacy/js/core/session_storage.js @@ -41,12 +41,12 @@ try { newValue: newValue, }); } - } catch (_error) {} + } catch {} }); return storage; })(); -} catch (_exception) { +} catch { console.warn('Fail to load sessionStorage'); storage = new RamStorage(); } diff --git a/addons/web/static/src/legacy/js/core/time.js b/addons/web/static/src/legacy/js/core/time.js index 226fa534d45..c5d81f6cdb0 100644 --- a/addons/web/static/src/legacy/js/core/time.js +++ b/addons/web/static/src/legacy/js/core/time.js @@ -183,13 +183,13 @@ function time_to_str (obj) { function auto_str_to_date (value) { try { return str_to_datetime(value); - } catch(_e) {} + } catch {} try { return str_to_date(value); - } catch(_e) {} + } catch {} try { return str_to_time(value); - } catch(_e) {} + } catch {} throw new Error(_.str.sprintf(_t("'%s' is not a correct date, datetime nor time"), value)); } diff --git a/addons/web/static/src/legacy/js/fields/abstract_field.js b/addons/web/static/src/legacy/js/fields/abstract_field.js index 17571df9fc6..e3bfb03e009 100644 --- a/addons/web/static/src/legacy/js/fields/abstract_field.js +++ b/addons/web/static/src/legacy/js/fields/abstract_field.js @@ -572,7 +572,7 @@ var AbstractField = Widget.extend({ try { value = this._parseValue(value); this._isValid = true; - } catch (_e) { + } catch { this._isValid = false; this.trigger_up('set_dirty', {dataPointID: this.dataPointID}); return Promise.reject({message: "Value set is not valid"}); diff --git a/addons/web/static/src/legacy/js/fields/abstract_field_owl.js b/addons/web/static/src/legacy/js/fields/abstract_field_owl.js index 676fdb3c5b1..e16fdfec213 100644 --- a/addons/web/static/src/legacy/js/fields/abstract_field_owl.js +++ b/addons/web/static/src/legacy/js/fields/abstract_field_owl.js @@ -537,7 +537,7 @@ odoo.define('web.AbstractFieldOwl', function (require) { try { value = this._parseValue(value); this._isValid = true; - } catch (_e) { + } catch { this._isValid = false; this.trigger('set-dirty', {dataPointID: this.dataPointId}); return Promise.reject({message: "Value set is not valid"}); diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index 291badac091..640daf90fdd 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -612,7 +612,7 @@ var NumericField = InputField.extend({ value = this._formatValue(value); // Set the computed value in the input this.$input.val(value); - } catch (_err) { + } catch { // in case of exception, set value as the original value // that way the Webclient will show an error as // it is expecting a numeric value. @@ -801,7 +801,7 @@ var FieldDateRange = InputField.extend({ const value = this.mode === "readonly" ? this.value : this.$input.val(); try { return field_utils.parse[this.formatType](value, this.field, { timezone: true }) || true; - } catch (_error) { + } catch { return false; } }, @@ -821,7 +821,7 @@ var FieldDateRange = InputField.extend({ // user may enter manual value in input and it may not be parsed as date/datetime value this.removeInvalidClass(); return field_utils.parse[this.formatType](this.$input.val(), this.field, { timezone: true }); - } catch (_error) { + } catch { this.setInvalidClass(); return false; } @@ -1094,7 +1094,7 @@ var FieldDate = InputField.extend({ if (this.datewidget.type_of_date === "datetime") { value.add(-this.getSession().getTZOffset(value), "minutes"); } - } catch (_err) {} + } catch {} await this._setValue(value); this._render(); } @@ -3340,7 +3340,7 @@ var FieldProgressBar = AbstractField.extend({ try { // Cover all numbers with parseFloat parsedValue = field_utils.parse.float($input.val()); - } catch (_error) { + } catch { this.displayNotification({ message: _t("Please enter a numerical value"), type: 'danger' }); } @@ -4284,7 +4284,7 @@ var FieldColorPicker = FieldInteger.extend({ _highlightSelectedColor: function(){ try{ $(this.$('li')[parseInt(this.value)]).css('border', '2px solid teal'); - } catch(_err) { + } catch { } }, diff --git a/addons/web/static/src/legacy/js/fields/relational_fields.js b/addons/web/static/src/legacy/js/fields/relational_fields.js index 0328f650938..faf94e7b057 100644 --- a/addons/web/static/src/legacy/js/fields/relational_fields.js +++ b/addons/web/static/src/legacy/js/fields/relational_fields.js @@ -3178,7 +3178,7 @@ var FieldStatus = AbstractField.extend({ // If not set, the statusbar is not clickable. try { this.isClickable = !!JSON.parse(this.attrs.clickable); - } catch (_) { + } catch { this.isClickable = !!this.nodeOptions.clickable; } }, diff --git a/addons/web/static/src/legacy/js/views/kanban/kanban_controller.js b/addons/web/static/src/legacy/js/views/kanban/kanban_controller.js index 125edad718b..5e97246b17b 100644 --- a/addons/web/static/src/legacy/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/legacy/js/views/kanban/kanban_controller.js @@ -200,7 +200,7 @@ var KanbanController = BasicController.extend({ } try { var visible = new Domain(domain).compute(data.evalContext); - } catch (_e) { + } catch { return; } if (!visible) { diff --git a/addons/web/static/src/legacy/js/widgets/date_picker.js b/addons/web/static/src/legacy/js/widgets/date_picker.js index 847e1175ff5..e2cee2f3fcd 100644 --- a/addons/web/static/src/legacy/js/widgets/date_picker.js +++ b/addons/web/static/src/legacy/js/widgets/date_picker.js @@ -155,7 +155,7 @@ var DateWidget = Widget.extend({ try { this._parseClient(value); return true; - } catch (_e) { + } catch { return false; } } diff --git a/addons/web/static/src/legacy/js/widgets/domain_selector.js b/addons/web/static/src/legacy/js/widgets/domain_selector.js index fa99e3edbde..62bfe729e41 100644 --- a/addons/web/static/src/legacy/js/widgets/domain_selector.js +++ b/addons/web/static/src/legacy/js/widgets/domain_selector.js @@ -396,7 +396,7 @@ var DomainTree = DomainNode.extend({ try { parsedDomain = Domain.prototype.stringToArray(domain); this.invalidDomain = false; - } catch (_err) { + } catch { // TODO: domain could contain `parent` for example, which is // currently not handled by the DomainSelector this.invalidDomain = true; @@ -603,7 +603,7 @@ var DomainSelector = DomainTree.extend({ const rawDomain = e.currentTarget.value; try { Domain.prototype.stringToArray(rawDomain); - } catch (_err) { // If there is a syntax error, just ignore the change + } catch { // If there is a syntax error, just ignore the change this.displayNotification({ title: _t("Syntax error"), message: _t("Domain not properly formed"), type: 'danger' }); return; } @@ -712,7 +712,7 @@ var DomainLeaf = DomainNode.extend({ if (selectedField && !selectedField.relation && !_.isArray(this.value)) { this.displayValue = field_utils.format[selectedField.type](this.value, selectedField); } - } catch (_err) {/**/} + } catch {/**/} this.displayOperator = this.operator; if (selectedField.type === "boolean") { this.displayValue = this.value ? "1" : "0"; @@ -846,7 +846,7 @@ var DomainLeaf = DomainNode.extend({ var selectedField = this.fieldSelector.getSelectedField() || {}; try { this.value = field_utils.parse[selectedField.type](value, selectedField); - } catch (_err) { + } catch { this.value = value; couldNotParse = true; } diff --git a/addons/web/static/src/search/filter_menu/custom_filter_item.js b/addons/web/static/src/search/filter_menu/custom_filter_item.js index 3f8094f9146..66c6cd2ef9e 100644 --- a/addons/web/static/src/search/filter_menu/custom_filter_item.js +++ b/addons/web/static/src/search/filter_menu/custom_filter_item.js @@ -310,7 +310,7 @@ export class CustomFilterItem extends Component { // Only updates values if it can be correctly parsed and formatted. condition.value = parsed; condition.displayedValue = formatted; - } catch (_err) { + } catch { // Parsing error: nothing is done } // Only reset the target's value if it is not a selection field. diff --git a/addons/web/static/src/search/search_arch_parser.js b/addons/web/static/src/search/search_arch_parser.js index dd1a80521ef..385254b5586 100644 --- a/addons/web/static/src/search/search_arch_parser.js +++ b/addons/web/static/src/search/search_arch_parser.js @@ -20,7 +20,7 @@ const DEFAULT_VIEWS_WITH_SEARCH_PANEL = ["kanban", "list"]; function getContextGroubBy(context) { try { return makeContext([context]).group_by.split(":"); - } catch (_err) { + } catch { return []; } } diff --git a/addons/web/static/src/search/search_bar/search_bar.js b/addons/web/static/src/search/search_bar/search_bar.js index 5515e7fb867..0196f63af3d 100644 --- a/addons/web/static/src/search/search_bar/search_bar.js +++ b/addons/web/static/src/search/search_bar/search_bar.js @@ -146,7 +146,7 @@ export class SearchBar extends Component { value = parser(trimmedQuery); } } - } catch (_e) { + } catch { continue; } @@ -185,7 +185,7 @@ export class SearchBar extends Component { if (searchItem.domain) { try { domain = new Domain(searchItem.domain).toList(); - } catch (_e) { + } catch { // Pass } } diff --git a/addons/web/static/src/views/fields/domain/domain_field.js b/addons/web/static/src/views/fields/domain/domain_field.js index 3c19695f166..3a5e7fd67aa 100644 --- a/addons/web/static/src/views/fields/domain/domain_field.js +++ b/addons/web/static/src/views/fields/domain/domain_field.js @@ -59,23 +59,27 @@ export class DomainField extends Component { } onButtonClick() { - this.addDialog(SelectCreateDialog, { - title: this.env._t("Selected records"), - noCreate: true, - multiSelect: false, - resModel: this.getResModel(this.props), - domain: this.getDomain(this.props.value).toList(this.getContext(this.props)) || [], - context: this.getContext(this.props) || {}, - }, { - // The counter is reloaded "on close" because some modal allows to modify data that can impact the counter - onClose: () => this.loadCount(this.props) - }); + this.addDialog( + SelectCreateDialog, + { + title: this.env._t("Selected records"), + noCreate: true, + multiSelect: false, + resModel: this.getResModel(this.props), + domain: this.getDomain(this.props.value).toList(this.getContext(this.props)) || [], + context: this.getContext(this.props) || {}, + }, + { + // The counter is reloaded "on close" because some modal allows to modify data that can impact the counter + onClose: () => this.loadCount(this.props), + } + ); } get isValidDomain() { try { this.getDomain(this.props.value).toList(); return true; - } catch (_e) { + } catch { // WOWL TODO: rethrow error when not the expected type return false; } @@ -98,7 +102,7 @@ export class DomainField extends Component { [domain], { context: this.getContext(props) } ); - } catch (_e) { + } catch { // WOWL TODO: rethrow error when not the expected type Object.assign(this.state, { recordCount: 0, isValid: false }); return; diff --git a/addons/web/static/src/views/fields/input_field_hook.js b/addons/web/static/src/views/fields/input_field_hook.js index e1cdea769b7..030cb50b411 100644 --- a/addons/web/static/src/views/fields/input_field_hook.js +++ b/addons/web/static/src/views/fields/input_field_hook.js @@ -55,7 +55,7 @@ export function useInputField(params) { if (params.parse) { try { val = params.parse(val); - } catch (_e) { + } catch { if (component.props.record) { component.props.record.setInvalidField(component.props.name); } @@ -103,7 +103,9 @@ export function useInputField(params) { * If it is not such a case, we update the field with the new value. */ useEffect(() => { - const isInvalid = component.props.record ? component.props.record.isInvalid(component.props.name) : false; + const isInvalid = component.props.record + ? component.props.record.isInvalid(component.props.name) + : false; if (inputRef.el && !isDirty && !isInvalid) { inputRef.el.value = params.getValue(); lastSetValue = inputRef.el.value; @@ -131,7 +133,7 @@ export function useInputField(params) { if (params.parse) { try { val = params.parse(val); - } catch (_e) { + } catch { isInvalid = true; if (urgent) { return; diff --git a/addons/web/static/src/views/fields/properties/property_definition.js b/addons/web/static/src/views/fields/properties/property_definition.js index d10acf8a197..904e70c6660 100644 --- a/addons/web/static/src/views/fields/properties/property_definition.js +++ b/addons/web/static/src/views/fields/properties/property_definition.js @@ -140,7 +140,7 @@ export class PropertyDefinition extends Component { * @param {event} event */ onPropertyLabelKeypress(event) { - if (event.key !== 'Enter') { + if (event.key !== "Enter") { return; } this.props.close(); @@ -177,8 +177,8 @@ export class PropertyDefinition extends Component { this.props.onChange(propertyDefinition); this.state.propertyDefinition = propertyDefinition; - this.state.resModel = ''; - this.state.resModelDescription = ''; + this.state.resModel = ""; + this.state.resModelDescription = ""; this.state.typeLabel = this._typeLabel(newType); } @@ -244,7 +244,7 @@ export class PropertyDefinition extends Component { * @param {string} direction, either 'up' or 'down' */ onPropertyMove(direction) { - if (direction === 'up') { + if (direction === "up") { this.state.propertyIndex--; } else { this.state.propertyIndex++; @@ -322,7 +322,7 @@ export class PropertyDefinition extends Component { return; } this.state.resModelDescription = result[0].display_name; - } catch (_) { + } catch { // can not read the ir.model this.state.resModelDescription = sprintf( _lt('You do not have access to the model "%s".'), diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index a3cf7746cd2..badacbf650a 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -1649,7 +1649,7 @@ class DynamicList extends DataPoint { await Promise.all(validSelection.map((record) => record.load())); record.switchMode("readonly"); this.model.notify(); - } catch (_) { + } catch { record.discard(); } validSelection.forEach((record) => { diff --git a/addons/web/static/src/webclient/actions/action_service.js b/addons/web/static/src/webclient/actions/action_service.js index d6b53dc433a..f9989bdd411 100644 --- a/addons/web/static/src/webclient/actions/action_service.js +++ b/addons/web/static/src/webclient/actions/action_service.js @@ -15,7 +15,16 @@ import { ActionDialog } from "./action_dialog"; import { CallbackRecorder } from "./action_hook"; import { ReportAction } from "./reports/report_action"; -import { Component, markup, onMounted, onWillUnmount, onError, useChildSubEnv, xml, reactive } from "@odoo/owl"; +import { + Component, + markup, + onMounted, + onWillUnmount, + onError, + useChildSubEnv, + xml, + reactive, +} from "@odoo/owl"; const actionHandlersRegistry = registry.category("action_handlers"); const actionRegistry = registry.category("actions"); @@ -194,7 +203,7 @@ function makeActionManager(env) { function _preprocessAction(action, context = {}) { try { action._originalAction = JSON.stringify(action); - } catch (_e) { + } catch { // do nothing, the action might simply not be serializable } action.context = makeContext([context, action.context], env.services.user.context); @@ -1270,7 +1279,7 @@ function makeActionManager(env) { // warning: quotes and double quotes problem due to json and xml clash // maybe we should force escaping in xml or do a better parse of the args array additionalArgs = JSON.parse(params.args.replace(/'/g, '"')); - } catch (_e) { + } catch { browser.console.error("Could not JSON.parse arguments", params.args); } args = args.concat(additionalArgs); diff --git a/addons/web/static/tests/core/l10n/dates_tests.js b/addons/web/static/tests/core/l10n/dates_tests.js index b56f3850f40..599ca82eb51 100644 --- a/addons/web/static/tests/core/l10n/dates_tests.js +++ b/addons/web/static/tests/core/l10n/dates_tests.js @@ -44,13 +44,13 @@ function runTestSet(assert, testSet, options) { let res2; try { res1 = options.newFn(input); - } catch (_e) { + } catch { // continue } try { res2 = options.legacyFn(input); - } catch (_e) { + } catch { // continue } diff --git a/addons/web/static/tests/core/network/rpc_service_tests.js b/addons/web/static/tests/core/network/rpc_service_tests.js index b45910c4e45..364f35790aa 100644 --- a/addons/web/static/tests/core/network/rpc_service_tests.js +++ b/addons/web/static/tests/core/network/rpc_service_tests.js @@ -108,7 +108,7 @@ QUnit.test("trigger an error when response has 'error' key", async (assert) => { }); try { await env.services.rpc("/test/"); - } catch (_error) { + } catch { assert.ok(true); } unpatch(browser, "mock.xhr"); @@ -234,7 +234,7 @@ QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a rpc with an error", }); try { await env.services.rpc("/test/"); - } catch (_e) { + } catch { assert.ok(true); } assert.strictEqual(rpcIdsRequest.toString(), rpcIdsResponse.toString()); diff --git a/addons/web/static/tests/helpers/mock_services.js b/addons/web/static/tests/helpers/mock_services.js index 46c8a5b479b..ad5f6923161 100644 --- a/addons/web/static/tests/helpers/mock_services.js +++ b/addons/web/static/tests/helpers/mock_services.js @@ -107,13 +107,13 @@ export function makeMockXHR(response, sendCb, def) { if (typeof data === "string") { try { data = JSON.parse(data); - } catch (_e) { + } catch { // Ignore } } try { await sendCb.call(this, data); - } catch (_e) { + } catch { listener = this._errorListener; } } @@ -148,7 +148,7 @@ export function makeMockFetch(mockRPC) { try { res = await _rpc(route, params); status = 200; - } catch (_e) { + } catch { status = 500; } const blob = new Blob([JSON.stringify(res || {})], { type: "application/json" }); diff --git a/addons/web/static/tests/legacy/fields/basic_fields_tests.js b/addons/web/static/tests/legacy/fields/basic_fields_tests.js index 20ceb4459cc..3827767a367 100644 --- a/addons/web/static/tests/legacy/fields/basic_fields_tests.js +++ b/addons/web/static/tests/legacy/fields/basic_fields_tests.js @@ -8689,7 +8689,7 @@ QUnit.module('Legacy basic_fields', { var left = $progressBarEl.offset().left + 5; try { testUtils.dom.triggerPositionalMouseEvent(left, top, "click"); - } catch (_e) { + } catch { form.destroy(); $view.remove(); throw new Error('The test fails to simulate a click in the screen. Your screen is probably too small or your dev tools is open.'); @@ -8736,7 +8736,7 @@ QUnit.module('Legacy basic_fields', { var left = $progressBarEl.offset().left + 5; try { testUtils.dom.triggerPositionalMouseEvent(left, top, "click"); - } catch (_e) { + } catch { form.destroy(); $view.remove(); throw new Error('The test fails to simulate a click in the screen. Your screen is probably too small or your dev tools is open.'); diff --git a/addons/web/static/tests/legacy/mockserver_tests.js b/addons/web/static/tests/legacy/mockserver_tests.js index ef03ccdba32..dd1f24359fc 100644 --- a/addons/web/static/tests/legacy/mockserver_tests.js +++ b/addons/web/static/tests/legacy/mockserver_tests.js @@ -114,7 +114,7 @@ QUnit.module("Legacy MockServer", { args: [], kwargs: {}, }); - } catch (_error) { + } catch { assert.step("name_get failed") } assert.verifySteps(["name_get failed"]) @@ -166,7 +166,7 @@ QUnit.module("Legacy MockServer", { args: [11111], kwargs: {}, }); - } catch (_error) { + } catch { assert.step("name_get failed") } assert.verifySteps(["name_get failed"]) diff --git a/addons/web/static/tests/legacy/views/basic_model_tests.js b/addons/web/static/tests/legacy/views/basic_model_tests.js index 0dbc6a5a3db..193659a72f0 100644 --- a/addons/web/static/tests/legacy/views/basic_model_tests.js +++ b/addons/web/static/tests/legacy/views/basic_model_tests.js @@ -247,7 +247,7 @@ odoo.define('web.basic_model_tests', function (require) { try { await model.load(this.params); } - catch (_e) { + catch { assert.ok("load should return a rejected deferred for an invalid id"); } diff --git a/addons/web/static/tests/legacy/views/kanban_tests.js b/addons/web/static/tests/legacy/views/kanban_tests.js index 4d994a09f7d..c176fdb940a 100644 --- a/addons/web/static/tests/legacy/views/kanban_tests.js +++ b/addons/web/static/tests/legacy/views/kanban_tests.js @@ -5630,7 +5630,7 @@ QUnit.module('LegacyViews', { try { await testUtils.dom.click(kanban.$('.o_kanban_record:contains(yop) button[data-name="toggle_action"]')); assert.strictEqual(true, true, 'Everything went fine'); - } catch (_e) { + } catch { assert.strictEqual(true, false, 'Error triggered at action execution'); } kanban.destroy(); diff --git a/addons/web/static/tests/mock_server_tests.js b/addons/web/static/tests/mock_server_tests.js index 99b87a49b17..dae1fdf6c28 100644 --- a/addons/web/static/tests/mock_server_tests.js +++ b/addons/web/static/tests/mock_server_tests.js @@ -198,7 +198,7 @@ QUnit.module("MockServer", (hooks) => { args: [], kwargs: {}, }); - } catch (_) { + } catch { assert.step("name_get failed"); } assert.verifySteps(["name_get failed"]); @@ -246,7 +246,7 @@ QUnit.module("MockServer", (hooks) => { args: [11111], kwargs: {}, }); - } catch (_) { + } catch { assert.step("name_get failed"); } assert.verifySteps(["name_get failed"]); diff --git a/addons/web/static/tests/search/group_by_tests.js b/addons/web/static/tests/search/group_by_tests.js index b7eed73f7a2..1fb82603306 100644 --- a/addons/web/static/tests/search/group_by_tests.js +++ b/addons/web/static/tests/search/group_by_tests.js @@ -34,12 +34,12 @@ QUnit.module("GroupBy Class", {}, () => { assert.expect(3); try { getGroupBy(":day"); - } catch (_e) { + } catch { assert.step("Error 1"); } try { getGroupBy("diay_name:yar"); - } catch (_e) { + } catch { assert.step("Error 2"); } assert.verifySteps(["Error 1", "Error 2"]); @@ -56,22 +56,22 @@ QUnit.module("GroupBy Class", {}, () => { assert.expect(5); try { getGroupBy("", fields); - } catch (_e) { + } catch { assert.step("Error 1"); } try { getGroupBy("display_name:day", fields); - } catch (_e) { + } catch { assert.step("Error 2"); } try { getGroupBy("diay_name:year", fields); - } catch (_e) { + } catch { assert.step("Error 3"); } try { getGroupBy("diay_name:yar", fields); - } catch (_e) { + } catch { assert.step("Error 4"); } assert.verifySteps(["Error 1", "Error 2", "Error 3", "Error 4"]); @@ -91,7 +91,7 @@ QUnit.module("GroupBy Class", {}, () => { assert.expect(2); try { getGroupBy("date_field:yar", fields); - } catch (_e) { + } catch { assert.step("Error"); } assert.verifySteps(["Error"]); diff --git a/addons/web/static/tests/webclient/actions/reports/report_action_tests.js b/addons/web/static/tests/webclient/actions/reports/report_action_tests.js index a478ef66aef..0b4f101a2cc 100644 --- a/addons/web/static/tests/webclient/actions/reports/report_action_tests.js +++ b/addons/web/static/tests/webclient/actions/reports/report_action_tests.js @@ -253,7 +253,7 @@ QUnit.module("ActionManager", (hooks) => { await doAction(webClient, 7); try { await doAction(webClient, 7); - } catch (_e) { + } catch { assert.step("error caught"); } assert.verifySteps([ diff --git a/addons/web_editor/static/src/components/media_dialog/image_selector.js b/addons/web_editor/static/src/components/media_dialog/image_selector.js index 9c0b82379de..426853e7468 100644 --- a/addons/web_editor/static/src/components/media_dialog/image_selector.js +++ b/addons/web_editor/static/src/components/media_dialog/image_selector.js @@ -284,7 +284,7 @@ export class ImageSelector extends FileSelector { media.dynamicColors = dynamicColors; } } - } catch (_e) { + } catch { console.error('CORS is misconfigured on the API server, image will be treated as non-dynamic.'); } } diff --git a/addons/web_editor/static/src/js/backend/field_html.js b/addons/web_editor/static/src/js/backend/field_html.js index 8a9b043dfd6..36ab8e98348 100644 --- a/addons/web_editor/static/src/js/backend/field_html.js +++ b/addons/web_editor/static/src/js/backend/field_html.js @@ -417,7 +417,7 @@ var FieldHtml = basic_fields.DebouncedField.extend(DynamicPlaceholderFieldMixin) var cwindow = self.$iframe[0].contentWindow; try { cwindow.document; - } catch (_e) { + } catch { return; } cwindow.document @@ -494,7 +494,7 @@ var FieldHtml = basic_fields.DebouncedField.extend(DynamicPlaceholderFieldMixin) var value = text || ""; try { $(text)[0].innerHTML; // crashes if text isn't html - } catch (_e) { + } catch { if (value.match(/^\s*$/)) { value = '


'; } else { diff --git a/addons/web_editor/static/src/js/backend/html_field.js b/addons/web_editor/static/src/js/backend/html_field.js index e6b14141425..cf57010ac4e 100644 --- a/addons/web_editor/static/src/js/backend/html_field.js +++ b/addons/web_editor/static/src/js/backend/html_field.js @@ -409,7 +409,7 @@ export class HtmlField extends Component { const cwindow = this.iframeRef.el.contentWindow; try { cwindow.document; - } catch (_e) { + } catch { return; } cwindow.document diff --git a/addons/web_editor/static/src/js/wysiwyg/fonts.js b/addons/web_editor/static/src/js/wysiwyg/fonts.js index f57ea0cbb9c..e35fcae7459 100644 --- a/addons/web_editor/static/src/js/wysiwyg/fonts.js +++ b/addons/web_editor/static/src/js/wysiwyg/fonts.js @@ -35,7 +35,7 @@ return { // document.styleSheets[].cssRules[] for cross-domain // stylesheets. rules = sheets[i].rules || sheets[i].cssRules; - } catch (_e) { + } catch { continue; } if (!rules) { diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/link_dialog.js b/addons/web_editor/static/src/js/wysiwyg/widgets/link_dialog.js index 4c400062281..e810056e2e2 100644 --- a/addons/web_editor/static/src/js/wysiwyg/widgets/link_dialog.js +++ b/addons/web_editor/static/src/js/wysiwyg/widgets/link_dialog.js @@ -125,7 +125,7 @@ const _DialogLinkWidget = Link.extend({ const Url = URL || window.URL || window.webkitURL; const urlObj = url.startsWith('/') ? new Url(url, window.location.origin) : new Url(url); return (urlObj.origin !== window.location.origin); - } catch (_ignored) { + } catch { return true; } }, diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/link_popover_widget.js b/addons/web_editor/static/src/js/wysiwyg/widgets/link_popover_widget.js index 0bce36cf05a..6b42d0c593e 100644 --- a/addons/web_editor/static/src/js/wysiwyg/widgets/link_popover_widget.js +++ b/addons/web_editor/static/src/js/wysiwyg/widgets/link_popover_widget.js @@ -174,7 +174,7 @@ const LinkPopoverWidget = Widget.extend({ } try { url = new URL(this.target.href); // relative to absolute - } catch (_e) { + } catch { // Invalid URL, might happen with editor unsuported protocol. eg type // `geo:37.786971,-122.399677`, become `http://geo:37.786971,-122.399677` this.displayNotification({ diff --git a/addons/website/static/src/js/editor/snippets.editor.js b/addons/website/static/src/js/editor/snippets.editor.js index b104e154fba..f1d3bba6c25 100644 --- a/addons/website/static/src/js/editor/snippets.editor.js +++ b/addons/website/static/src/js/editor/snippets.editor.js @@ -129,7 +129,7 @@ const wSnippetMenu = weSnippetEditor.SnippetsMenu.extend({ class: 'ms-1', })); } - } catch (_e) { + } catch { $apiKeyHelp.text(_t("Check your connection and try again")); } finally { $button.prop("disabled", false); @@ -377,7 +377,7 @@ const wSnippetMenu = weSnippetEditor.SnippetsMenu.extend({ try { range.surroundContents(animatedTextEl); $snippet = $(animatedTextEl); - } catch (_e) { + } catch { // This try catch is needed because 'surroundContents' may // fail when the range has partially selected a non-Text node. if (range.commonAncestorContainer.textContent === range.toString()) { diff --git a/addons/website/static/src/snippets/s_social_media/options.js b/addons/website/static/src/snippets/s_social_media/options.js index 88d4895401f..7a625c749ad 100644 --- a/addons/website/static/src/snippets/s_social_media/options.js +++ b/addons/website/static/src/snippets/s_social_media/options.js @@ -284,7 +284,7 @@ options.registry.SocialMedia = options.Class.extend({ const iconNames = fonts.fontIcons[0].alias; const exactIcon = iconNames.find(el => el === `fa-${domain}`); return (exactIcon || iconNames.find(el => el.includes(domain))).split('fa-').pop(); - } catch (_error) { + } catch { return false; } }, @@ -317,7 +317,7 @@ options.registry.SocialMedia = options.Class.extend({ let url; try { url = new URL(str); - } catch (_error) { + } catch { return false; } return url.protocol.startsWith('http'); diff --git a/addons/website/static/src/snippets/s_website_form/000.js b/addons/website/static/src/snippets/s_website_form/000.js index ae537edd823..485bed1a616 100644 --- a/addons/website/static/src/snippets/s_website_form/000.js +++ b/addons/website/static/src/snippets/s_website_form/000.js @@ -444,7 +444,7 @@ odoo.define('website.s_website_form', function (require) { try { this.parse_date(value, type_of_date); return true; - } catch (_e) { + } catch { return false; } } diff --git a/addons/website_event_exhibitor/static/src/js/event_sponsor_search.js b/addons/website_event_exhibitor/static/src/js/event_sponsor_search.js index 74f4e166c1f..a11d0701462 100644 --- a/addons/website_event_exhibitor/static/src/js/event_sponsor_search.js +++ b/addons/website_event_exhibitor/static/src/js/event_sponsor_search.js @@ -59,7 +59,7 @@ publicWidget.registry.websiteEventSearchSponsor = publicWidget.Widget.extend({ const ids = JSON.parse(params.get(name)); params.set(name, JSON.stringify(ids.filter(id => id !== data.value))); this.form.attr('action', `${window.location.href.split('?')[0]}?${params.toString()}`); - } catch (_e) { + } catch { return; } }, diff --git a/odoo/addons/test_lint/tests/eslintrc b/odoo/addons/test_lint/tests/eslintrc index c1018c1802c..59af40f4928 100644 --- a/odoo/addons/test_lint/tests/eslintrc +++ b/odoo/addons/test_lint/tests/eslintrc @@ -20,7 +20,7 @@ "no-unsafe-negation": ["error"], "no-duplicate-imports": ["error"], "valid-typeof": ["error"], - "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": false, "caughtErrors": "all", "caughtErrorsIgnorePattern": "^_" }] + "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": false, "caughtErrors": "all" }] }, "globals": { "owl": "readonly",