From 0beacb19c954204b19cdca97557237bc11e228c0 Mon Sep 17 00:00:00 2001 From: Nick Taylor Date: Tue, 23 Mar 2021 16:29:56 -0400 Subject: [PATCH] [15 Minute Fix] Added the prefer-const eslint rule (#13098) --- app/javascript/.eslintrc.js | 1 + .../admin/controllers/ahoy_controller.js | 2 +- .../data_update_script_controller.js | 14 ++++---- .../controllers/image_upload_controller.js | 2 +- app/javascript/chat/chat.jsx | 8 ++--- .../dashboardTagsDisableUnchangedButtons.js | 33 ++++++++++--------- .../shared/components/useKeyboardShortcuts.js | 3 +- app/javascript/topNavigation/utilities.js | 6 ++-- .../utilities/codeFullscreenModeSwitcher.js | 4 +-- cypress/.eslintrc.js | 1 + 10 files changed, 38 insertions(+), 36 deletions(-) diff --git a/app/javascript/.eslintrc.js b/app/javascript/.eslintrc.js index 53d5898fa..411f7f23f 100644 --- a/app/javascript/.eslintrc.js +++ b/app/javascript/.eslintrc.js @@ -54,6 +54,7 @@ module.exports = { ], 'react/jsx-no-target-blank': [2, { enforceDynamicLinks: 'always' }], 'jsx-a11y/no-onchange': 'off', + 'prefer-const': ['error'], }, overrides: [ { diff --git a/app/javascript/admin/controllers/ahoy_controller.js b/app/javascript/admin/controllers/ahoy_controller.js index ec246dbf5..4811cd4a4 100644 --- a/app/javascript/admin/controllers/ahoy_controller.js +++ b/app/javascript/admin/controllers/ahoy_controller.js @@ -9,7 +9,7 @@ ahoy.configure({ export default class AhoyController extends Controller { trackOverviewLink(event) { event.preventDefault(); - let properties = { + const properties = { action: event.type, target: event.target.toString(), }; diff --git a/app/javascript/admin/controllers/data_update_script_controller.js b/app/javascript/admin/controllers/data_update_script_controller.js index bb2e87229..5ff00f885 100644 --- a/app/javascript/admin/controllers/data_update_script_controller.js +++ b/app/javascript/admin/controllers/data_update_script_controller.js @@ -4,10 +4,10 @@ export default class DataUpdateScriptController extends Controller { forceRun(event) { event.preventDefault(); const id = event.target.dataset.value; - let statusColumn = document.getElementById( + const statusColumn = document.getElementById( `data_update_script_${id}_status`, ); - let runAtColumn = document.getElementById( + const runAtColumn = document.getElementById( `data_update_script_${id}_run_at`, ); @@ -47,7 +47,7 @@ export default class DataUpdateScriptController extends Controller { pollForScriptResponse(id, statusColumn, runAtColumn) { let counter = 0; - let pollForStatus = setInterval(() => { + const pollForStatus = setInterval(() => { counter++; this.checkForUpdatedDataScript(id, runAtColumn, statusColumn).then( (updatedDataScript) => { @@ -60,12 +60,12 @@ export default class DataUpdateScriptController extends Controller { if (updatedDataScript.error) { // we need to show the html as text instead of a parsed version, // hence we manipulate the DOM through this longer process. - let errorElem = document.createElement('div'); + const errorElem = document.createElement('div'); errorElem.setAttribute('class', 'fs-xs'); errorElem.setAttribute('id', `data_update_script_${id}_error`); statusColumn.appendChild(errorElem); - let completedErrorElem = document.getElementById( + const completedErrorElem = document.getElementById( `data_update_script_${id}_error`, ); completedErrorElem.innerText = updatedDataScript.error; @@ -114,7 +114,7 @@ export default class DataUpdateScriptController extends Controller { }).then((response) => { if (response.ok) { return response.json().then((json) => { - let script = json.response; + const script = json.response; if (script.status === 'succeeded' || script.status === 'failed') { return script; } @@ -134,7 +134,7 @@ export default class DataUpdateScriptController extends Controller { } setErrorBanner(runAtColumn, statusColumn, error, bannerClass) { - let classList = document.getElementsByClassName( + const classList = document.getElementsByClassName( 'data-update-script__alert', )[0].classList; diff --git a/app/javascript/admin/controllers/image_upload_controller.js b/app/javascript/admin/controllers/image_upload_controller.js index 4118aa75e..67fb2b025 100644 --- a/app/javascript/admin/controllers/image_upload_controller.js +++ b/app/javascript/admin/controllers/image_upload_controller.js @@ -9,7 +9,7 @@ export default class ImageUploadController extends Controller { const token = document.getElementsByName('authenticity_token')[0].value; const image = this.fileFieldTarget.files[0]; - let formData = new FormData(); + const formData = new FormData(); formData.append('authenticity_token', token); formData.append('image', image); diff --git a/app/javascript/chat/chat.jsx b/app/javascript/chat/chat.jsx index a083a1879..ebbc4cb29 100644 --- a/app/javascript/chat/chat.jsx +++ b/app/javascript/chat/chat.jsx @@ -194,7 +194,7 @@ export class Chat extends Component { getChannelRequestInfo().then((response) => { const { result } = response; const { user_joining_requests, channel_joining_memberships } = result; - let totalRequest = + const totalRequest = user_joining_requests?.length + channel_joining_memberships?.length; this.setState({ userRequestCount: totalRequest, @@ -811,7 +811,7 @@ export class Chat extends Component { newUnopenedChannelIds.splice(index, 1); } - let updatedActiveChannel = this.filterForActiveChannel( + const updatedActiveChannel = this.filterForActiveChannel( channelList, id, currentUserId, @@ -1251,8 +1251,8 @@ export class Chat extends Component { const { notificationsPermission } = state; const notificationsButton = ''; let notificationsState = ''; - let invitesButton = ''; - let joiningRequestButton = ''; + const invitesButton = ''; + const joiningRequestButton = ''; if (notificationsPermission === 'granted') { notificationsState = (
diff --git a/app/javascript/packs/dashboardTagsDisableUnchangedButtons.js b/app/javascript/packs/dashboardTagsDisableUnchangedButtons.js index 0a85f47a0..45ff28bc0 100644 --- a/app/javascript/packs/dashboardTagsDisableUnchangedButtons.js +++ b/app/javascript/packs/dashboardTagsDisableUnchangedButtons.js @@ -1,35 +1,36 @@ -document.getElementById('follows_update_form').addEventListener('submit', checkChanged); +document + .getElementById('follows_update_form') + .addEventListener('submit', checkChanged); -document.addEventListener('change', function(event) { - if (event.target && event.target.name == 'follows[][explicit_points]'){ - addChanged(event.target) +document.addEventListener('change', (event) => { + if (event.target && event.target.name == 'follows[][explicit_points]') { + addChanged(event.target); } }); function addChanged(element) { element.setAttribute('changed', true); -}; +} function checkChanged(event) { if (document.querySelector('input[changed]')) { disableAllUnchanged(); - } - else { + } else { event.preventDefault(); } -}; +} function disableAllUnchanged() { - document.querySelectorAll('div[id^="follows"]').forEach(disableUnchanged) -}; + document.querySelectorAll('div[id^="follows"]').forEach(disableUnchanged); +} function disableUnchanged(item) { - let inputs = item.getElementsByTagName('input') - let id = inputs[0] - let point = inputs[1] + const inputs = item.getElementsByTagName('input'); + const id = inputs[0]; + const point = inputs[1]; if (!point.hasAttribute('changed')) { - point.setAttribute('disabled', true) - id.setAttribute('disabled', true) + point.setAttribute('disabled', true); + id.setAttribute('disabled', true); } -}; +} diff --git a/app/javascript/shared/components/useKeyboardShortcuts.js b/app/javascript/shared/components/useKeyboardShortcuts.js index fa7923353..8ac2c32f0 100644 --- a/app/javascript/shared/components/useKeyboardShortcuts.js +++ b/app/javascript/shared/components/useKeyboardShortcuts.js @@ -100,9 +100,8 @@ export function useKeyboardShortcuts( // Set up key chains useEffect(() => { if (!keyChainQueue && keyChain.length === 0) return; - let timeout; - timeout = window.setTimeout(() => { + const timeout = window.setTimeout(() => { clearTimeout(timeout); setKeyChain([]); }, mergedOptions.timeout); diff --git a/app/javascript/topNavigation/utilities.js b/app/javascript/topNavigation/utilities.js index 58c682110..007f3c5de 100644 --- a/app/javascript/topNavigation/utilities.js +++ b/app/javascript/topNavigation/utilities.js @@ -23,7 +23,7 @@ function toggleHeaderMenu(memberMenu, navigationButton) { return; } - let crayonsHeaderMenuClassList = memberMenu.classList; + const crayonsHeaderMenuClassList = memberMenu.classList; if (crayonsHeaderMenuClassList.contains('showing')) { crayonsHeaderMenuClassList.remove('showing'); navigationButton.setAttribute('aria-expanded', 'false'); @@ -31,7 +31,7 @@ function toggleHeaderMenu(memberMenu, navigationButton) { crayonsHeaderMenuClassList.add('showing'); navigationButton.setAttribute('aria-expanded', 'true'); - let firstNavLink = document.getElementById('first-nav-link'); + const firstNavLink = document.getElementById('first-nav-link'); if (firstNavLink) { setTimeout(() => { // focus first item on open @@ -53,7 +53,7 @@ export function initializeTouchDevice(memberTopMenu, menuNavButton) { } if (memberTopMenu) { - let crayonsHeaderMenuClassList = memberTopMenu.classList; + const crayonsHeaderMenuClassList = memberTopMenu.classList; setTimeout(() => { closeHeaderMenu(memberTopMenu, menuNavButton); diff --git a/app/javascript/utilities/codeFullscreenModeSwitcher.js b/app/javascript/utilities/codeFullscreenModeSwitcher.js index 9f578264d..4bcef2742 100644 --- a/app/javascript/utilities/codeFullscreenModeSwitcher.js +++ b/app/javascript/utilities/codeFullscreenModeSwitcher.js @@ -37,7 +37,7 @@ function toggleOverflowForDocument(overflow) { export function addFullScreenModeControl(elements) { if (elements) { - for (let element of elements) { + for (const element of elements) { element.addEventListener('click', fullScreenModeControl); } } @@ -45,7 +45,7 @@ export function addFullScreenModeControl(elements) { function removeFullScreenModeControl(elements) { if (elements) { - for (let element of elements) { + for (const element of elements) { element.removeEventListener('click', fullScreenModeControl); } } diff --git a/cypress/.eslintrc.js b/cypress/.eslintrc.js index 6b42f8074..ef03accab 100644 --- a/cypress/.eslintrc.js +++ b/cypress/.eslintrc.js @@ -17,6 +17,7 @@ module.exports = { 'import/order': ['error'], 'import/prefer-default-export': 'off', 'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + 'prefer-const': ['error'], }, overrides: [ {