Skip to content

Commit 3296eb4

Browse files
committed
fix: start work on UserSettings
- moved the modal to a new name - added the panebutton to display to the modal (but still in ActionsPanel for now_)
1 parent 063adf0 commit 3296eb4

23 files changed

+515
-519
lines changed

ts/components/SessionWrapperModal.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ export type SessionWrapperModalType = {
230230
* Instead of centering the modal (and having layout shifts on height change), we can use this to anchor the modal to a % from the top of the screen.
231231
*/
232232
topAnchor?: ModalTopAnchor;
233+
$flexGap?: string;
233234
style?: Omit<CSSProperties, 'maxWidth' | 'minWidth' | 'padding' | 'border'>;
234235
};
235236

@@ -360,6 +361,7 @@ export const SessionWrapperModal = (props: SessionWrapperModalType & { onClose?:
360361
removeScrollbarGutter,
361362
onClose,
362363
topAnchor,
364+
$flexGap,
363365
} = props;
364366

365367
const [scrolled, setScrolled] = useState(false);
@@ -427,6 +429,7 @@ export const SessionWrapperModal = (props: SessionWrapperModalType & { onClose?:
427429
$alignItems="center"
428430
$flexDirection="column"
429431
paddingInline="var(--margins-lg)" // add the padding here so that the rest of the modal isn't affected (including buttonChildren/ModalHeader)
432+
$flexGap={$flexGap}
430433
>
431434
{props.children}
432435
</Flex>

ts/components/basic/SessionIdNotEditable.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ export const SessionIDNotEditable = ({
2626
tooltipNode,
2727
displayType,
2828
style: providedStyle = {},
29+
onClick,
2930
}: {
3031
sessionId: string;
3132
tooltipNode: ReactNode;
3233
displayType: 'blinded' | '2lines' | '3lines';
3334
dataTestId: SessionDataTestId;
3435
style: CSSProperties;
36+
onClick?: () => void;
3537
}) => {
3638
if (sessionId.length !== 66) {
3739
throw new Error('Unsupported case for SessionIDNotEditable: sessionId.length !== 66');
@@ -40,7 +42,11 @@ export const SessionIDNotEditable = ({
4042
throw new Error('Unsupported case for SessionIDNotEditable: sessionId is blinded');
4143
}
4244

43-
const style = tooltipNode ? { ...providedStyle, marginLeft: 'var(--margins-lg)' } : providedStyle;
45+
const pointerStyle = onClick ? { cursor: 'pointer' } : {};
46+
47+
const style = tooltipNode
48+
? { ...providedStyle, ...pointerStyle, marginLeft: 'var(--margins-lg)' }
49+
: { ...providedStyle, ...pointerStyle };
4450

4551
if (displayType === 'blinded') {
4652
const shortenedSessionId = PubKey.shorten(sessionId, {
@@ -53,6 +59,7 @@ export const SessionIDNotEditable = ({
5359
data-testid={dataTestId}
5460
// Note: we want the text centered even if the tooltip is offsetting it
5561
style={style}
62+
onClick={onClick}
5663
>
5764
{shortenedSessionId}
5865
{tooltipNode}
@@ -68,6 +75,7 @@ export const SessionIDNotEditable = ({
6875
<StyledSessionIDNotEditable
6976
data-testid={dataTestId} // Note: we want the text centered even if the tooltip is offsetting it
7077
style={style}
78+
onClick={onClick}
7179
>
7280
{firstLine}
7381
<br />
@@ -80,7 +88,7 @@ export const SessionIDNotEditable = ({
8088
}
8189

8290
return (
83-
<StyledSessionIDNotEditable data-testid={dataTestId} style={style}>
91+
<StyledSessionIDNotEditable data-testid={dataTestId} style={style} onClick={onClick}>
8492
{sessionId.slice(0, 33)}
8593
<br />
8694
{sessionId.slice(33)}

ts/components/dialog/EditProfilePictureModal.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import { useDispatch } from 'react-redux';
33
import type { AnyAction, Dispatch } from 'redux';
44
import styled from 'styled-components';
55
import { ToastUtils, UserUtils } from '../../session/utils';
6-
import { editProfileModal, updateEditProfilePictureModal } from '../../state/ducks/modalDialog';
6+
import { userSettingsModal, updateEditProfilePictureModal } from '../../state/ducks/modalDialog';
77
import type { EditProfilePictureModalProps } from '../../types/ReduxTypes';
88
import { pickFileForAvatar } from '../../types/attachments/VisualAttachment';
99
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
1010
import { SessionSpinner } from '../loading';
11-
import { ProfileAvatar } from './edit-profile/components';
11+
import { ProfileAvatar } from './user-settings/components';
1212
import {
1313
useAvatarPath,
1414
useConversationUsernameWithFallback,
@@ -30,7 +30,7 @@ import {
3030
SessionWrapperModal,
3131
} from '../SessionWrapperModal';
3232
import { useIsProAvailable } from '../../hooks/useIsProAvailable';
33-
import { SpacerLG } from '../basic/Text';
33+
import { SpacerLG, SpacerSM } from '../basic/Text';
3434
import {
3535
SessionProInfoVariant,
3636
useShowSessionProInfoDialogCbWithVariant,
@@ -39,7 +39,8 @@ import { AvatarSize } from '../avatar/Avatar';
3939
import { ProIconButton } from '../buttons/ProButton';
4040
import { useProBadgeOnClickCb } from '../menuAndSettingsHooks/useProBadgeOnClickCb';
4141
import { useUserHasPro } from '../../hooks/useHasPro';
42-
import { UploadFirstImageButton } from './edit-profile/UploadFirstImage';
42+
import { UploadFirstImageButton } from './user-settings/UploadFirstImage';
43+
import { Localizer } from '../basic/Localizer';
4344

4445
const StyledAvatarContainer = styled.div`
4546
cursor: pointer;
@@ -96,7 +97,7 @@ const triggerUploadProfileAvatar = async (
9697
ToastUtils.pushToastError('edit-profile', error.message);
9798
}
9899
window.log.error(
99-
'showEditProfileDialog Error ensuring that image is properly sized:',
100+
'triggerUploadProfileAvatar Error ensuring that image is properly sized:',
100101
error && error.stack ? error.stack : error
101102
);
102103
}
@@ -162,7 +163,7 @@ export const EditProfilePictureModal = ({ conversationId }: EditProfilePictureMo
162163
const closeDialog = useCallback(() => {
163164
dispatch(updateEditProfilePictureModal(null));
164165
if (isMe) {
165-
dispatch(editProfileModal({}));
166+
dispatch(userSettingsModal({}));
166167
}
167168
}, [dispatch, isMe]);
168169

@@ -274,6 +275,7 @@ export const EditProfilePictureModal = ({ conversationId }: EditProfilePictureMo
274275
) : null}
275276
</ModalActionsContainer>
276277
}
278+
$flexGap="var(--margins-sm)"
277279
>
278280
{isMe && proBadgeCb.cb ? (
279281
<StyledCTADescription reverseDirection={userHasPro}>
@@ -308,9 +310,17 @@ export const EditProfilePictureModal = ({ conversationId }: EditProfilePictureMo
308310
<UploadFirstImageButton onClick={handleClick} />
309311
)}
310312
</StyledAvatarContainer>
311-
<SpacerLG />
312313
</div>
313-
<SessionSpinner loading={loading} />
314+
{}
315+
{loading ? (
316+
<>
317+
<SpacerSM />
318+
{isMe ? <Localizer token="updating" /> : null}
319+
<SessionSpinner loading={loading} height="30px" />
320+
</>
321+
) : (
322+
<SpacerLG />
323+
)}
314324
</SessionWrapperModal>
315325
);
316326
};

ts/components/dialog/ModalContainer.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
getConversationSettingsModalState,
99
getDebugMenuModalState,
1010
getDeleteAccountModalState,
11-
getEditProfileDialog,
11+
getUserSettingsModal,
1212
getEditProfilePictureModalState,
1313
getEnterPasswordModalState,
1414
getHideRecoveryPasswordModalState,
@@ -25,7 +25,7 @@ import {
2525
getUpdateGroupMembersModal,
2626
getUserProfileModal,
2727
getLocalizedPopupDialogState,
28-
getUpdateGroupOrCommunityDetailsModal,
28+
getUpdateConversationDetailsModal,
2929
} from '../../state/selectors/modal';
3030
import { LightboxGallery } from '../lightbox/LightboxGallery';
3131
import { BanOrUnBanUserDialog } from './BanOrUnbanUserDialog';
@@ -42,9 +42,8 @@ import { ReactListModal } from './ReactListModal';
4242
import { SessionNicknameDialog } from './SessionNicknameDialog';
4343
import { SessionSetPasswordDialog } from './SessionSetPasswordDialog';
4444
import { UpdateGroupMembersDialog } from './UpdateGroupMembersDialog';
45-
import { UpdateGroupOrCommunityDetailsDialog } from './UpdateGroupOrCommunityDetailsDialog';
45+
import { UpdateConversationDetailsDialog } from './UpdateConversationDetailsDialog';
4646
import { UserProfileModal } from './UserProfileModal';
47-
import { EditProfileDialog } from './edit-profile/EditProfileDialog';
4847
import { OpenUrlModal } from './OpenUrlModal';
4948
import { BlockOrUnblockDialog } from './blockOrUnblock/BlockOrUnblockDialog';
5049
import { DebugMenuModal } from './debug/DebugMenuModal';
@@ -53,17 +52,18 @@ import { SessionNetworkModal } from './network/SessionNetworkModal';
5352
import { SessionConfirm } from './SessionConfirm';
5453
import { SessionProInfoModal } from './SessionProInfoModal';
5554
import { LocalizedPopupDialog } from './LocalizedPopupDialog';
55+
import { UserSettingsDialog } from './user-settings/UserSettingsDialog';
5656

5757
export const ModalContainer = () => {
5858
const confirmModalState = useSelector(getConfirmModal);
5959
const inviteModalState = useSelector(getInviteContactModal);
6060
const addModeratorsModalState = useSelector(getAddModeratorsModal);
6161
const removeModeratorsModalState = useSelector(getRemoveModeratorsModal);
6262
const updateGroupMembersModalState = useSelector(getUpdateGroupMembersModal);
63-
const updateGroupOrCommunityDetailsState = useSelector(getUpdateGroupOrCommunityDetailsModal);
63+
const updateConversationDetailsModalState = useSelector(getUpdateConversationDetailsModal);
6464
const userProfileModalState = useSelector(getUserProfileModal);
6565
const changeNicknameModal = useSelector(getChangeNickNameDialog);
66-
const editProfileModalState = useSelector(getEditProfileDialog);
66+
const userSettingsModalState = useSelector(getUserSettingsModal);
6767
const onionPathModalState = useSelector(getOnionPathDialog);
6868
const enterPasswordModalState = useSelector(getEnterPasswordModalState);
6969
const sessionPasswordModalState = useSelector(getSessionPasswordDialog);
@@ -91,7 +91,7 @@ export const ModalContainer = () => {
9191
)}
9292
{sessionPasswordModalState && <SessionSetPasswordDialog {...sessionPasswordModalState} />}
9393
{sessionNetworkModalState && <SessionNetworkModal {...sessionNetworkModalState} />}
94-
{editProfileModalState && <EditProfileDialog {...editProfileModalState} />}
94+
{userSettingsModalState && <UserSettingsDialog {...userSettingsModalState} />}
9595
{onionPathModalState && <OnionPathModal {...onionPathModalState} />}
9696
{reactListModalState && <ReactListModal {...reactListModalState} />}
9797
{debugMenuModalState && <DebugMenuModal {...debugMenuModalState} />}
@@ -104,8 +104,8 @@ export const ModalContainer = () => {
104104
{updateGroupMembersModalState && (
105105
<UpdateGroupMembersDialog {...updateGroupMembersModalState} />
106106
)}
107-
{updateGroupOrCommunityDetailsState && (
108-
<UpdateGroupOrCommunityDetailsDialog {...updateGroupOrCommunityDetailsState} />
107+
{updateConversationDetailsModalState && (
108+
<UpdateConversationDetailsDialog {...updateConversationDetailsModalState} />
109109
)}
110110
{userProfileModalState && <UserProfileModal {...userProfileModalState} />}
111111
{changeNicknameModal && <SessionNicknameDialog {...changeNicknameModal} />}

0 commit comments

Comments
 (0)