From 0464883ec668332db5a6399569880e7b3fa3ab3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Sun, 16 May 2021 20:00:06 +0200 Subject: [PATCH] Don't default to fallback in getSetting if value is falsy (#4202) --- assets/js/settings/shared/test/get-setting.js | 3 +++ assets/js/settings/shared/utils.ts | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/assets/js/settings/shared/test/get-setting.js b/assets/js/settings/shared/test/get-setting.js index 35730847f5c..221ce47c908 100644 --- a/assets/js/settings/shared/test/get-setting.js +++ b/assets/js/settings/shared/test/get-setting.js @@ -11,6 +11,9 @@ describe( 'getSetting', () => { it( 'returns expected value for existing setting', () => { expect( getSetting( 'adminUrl', 'not this' ) ).toEqual( ADMIN_URL ); } ); + it( "returns expected value for existing setting even if it's a falsy value", () => { + expect( getSetting( 'currentUserIsAdmin', true ) ).toBe( false ); + } ); it( 'filters value via provided filter callback', () => { expect( getSetting( 'some value', 'default', () => 42 ) ).toBe( 42 ); } ); diff --git a/assets/js/settings/shared/utils.ts b/assets/js/settings/shared/utils.ts index 5727e6d3520..b7cbfc87f84 100644 --- a/assets/js/settings/shared/utils.ts +++ b/assets/js/settings/shared/utils.ts @@ -11,13 +11,15 @@ import { allSettings } from './settings-init'; /** * Retrieves a setting value from the setting state. * - * If a setting with key `name` does not exist, the `fallback` will be returned instead. An optional `filter` callback - * can be passed to format the returned value. + * If a setting with key `name` does not exist or is undefined, + * the `fallback` will be returned instead. An optional `filter` + * callback can be passed to format the returned value. */ export const getSetting = ( name: string, fallback: unknown = false, - filter = ( val: unknown, fb: unknown ) => val || fb + filter = ( val: unknown, fb: unknown ) => + typeof val !== 'undefined' ? val : fb ): unknown => { const value = name in allSettings ? allSettings[ name ] : fallback; return filter( value, fallback );