import { Dispatch } from '@reduxjs/toolkit'; import { sanitizeSessionUsername } from '../../../session/utils/String'; export function sanitizeDisplayNameOrToast( displayName: string, // can be a useState or redux function setDisplayNameError: (error: string | undefined) => any, dispatch?: Dispatch ) { try { const sanitizedName = sanitizeSessionUsername(displayName); const trimName = sanitizedName.trim(); const errorString = !trimName ? window.i18n('displayNameEmpty') : undefined; if (dispatch) { dispatch(setDisplayNameError(errorString)); } else { setDisplayNameError(errorString); } return sanitizedName; } catch (e) { if (dispatch) { dispatch(setDisplayNameError(window.i18n('displayNameErrorDescriptionShorter'))); } else { setDisplayNameError(window.i18n('displayNameErrorDescriptionShorter')); } return displayName; } } /** * 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('displayNameEmpty')); } const trimName = displayName.trim(); if (!trimName) { throw new Error(window.i18n('displayNameEmpty')); } return trimName; };