From ff85660aebc19c3d37b76238f54ec1bcafd99894 Mon Sep 17 00:00:00 2001 From: yougotwill Date: Fri, 7 Feb 2025 16:32:27 +1100 Subject: [PATCH] fix: combine sanitizeDisplayNameOrToast and displayNameIsValid into one function --- ts/components/registration/utils/index.tsx | 37 +++---------------- .../unit/onboarding/Onboarding_test.ts | 20 +++++----- 2 files changed, 15 insertions(+), 42 deletions(-) diff --git a/ts/components/registration/utils/index.tsx b/ts/components/registration/utils/index.tsx index 69b938483..0c2f19dd6 100644 --- a/ts/components/registration/utils/index.tsx +++ b/ts/components/registration/utils/index.tsx @@ -1,37 +1,12 @@ -import { Dispatch } from '@reduxjs/toolkit'; +import { EmptyDisplayNameError } from '../../../session/utils/errors'; import { sanitizeSessionUsername } from '../../../session/utils/String'; -export function sanitizeDisplayNameOrToast( - displayName: string, - // can be a useState or redux function - onDisplayNameError: (error: string | undefined) => any, - dispatch?: Dispatch -) { - const sanitizedName = sanitizeSessionUsername(displayName); - const errorString = !sanitizedName ? window.i18n('displayNameErrorDescription') : undefined; - if (dispatch) { - dispatch(onDisplayNameError(errorString)); - } else { - onDisplayNameError(errorString); // this is is either calling dispatch in the caller or just `setDisplayNameError` +export function sanitizeDisplayNameOrToast(displayName: string) { + const sanitizedName = sanitizeSessionUsername(displayName).trim(); + + if (!sanitizedName) { + throw new EmptyDisplayNameError(); } return sanitizedName; } - -/** - * Returns undefined if an error happened, or the trim userName. - * - * Be sure to use the trimmed userName for creating the account. - */ -export const displayNameIsValid = (displayName?: string): string => { - if (!displayName) { - throw new Error(window.i18n('displayNameErrorDescription')); - } - - const trimName = displayName.trim(); - if (!trimName) { - throw new Error(window.i18n('displayNameErrorDescription')); - } - - return trimName; -}; diff --git a/ts/test/session/unit/onboarding/Onboarding_test.ts b/ts/test/session/unit/onboarding/Onboarding_test.ts index 81653687c..0086a2731 100644 --- a/ts/test/session/unit/onboarding/Onboarding_test.ts +++ b/ts/test/session/unit/onboarding/Onboarding_test.ts @@ -1,6 +1,5 @@ import { expect } from 'chai'; import Sinon from 'sinon'; -import { displayNameIsValid } from '../../../../components/registration/utils'; import { getSwarmPollingInstance } from '../../../../session/apis/snode_api'; import { PubKey } from '../../../../session/types'; import { @@ -10,6 +9,8 @@ import { } from '../../../../util/accountManager'; import { TestUtils } from '../../../test-utils'; import { stubWindow } from '../../../test-utils/utils'; +import { sanitizeDisplayNameOrToast } from '../../../../components/registration/utils'; +import { EmptyDisplayNameError } from '../../../../session/utils/errors'; describe('Onboarding', () => { const polledDisplayName = 'Hello World'; @@ -28,31 +29,28 @@ describe('Onboarding', () => { Sinon.restore(); }); - describe('displayNameIsValid', () => { + describe('sanitizeDisplayNameOrToast', () => { it('should throw an error if the display name is undefined', async () => { try { - displayNameIsValid(undefined); + sanitizeDisplayNameOrToast(''); } catch (error) { - error.should.be.an.instanceOf(Error); - error.message.should.equal(window.i18n('displayNameErrorDescription')); + error.should.be.an.instanceOf(EmptyDisplayNameError); } }); it('should throw an error if the display name is empty after trimming', async () => { try { - displayNameIsValid(' '); + sanitizeDisplayNameOrToast(' '); } catch (error) { - error.should.be.an.instanceOf(Error); - error.message.should.equal(window.i18n('displayNameErrorDescription')); + error.should.be.an.instanceOf(EmptyDisplayNameError); } }); it('if the display name is valid it should be returned', async () => { try { const displayName = 'Hello World'; - const validDisplayName = displayNameIsValid(displayName); + const validDisplayName = sanitizeDisplayNameOrToast(displayName); expect(validDisplayName, `should equal ${displayName}`).to.equal(displayName); } catch (error) { - error.should.not.be.an.instanceOf(Error); - error.message.should.not.equal(window.i18n('displayNameErrorDescription')); + error.should.not.be.an.instanceOf(EmptyDisplayNameError); } }); });