import React, { useState } from 'react'; import _ from 'lodash'; import { useDispatch } from 'react-redux'; import { getConversationController } from '../../session/conversations'; import { SpacerLG } from '../basic/Text'; import { changeNickNameModal } from '../../state/ducks/modalDialog'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; import { SessionWrapperModal } from '../SessionWrapperModal'; type Props = { conversationId: string; }; export const SessionNicknameDialog = (props: Props) => { const { conversationId } = props; const [nickname, setNickname] = useState(''); const dispatch = useDispatch(); /** * Changes the state of nickname variable. If enter is pressed, saves the current * entered nickname value as the nickname. */ const onNicknameInput = async (event: any) => { if (event.key === 'Enter') { await saveNickname(); } else { const currentNicknameEntered = event.target.value; setNickname(currentNicknameEntered); } }; const onClickClose = () => { dispatch(changeNickNameModal(null)); }; /** * Saves the currently entered nickname. */ const saveNickname = async () => { if (!conversationId) { throw new Error('Cant save without conversation id'); } const conversation = getConversationController().get(conversationId); await conversation.setNickname(nickname, true); onClickClose(); }; return (
{window.i18n('changeNicknameMessage')}
{ void onNicknameInput(_.cloneDeep(e)); }} data-testid="nickname-input" />
); };