|
|
|
import { AnyAction, Dispatch } from '@reduxjs/toolkit';
|
|
|
|
import { sanitizeSessionUsername } from '../../../session/utils/String';
|
|
|
|
|
|
|
|
export function sanitizeDisplayNameOrToast(
|
|
|
|
displayName: string,
|
|
|
|
setDisplayNameError: (error: string | undefined) => AnyAction,
|
|
|
|
dispatch: Dispatch
|
|
|
|
) {
|
|
|
|
try {
|
|
|
|
const sanitizedName = sanitizeSessionUsername(displayName);
|
|
|
|
const trimName = sanitizedName.trim();
|
|
|
|
dispatch(setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined));
|
|
|
|
return sanitizedName;
|
|
|
|
} catch (e) {
|
|
|
|
dispatch(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;
|
|
|
|
};
|