Skip to content

Commit 8d946da

Browse files
committed
fix: click on toast does not close dialogs
1 parent 4e913f1 commit 8d946da

File tree

6 files changed

+31
-43
lines changed

6 files changed

+31
-43
lines changed

ts/components/SessionWrapperModal.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useRef } from 'react';
1+
import React, { useRef } from 'react';
22
import classNames from 'classnames';
33

44
import { SessionIconButton } from './icon/';
@@ -63,17 +63,11 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
6363
}
6464
};
6565

66-
useEffect(() => {
67-
document.addEventListener('mousedown', handleClick);
68-
69-
return () => {
70-
document.removeEventListener('mousedown', handleClick);
71-
};
72-
}, []);
73-
7466
return (
7567
<div
7668
className={classNames('loki-dialog modal', additionalClassName ? additionalClassName : null)}
69+
onClick={handleClick}
70+
role="dialog"
7771
>
7872
<div className="session-confirm-wrapper">
7973
<div ref={modalRef} className="session-modal">

ts/components/basic/SessionToast.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import React from 'react';
22

33
import { Flex } from '../basic/Flex';
44
import styled from 'styled-components';
5-
import { noop } from 'lodash';
65
import { SessionIcon, SessionIconType } from '../icon';
6+
import { noop } from 'lodash';
77

88
export enum SessionToastType {
99
Info = 'info',
@@ -44,6 +44,8 @@ const IconDiv = styled.div`
4444
padding-inline-end: var(--margins-xs);
4545
`;
4646

47+
// tslint:disable: use-simple-attributes
48+
4749
export const SessionToast = (props: Props) => {
4850
const { title, description, type, icon } = props;
4951

@@ -71,14 +73,10 @@ export const SessionToast = (props: Props) => {
7173
}
7274
}
7375

76+
const onToastClick = props?.onToastClick || noop;
77+
7478
return (
75-
// tslint:disable-next-line: use-simple-attributes
76-
<Flex
77-
container={true}
78-
alignItems="center"
79-
onClick={props?.onToastClick || noop}
80-
data-testid="session-toast"
81-
>
79+
<Flex container={true} alignItems="center" onClick={onToastClick} data-testid="session-toast">
8280
<IconDiv>
8381
<SessionIcon iconType={toastIcon} iconSize={toastIconSize} />
8482
</IconDiv>

ts/components/leftpane/ActionsPanel.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import { getSwarmPollingInstance } from '../../session/apis/snode_api';
3939
import { forceRefreshRandomSnodePool } from '../../session/apis/snode_api/snodePool';
4040
import { Avatar, AvatarSize } from '../avatar/Avatar';
4141
import { SessionIconButton } from '../icon';
42-
import { SessionToastContainer } from '../SessionToastContainer';
4342
import { LeftPaneSectionContainer } from './LeftPaneSectionContainer';
4443
import { ipcRenderer } from 'electron';
4544
import { UserUtils } from '../../session/utils';
@@ -277,8 +276,6 @@ export const ActionsPanel = () => {
277276
<Section type={SectionType.Message} />
278277
<Section type={SectionType.Settings} />
279278

280-
<SessionToastContainer />
281-
282279
<Section type={SectionType.PathIndicator} />
283280
<Section type={SectionType.Moon} />
284281
</LeftPaneSectionContainer>

ts/components/leftpane/LeftPane.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { CallInFullScreenContainer } from '../calling/CallInFullScreenContainer'
1212
import { DraggableCallContainer } from '../calling/DraggableCallContainer';
1313
import { IncomingCallDialog } from '../calling/IncomingCallDialog';
1414
import { ModalContainer } from '../dialog/ModalContainer';
15+
import { SessionToastContainer } from '../SessionToastContainer';
1516
import { ActionsPanel } from './ActionsPanel';
1617
import { LeftPaneMessageSection } from './LeftPaneMessageSection';
1718
import { LeftPaneSettingSection } from './LeftPaneSettingSection';
@@ -71,6 +72,7 @@ export const LeftPane = () => {
7172
<div className="module-left-pane-session">
7273
<ModalContainer />
7374
<CallContainer />
75+
<SessionToastContainer />
7476
<ActionsPanel />
7577

7678
<StyledLeftPane className="module-left-pane">

ts/components/registration/SignInTab.tsx

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,23 @@ const SignInButtons = (props: {
9696
);
9797
};
9898

99+
export function sanitizeDisplayNameOrToast(
100+
displayName: string,
101+
setDisplayName: (sanitized: string) => void,
102+
setDisplayNameError: (error: string | undefined) => void
103+
) {
104+
try {
105+
const sanitizedName = sanitizeSessionUsername(displayName);
106+
const trimName = sanitizedName.trim();
107+
setDisplayName(sanitizedName);
108+
setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined);
109+
} catch (e) {
110+
setDisplayName(displayName);
111+
setDisplayNameError(window.i18n('displayNameTooLong'));
112+
ToastUtils.pushToastError('toolong', window.i18n('displayNameTooLong'));
113+
}
114+
}
115+
99116
export const SignInTab = () => {
100117
const { setRegistrationPhase, signInMode, setSignInMode } = useContext(RegistrationContext);
101118

@@ -149,16 +166,7 @@ export const SignInTab = () => {
149166
displayName={displayName}
150167
handlePressEnter={continueYourSession}
151168
onDisplayNameChanged={(name: string) => {
152-
try {
153-
const sanitizedName = sanitizeSessionUsername(name);
154-
const trimName = sanitizedName.trim();
155-
setDisplayName(sanitizedName);
156-
setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined);
157-
} catch (e) {
158-
setDisplayName(name);
159-
setDisplayNameError(window.i18n('displayNameTooLong'));
160-
ToastUtils.pushToastError('toolong', window.i18n('displayNameTooLong'));
161-
}
169+
sanitizeDisplayNameOrToast(name, setDisplayName, setDisplayNameError);
162170
}}
163171
onSeedChanged={(seed: string) => {
164172
setRecoveryPhrase(seed);

ts/components/registration/SignUpTab.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import React, { useContext, useEffect, useState } from 'react';
2-
import { ToastUtils } from '../../session/utils';
3-
import { sanitizeSessionUsername } from '../../session/utils/String';
42
import { Flex } from '../basic/Flex';
53
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
64
import { SessionIdEditable } from '../basic/SessionIdEditable';
75
import { SessionIconButton } from '../icon';
86
import { RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages';
97
import { RegistrationUserDetails } from './RegistrationUserDetails';
10-
import { SignInMode } from './SignInTab';
8+
import { sanitizeDisplayNameOrToast, SignInMode } from './SignInTab';
119
import { TermsAndConditions } from './TermsAndConditions';
1210

1311
export enum SignUpMode {
@@ -145,16 +143,7 @@ export const SignUpTab = () => {
145143
displayName={displayName}
146144
handlePressEnter={signUpWithDetails}
147145
onDisplayNameChanged={(name: string) => {
148-
try {
149-
const sanitizedName = sanitizeSessionUsername(name);
150-
const trimName = sanitizedName.trim();
151-
setDisplayName(sanitizedName);
152-
setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined);
153-
} catch (e) {
154-
setDisplayName(name);
155-
setDisplayNameError(window.i18n('displayNameTooLong'));
156-
ToastUtils.pushToastError('toolong', window.i18n('displayNameTooLong'));
157-
}
146+
sanitizeDisplayNameOrToast(name, setDisplayName, setDisplayNameError);
158147
}}
159148
stealAutoFocus={true}
160149
/>

0 commit comments

Comments
 (0)