From 47fad3353f9ef510a11f2f690e8c2f6ae492fffd Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Wed, 21 Nov 2018 16:10:45 +0100 Subject: Add parseBoolean helper function --- app/assets/javascripts/lib/utils/common_utils.js | 18 +++++++++++++++++- spec/javascripts/lib/utils/common_utils_spec.js | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index 3186ae9c133..040d0bc659e 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -420,13 +420,29 @@ export const historyPushState = newUrl => { window.history.pushState({}, document.title, newUrl); }; +/** + * Returns true for a String "true" and false otherwise. + * This is the opposite of Boolean(...).toString() + * + * @param {String} value + * @returns {Boolean} + */ +export const parseBoolean = value => value === 'true'; + /** * Converts permission provided as strings to booleans. * * @param {String} string * @returns {Boolean} */ -export const convertPermissionToBoolean = permission => permission === 'true'; +export const convertPermissionToBoolean = permission => { + if (process.env.NODE_ENV !== 'production') { + // eslint-disable-next-line no-console + console.warn('convertPermissionToBoolean is deprecated! Please use parseBoolean instead.'); + } + + return parseBoolean(permission); +}; /** * Back Off exponential algorithm diff --git a/spec/javascripts/lib/utils/common_utils_spec.js b/spec/javascripts/lib/utils/common_utils_spec.js index 1c7691f865a..1ec1e8a8dd9 100644 --- a/spec/javascripts/lib/utils/common_utils_spec.js +++ b/spec/javascripts/lib/utils/common_utils_spec.js @@ -346,6 +346,24 @@ describe('common_utils', () => { }); }); + describe('parseBoolean', () => { + it('returns true for "true"', () => { + expect(commonUtils.parseBoolean('true')).toEqual(true); + }); + + it('returns false for "false"', () => { + expect(commonUtils.parseBoolean('false')).toEqual(false); + }); + + it('returns false for "something"', () => { + expect(commonUtils.parseBoolean('something')).toEqual(false); + }); + + it('returns false for null', () => { + expect(commonUtils.parseBoolean(null)).toEqual(false); + }); + }); + describe('convertPermissionToBoolean', () => { it('should convert a boolean in a string to a boolean', () => { expect(commonUtils.convertPermissionToBoolean('true')).toEqual(true); -- cgit v1.2.1 From 8ef51157950366f64cbd41ccf070e1facd104cae Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Wed, 21 Nov 2018 16:13:04 +0100 Subject: Replace convertPermissionToBoolean with parseBoolean --- app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js | 4 ++-- app/assets/javascripts/behaviors/secret_values.js | 8 +++----- app/assets/javascripts/build_artifacts.js | 4 ++-- app/assets/javascripts/ci_variable_list/ajax_variable_list.js | 4 ++-- app/assets/javascripts/ci_variable_list/ci_variable_list.js | 4 ++-- app/assets/javascripts/diffs/components/tree_list.vue | 5 ++--- .../javascripts/environments/folder/environments_folder_bundle.js | 6 +++--- app/assets/javascripts/environments/index.js | 8 ++++---- app/assets/javascripts/ide/index.js | 4 ++-- app/assets/javascripts/importer_status.js | 4 ++-- app/assets/javascripts/monitoring/monitoring_bundle.js | 4 ++-- app/assets/javascripts/pages/projects/pipelines/index/index.js | 6 +++--- app/assets/javascripts/toggle_buttons.js | 6 +++--- app/assets/javascripts/usage_ping_consent.js | 6 +++--- 14 files changed, 35 insertions(+), 38 deletions(-) diff --git a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js index a303e504cc7..55c68139ded 100644 --- a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js +++ b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js @@ -1,11 +1,11 @@ import $ from 'jquery'; -import { convertPermissionToBoolean } from '~/lib/utils/common_utils'; +import { parseBoolean } from '~/lib/utils/common_utils'; import GfmAutoComplete from '~/gfm_auto_complete'; export default function initGFMInput() { $('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => { const gfm = new GfmAutoComplete(gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources); - const enableGFM = convertPermissionToBoolean(el.dataset.supportsAutocomplete); + const enableGFM = parseBoolean(el.dataset.supportsAutocomplete); gfm.setup($(el), { emojis: true, diff --git a/app/assets/javascripts/behaviors/secret_values.js b/app/assets/javascripts/behaviors/secret_values.js index f6bf62d734e..5b92608d536 100644 --- a/app/assets/javascripts/behaviors/secret_values.js +++ b/app/assets/javascripts/behaviors/secret_values.js @@ -1,5 +1,5 @@ import { n__ } from '../locale'; -import { convertPermissionToBoolean } from '../lib/utils/common_utils'; +import { parseBoolean } from '../lib/utils/common_utils'; export default class SecretValues { constructor({ @@ -16,7 +16,7 @@ export default class SecretValues { this.revealButton = this.container.querySelector('.js-secret-value-reveal-button'); if (this.revealButton) { - const isRevealed = convertPermissionToBoolean(this.revealButton.dataset.secretRevealStatus); + const isRevealed = parseBoolean(this.revealButton.dataset.secretRevealStatus); this.updateDom(isRevealed); this.revealButton.addEventListener('click', this.onRevealButtonClicked.bind(this)); @@ -24,9 +24,7 @@ export default class SecretValues { } onRevealButtonClicked() { - const previousIsRevealed = convertPermissionToBoolean( - this.revealButton.dataset.secretRevealStatus, - ); + const previousIsRevealed = parseBoolean(this.revealButton.dataset.secretRevealStatus); this.updateDom(!previousIsRevealed); } diff --git a/app/assets/javascripts/build_artifacts.js b/app/assets/javascripts/build_artifacts.js index 97a1645aa51..b2c88e8c14e 100644 --- a/app/assets/javascripts/build_artifacts.js +++ b/app/assets/javascripts/build_artifacts.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import { visitUrl } from './lib/utils/url_utility'; -import { convertPermissionToBoolean } from './lib/utils/common_utils'; +import { parseBoolean } from './lib/utils/common_utils'; export default class BuildArtifacts { constructor() { @@ -22,7 +22,7 @@ export default class BuildArtifacts { // eslint-disable-next-line class-methods-use-this setupEntryClick() { return $('.tree-holder').on('click', 'tr[data-link]', function() { - visitUrl(this.dataset.link, convertPermissionToBoolean(this.dataset.externalLink)); + visitUrl(this.dataset.link, parseBoolean(this.dataset.externalLink)); }); } // eslint-disable-next-line class-methods-use-this diff --git a/app/assets/javascripts/ci_variable_list/ajax_variable_list.js b/app/assets/javascripts/ci_variable_list/ajax_variable_list.js index dffabbfe1b8..592e1fd1c31 100644 --- a/app/assets/javascripts/ci_variable_list/ajax_variable_list.js +++ b/app/assets/javascripts/ci_variable_list/ajax_variable_list.js @@ -2,7 +2,7 @@ import _ from 'underscore'; import axios from '../lib/utils/axios_utils'; import { s__ } from '../locale'; import Flash from '../flash'; -import { convertPermissionToBoolean } from '../lib/utils/common_utils'; +import { parseBoolean } from '../lib/utils/common_utils'; import statusCodes from '../lib/utils/http_status'; import VariableList from './ci_variable_list'; @@ -101,7 +101,7 @@ export default class AjaxVariableList { // If we submitted a row that was destroyed, remove it so we don't try // to destroy it again which would cause a BE error const destroyInput = row.querySelector('.js-ci-variable-input-destroy'); - if (convertPermissionToBoolean(destroyInput.value)) { + if (parseBoolean(destroyInput.value)) { row.remove(); // Update the ID input so any future edits and `_destroy` will apply on the BE } else { diff --git a/app/assets/javascripts/ci_variable_list/ci_variable_list.js b/app/assets/javascripts/ci_variable_list/ci_variable_list.js index 7bdc18ce03e..ee0f7cda189 100644 --- a/app/assets/javascripts/ci_variable_list/ci_variable_list.js +++ b/app/assets/javascripts/ci_variable_list/ci_variable_list.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import { convertPermissionToBoolean } from '../lib/utils/common_utils'; +import { parseBoolean } from '../lib/utils/common_utils'; import { s__ } from '../locale'; import setupToggleButtons from '../toggle_buttons'; import CreateItemDropdown from '../create_item_dropdown'; @@ -150,7 +150,7 @@ export default class VariableList { removeRow(row) { const $row = $(row); - const isPersisted = convertPermissionToBoolean($row.attr('data-is-persisted')); + const isPersisted = parseBoolean($row.attr('data-is-persisted')); if (isPersisted) { $row.hide(); diff --git a/app/assets/javascripts/diffs/components/tree_list.vue b/app/assets/javascripts/diffs/components/tree_list.vue index ec4a4aa1d6d..f40a7b25fde 100644 --- a/app/assets/javascripts/diffs/components/tree_list.vue +++ b/app/assets/javascripts/diffs/components/tree_list.vue @@ -1,7 +1,7 @@