rename all spacer-* to react component

pull/1703/head
Audric Ackermann 4 years ago
parent a5d7995168
commit bbbcfd54d6
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -1,4 +1,4 @@
/* global Backbone, i18n, Whisper, storage, _, $ */ /* global Backbone, Whisper, storage, _, $ */
/* eslint-disable more/no-then */ /* eslint-disable more/no-then */

@ -1,13 +1,3 @@
div.spacer-sm {
height: $session-margin-sm;
}
div.spacer-md {
height: $session-margin-md;
}
div.spacer-lg {
height: $session-margin-lg;
}
.subtle { .subtle {
opacity: $session-subtle-factor; opacity: $session-subtle-factor;
} }
@ -1199,7 +1189,6 @@ input {
} }
} }
.onion__description { .onion__description {
min-width: 100%; min-width: 100%;
width: 0; width: 0;
@ -1227,7 +1216,6 @@ input {
} }
} }
.session-nickname-wrapper { .session-nickname-wrapper {
position: absolute; position: absolute;
height: 100%; height: 100%;

@ -17,6 +17,7 @@ import { ConversationTypeEnum } from '../models/conversation';
import { SessionWrapperModal } from './session/SessionWrapperModal'; import { SessionWrapperModal } from './session/SessionWrapperModal';
import { AttachmentUtil } from '../util'; import { AttachmentUtil } from '../util';
import { ConversationController } from '../session/conversations'; import { ConversationController } from '../session/conversations';
import { SpacerLG, SpacerMD } from './basic/Text';
interface Props { interface Props {
profileName?: string; profileName?: string;
@ -128,7 +129,7 @@ export class EditProfileDialog extends React.Component<Props, State> {
showExitIcon={true} showExitIcon={true}
theme={this.props.theme} theme={this.props.theme}
> >
<div className="spacer-md" /> <SpacerMD />
{viewQR && this.renderQRView(sessionID)} {viewQR && this.renderQRView(sessionID)}
{viewDefault && this.renderDefaultView()} {viewDefault && this.renderDefaultView()}
@ -140,7 +141,7 @@ export class EditProfileDialog extends React.Component<Props, State> {
{sessionID} {sessionID}
</p> </p>
<div className="spacer-lg" /> <SpacerLG />
<SessionSpinner loading={this.state.loading} /> <SessionSpinner loading={this.state.loading} />
{viewDefault || viewQR ? ( {viewDefault || viewQR ? (
@ -164,7 +165,7 @@ export class EditProfileDialog extends React.Component<Props, State> {
) )
)} )}
<div className="spacer-lg" /> <SpacerLG />
</div> </div>
</SessionWrapperModal> </SessionWrapperModal>
</div> </div>

@ -86,7 +86,7 @@ const InnerLeftPaneContactSection = () => {
); );
}; };
const LeftPaneSection = (props: { isExpired: boolean, setModal: any}) => { const LeftPaneSection = (props: { isExpired: boolean; setModal: any }) => {
const focusedSection = useSelector(getFocusedSection); const focusedSection = useSelector(getFocusedSection);
const { setModal } = props; const { setModal } = props;
@ -110,7 +110,7 @@ export const LeftPane = (props: Props) => {
return ( return (
<> <>
{ modal ? modal : null} {modal ? modal : null}
<SessionTheme theme={theme}> <SessionTheme theme={theme}>
<div className="module-left-pane-session"> <div className="module-left-pane-session">
<ActionsPanel /> <ActionsPanel />

@ -38,7 +38,7 @@ export class MessageView extends React.Component {
*/ */
async function createClosedGroup( async function createClosedGroup(
groupName: string, groupName: string,
groupMembers: Array<ContactType>, groupMembers: Array<ContactType>
): Promise<boolean> { ): Promise<boolean> {
// Validate groupName and groupMembers length // Validate groupName and groupMembers length
if (groupName.length === 0) { if (groupName.length === 0) {

@ -9,6 +9,7 @@ import { ConversationController } from '../session/conversations';
import { ConversationTypeEnum } from '../models/conversation'; import { ConversationTypeEnum } from '../models/conversation';
import { Session } from 'electron'; import { Session } from 'electron';
import { SessionWrapperModal } from './session/SessionWrapperModal'; import { SessionWrapperModal } from './session/SessionWrapperModal';
import { SpacerMD } from './basic/Text';
interface Props { interface Props {
i18n: any; i18n: any;
@ -48,7 +49,7 @@ export class UserDetailsDialog extends React.Component<Props, State> {
<div className="avatar-center-inner">{this.renderAvatar()}</div> <div className="avatar-center-inner">{this.renderAvatar()}</div>
</div> </div>
<div className="spacer-md"></div> <SpacerMD />
<SessionIdEditable editable={false} text={this.props.pubkey} /> <SessionIdEditable editable={false} text={this.props.pubkey} />
<div className="session-modal__button-group__center"> <div className="session-modal__button-group__center">
@ -86,7 +87,7 @@ export class UserDetailsDialog extends React.Component<Props, State> {
private onKeyUp(event: any) { private onKeyUp(event: any) {
switch (event.key) { switch (event.key) {
case 'Enter': case 'Enter':
this.onClickStartConversation(); void this.onClickStartConversation();
break; break;
case 'Esc': case 'Esc':
case 'Escape': case 'Escape':
@ -103,12 +104,13 @@ export class UserDetailsDialog extends React.Component<Props, State> {
private async onClickStartConversation() { private async onClickStartConversation() {
// this.props.onStartConversation(); // this.props.onStartConversation();
const conversation = await ConversationController.getInstance().getOrCreateAndWait(this.props.pubkey, ConversationTypeEnum.PRIVATE); const conversation = await ConversationController.getInstance().getOrCreateAndWait(
this.props.pubkey,
window.inboxStore?.dispatch( ConversationTypeEnum.PRIVATE
window.actionsCreators.openConversationExternal(conversation.id)
); );
window.inboxStore?.dispatch(window.actionsCreators.openConversationExternal(conversation.id));
this.closeDialog(); this.closeDialog();
} }
} }

@ -1,19 +1,18 @@
import React from 'react'; import React from 'react';
import { SessionModal } from '../session/SessionModal';
import { SessionButton, SessionButtonColor } from '../session/SessionButton'; import { SessionButton, SessionButtonColor } from '../session/SessionButton';
import { DefaultTheme, useTheme } from 'styled-components'; import { DefaultTheme } from 'styled-components';
import { SessionWrapperModal } from '../session/SessionWrapperModal'; import { SessionWrapperModal } from '../session/SessionWrapperModal';
import { SpacerLG } from '../basic/Text';
interface Props { type Props = {
groupName: string; groupName: string;
onSubmit: () => any; onSubmit: () => any;
onClose: any; onClose: any;
theme: DefaultTheme; theme: DefaultTheme;
} };
const AdminLeaveClosedGroupDialogInner = (props: Props) => { const AdminLeaveClosedGroupDialogInner = (props: Props) => {
const { groupName, theme, onSubmit, onClose } = props; const { groupName, theme, onSubmit, onClose } = props;
const titleText = `${window.i18n('leaveGroup')} ${groupName}`; const titleText = `${window.i18n('leaveGroup')} ${groupName}`;
@ -24,31 +23,23 @@ const AdminLeaveClosedGroupDialogInner = (props: Props) => {
const onClickOK = () => { const onClickOK = () => {
void onSubmit(); void onSubmit();
closeDialog(); closeDialog();
} };
const closeDialog = () => { const closeDialog = () => {
onClose(); onClose();
} };
return ( return (
<SessionWrapperModal title={titleText} onClose={closeDialog} theme={theme}> <SessionWrapperModal title={titleText} onClose={closeDialog} theme={theme}>
<SpacerLG />
<div className="spacer-lg" />
<p>{warningAsAdmin}</p> <p>{warningAsAdmin}</p>
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton <SessionButton text={okText} onClick={onClickOK} buttonColor={SessionButtonColor.Danger} />
text={okText} <SessionButton text={cancelText} onClick={closeDialog} />
onClick={onClickOK}
buttonColor={SessionButtonColor.Danger}
/>
<SessionButton
text={cancelText}
onClick={closeDialog}
/>
</div> </div>
</SessionWrapperModal> </SessionWrapperModal>
); );
} };
export const AdminLeaveClosedGroupDialog = AdminLeaveClosedGroupDialogInner; export const AdminLeaveClosedGroupDialog = AdminLeaveClosedGroupDialogInner;

@ -12,6 +12,7 @@ import { getCompleteUrlForV2ConvoId } from '../../interactions/conversation';
import _ from 'lodash'; import _ from 'lodash';
import { VALIDATION } from '../../session/constants'; import { VALIDATION } from '../../session/constants';
import { SessionWrapperModal } from '../session/SessionWrapperModal'; import { SessionWrapperModal } from '../session/SessionWrapperModal';
import { SpacerLG } from '../basic/Text';
type Props = { type Props = {
// contactList: Array<any>; // contactList: Array<any>;
@ -202,18 +203,18 @@ const InviteContactsDialogInner = (props: Props) => {
return ( return (
<SessionWrapperModal title={titleText} onClose={closeDialog} theme={props.theme}> <SessionWrapperModal title={titleText} onClose={closeDialog} theme={props.theme}>
<div className="spacer-lg" /> <SpacerLG />
<div className="contact-selection-list">{renderMemberList()}</div> <div className="contact-selection-list">{renderMemberList()}</div>
{hasContacts ? null : ( {hasContacts ? null : (
<> <>
<div className="spacer-lg" /> <SpacerLG />
<p className="no-contacts">{window.i18n('noContactsToAdd')}</p> <p className="no-contacts">{window.i18n('noContactsToAdd')}</p>
<div className="spacer-lg" /> <SpacerLG />
</> </>
)} )}
<div className="spacer-lg" /> <SpacerLG />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={closeDialog} /> <SessionButton text={cancelText} onClick={closeDialog} />

@ -10,7 +10,7 @@ import autoBind from 'auto-bind';
import { ConversationController } from '../../session/conversations'; import { ConversationController } from '../../session/conversations';
import _ from 'lodash'; import _ from 'lodash';
import { Text } from '../basic/Text'; import { SpacerLG, SpacerMD, Text } from '../basic/Text';
import { SessionWrapperModal } from '../session/SessionWrapperModal'; import { SessionWrapperModal } from '../session/SessionWrapperModal';
interface Props { interface Props {
@ -50,8 +50,8 @@ export class UpdateGroupMembersDialog extends React.Component<Props, State> {
const name = nickname const name = nickname
? nickname ? nickname
: lokiProfile : lokiProfile
? lokiProfile.displayName ? lokiProfile.displayName
: window.i18n('anonymous'); : window.i18n('anonymous');
const existingMember = this.props.existingMembers.includes(d.id); const existingMember = this.props.existingMembers.includes(d.id);
@ -130,16 +130,16 @@ export class UpdateGroupMembersDialog extends React.Component<Props, State> {
onClose={() => this.closeDialog()} onClose={() => this.closeDialog()}
theme={this.props.theme} theme={this.props.theme}
> >
<div className="spacer-md" /> <SpacerMD />
<p className={errorMessageClasses}>{errorMsg}</p> <p className={errorMessageClasses}>{errorMsg}</p>
<div className="spacer-md" /> <SpacerMD />
<div className="group-member-list__selection">{this.renderMemberList()}</div> <div className="group-member-list__selection">{this.renderMemberList()}</div>
{this.renderZombiesList()} {this.renderZombiesList()}
{showNoMembersMessage && <p>{window.i18n('noMembersInThisGroup')}</p>} {showNoMembersMessage && <p>{window.i18n('noMembersInThisGroup')}</p>}
<div className="spacer-lg" /> <SpacerLG />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={this.closeDialog} /> <SessionButton text={cancelText} onClick={this.closeDialog} />
@ -200,7 +200,7 @@ export class UpdateGroupMembersDialog extends React.Component<Props, State> {
}); });
return ( return (
<> <>
<div className="spacer-lg" /> <SpacerLG />
{isAdmin && ( {isAdmin && (
<Text <Text
padding="20px" padding="20px"
@ -229,7 +229,6 @@ export class UpdateGroupMembersDialog extends React.Component<Props, State> {
} }
} }
// Return members that would comprise the group given the // Return members that would comprise the group given the
// current state in `users` // current state in `users`
private getWouldBeMembers(users: Array<ContactType>) { private getWouldBeMembers(users: Array<ContactType>) {

@ -6,6 +6,7 @@ import { SessionButton, SessionButtonColor } from '../session/SessionButton';
import { Avatar, AvatarSize } from '../Avatar'; import { Avatar, AvatarSize } from '../Avatar';
import { DefaultTheme, withTheme } from 'styled-components'; import { DefaultTheme, withTheme } from 'styled-components';
import { SessionWrapperModal } from '../session/SessionWrapperModal'; import { SessionWrapperModal } from '../session/SessionWrapperModal';
import { SpacerMD } from '../basic/Text';
interface Props { interface Props {
titleText: string; titleText: string;
@ -85,19 +86,16 @@ class UpdateGroupNameDialogInner extends React.Component<Props, State> {
onClose={() => this.closeDialog()} onClose={() => this.closeDialog()}
theme={this.props.theme} theme={this.props.theme}
> >
{this.state.errorDisplayed ? (
{ this.state.errorDisplayed ?
<> <>
<div className="spacer-md" /> <SpacerMD />
<p className={errorMessageClasses}>{errorMsg}</p> <p className={errorMessageClasses}>{errorMsg}</p>
<div className="spacer-md" /> <SpacerMD />
</> </>
: ) : null}
null
}
{this.renderAvatar()} {this.renderAvatar()}
<div className="spacer-md" /> <SpacerMD />
<input <input
type="text" type="text"

@ -30,7 +30,7 @@ import autoBind from 'auto-bind';
import { onsNameRegex } from '../../session/snode_api/SNodeAPI'; import { onsNameRegex } from '../../session/snode_api/SNodeAPI';
import { SNodeAPI } from '../../session/snode_api'; import { SNodeAPI } from '../../session/snode_api';
import { createClosedGroup } from "../../receiver/closedGroups"; import { createClosedGroup } from '../../receiver/closedGroups';
export interface Props { export interface Props {
searchTerm: string; searchTerm: string;
@ -75,7 +75,7 @@ export class LeftPaneMessageSection extends React.Component<Props, State> {
loading: false, loading: false,
overlay: false, overlay: false,
valuePasted: '', valuePasted: '',
modal: null modal: null,
}; };
autoBind(this); autoBind(this);
@ -169,17 +169,15 @@ export class LeftPaneMessageSection extends React.Component<Props, State> {
return ( return (
<div className="session-left-pane-section-content"> <div className="session-left-pane-section-content">
{this.renderHeader()} {this.renderHeader()}
{ this.state.modal ? this.state.modal : null } {this.state.modal ? this.state.modal : null}
{overlay ? this.renderClosableOverlay(overlay) : this.renderConversations()} {overlay ? this.renderClosableOverlay(overlay) : this.renderConversations()}
</div> </div>
); );
} }
public setModal(modal: null | JSX.Element) {
public setModal (modal: null | JSX.Element) {
this.setState({ this.setState({
modal modal,
}); });
} }

@ -104,42 +104,34 @@ const LeftPaneSettingsCategories = () => {
); );
}; };
const onDeleteAccount = ( setModal: any) => { const onDeleteAccount = (setModal: any) => {
const title = window.i18n('clearAllData'); const title = window.i18n('clearAllData');
const message = window.i18n('deleteAccountWarning'); const message = window.i18n('deleteAccountWarning');
const clearModal = () => { const clearModal = () => {
setModal(null); setModal(null);
} };
setModal( setModal(
<SessionConfirm <SessionConfirm
title={title} title={title}
message={message} message={message}
onClickOk={deleteAccount} onClickOk={deleteAccount}
okTheme={SessionButtonColor.Danger} okTheme={SessionButtonColor.Danger}
onClickClose={clearModal} onClickClose={clearModal}
/>) />
);
}; };
const onShowRecoverPhrase = (setModal: any) => { const onShowRecoverPhrase = (setModal: any) => {
const clearModal = () => { const clearModal = () => {
setModal(null); setModal(null);
} };
setModal(
<SessionSeedModal setModal(<SessionSeedModal onClose={clearModal}></SessionSeedModal>);
onClose={clearModal} };
></SessionSeedModal>
)
}
const LeftPaneBottomButtons = (props: { setModal: any}) => { const LeftPaneBottomButtons = (props: { setModal: any }) => {
const dangerButtonText = window.i18n('clearAllData'); const dangerButtonText = window.i18n('clearAllData');
const showRecoveryPhrase = window.i18n('showRecoveryPhrase'); const showRecoveryPhrase = window.i18n('showRecoveryPhrase');
const { setModal } = props; const { setModal } = props;
@ -163,7 +155,7 @@ const LeftPaneBottomButtons = (props: { setModal: any}) => {
); );
}; };
export const LeftPaneSettingSection = (props: { setModal: any}) => { export const LeftPaneSettingSection = (props: { setModal: any }) => {
const theme = useSelector(getTheme); const theme = useSelector(getTheme);
const { setModal } = props; const { setModal } = props;

@ -8,6 +8,7 @@ import { SessionWrapperModal } from './SessionWrapperModal';
import { useDispatch } from 'react-redux'; import { useDispatch } from 'react-redux';
import { updateConfirmModal } from '../../state/ducks/modalDialog'; import { updateConfirmModal } from '../../state/ducks/modalDialog';
import { update } from 'lodash'; import { update } from 'lodash';
import { SpacerLG } from '../basic/Text';
export interface SessionConfirmDialogProps { export interface SessionConfirmDialogProps {
message?: string; message?: string;
@ -27,7 +28,7 @@ export interface SessionConfirmDialogProps {
theme?: DefaultTheme; theme?: DefaultTheme;
closeAfterClickOk?: boolean; closeAfterClickOk?: boolean;
shouldShowConfirm?: () => boolean | undefined; shouldShowConfirm?: () => boolean | undefined;
}; }
const SessionConfirmInner = (props: SessionConfirmDialogProps) => { const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
const { const {
@ -55,7 +56,7 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
const messageSubText = messageSub ? 'session-confirm-main-message' : 'subtle'; const messageSubText = messageSub ? 'session-confirm-main-message' : 'subtle';
/** /**
* Calls close function after the ok button is clicked. If no close method specified, closes the modal * Calls close function after the ok button is clicked. If no close method specified, closes the modal
*/ */
const onClickOkWithClose = () => { const onClickOkWithClose = () => {
if (onClickOk) { if (onClickOk) {
@ -65,17 +66,15 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
if (onClickClose) { if (onClickClose) {
onClickClose(); onClickClose();
} }
} };
const onClickOkHandler = () => { const onClickOkHandler = () => {
if (onClickOk) { if (onClickOk) {
onClickOk(); onClickOk();
} }
window.inboxStore?.dispatch(updateConfirmModal(null)); window.inboxStore?.dispatch(updateConfirmModal(null));
} };
if (shouldShowConfirm && !shouldShowConfirm()) { if (shouldShowConfirm && !shouldShowConfirm()) {
return null; return null;
@ -87,8 +86,7 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
} }
window.inboxStore?.dispatch(updateConfirmModal(null)); window.inboxStore?.dispatch(updateConfirmModal(null));
} };
return ( return (
<SessionWrapperModal <SessionWrapperModal
@ -98,14 +96,13 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
showHeader={showHeader} showHeader={showHeader}
theme={theme} theme={theme}
> >
{!showHeader && <SpacerLG />}
{!showHeader && <div className="spacer-lg" />}
<div className="session-modal__centered"> <div className="session-modal__centered">
{sessionIcon && iconSize && ( {sessionIcon && iconSize && (
<> <>
<SessionIcon iconType={sessionIcon} iconSize={iconSize} theme={theme} /> <SessionIcon iconType={sessionIcon} iconSize={iconSize} theme={theme} />
<div className="spacer-lg" /> <SpacerLG />
</> </>
)} )}
@ -123,10 +120,13 @@ const SessionConfirmInner = (props: SessionConfirmDialogProps) => {
{!hideCancel && ( {!hideCancel && (
// <SessionButton text={cancelText} buttonColor={closeTheme} onClick={onClickClose} /> // <SessionButton text={cancelText} buttonColor={closeTheme} onClick={onClickClose} />
<SessionButton text={cancelText} buttonColor={closeTheme} onClick={onClickCancelHandler} /> <SessionButton
text={cancelText}
buttonColor={closeTheme}
onClick={onClickCancelHandler}
/>
)} )}
</div> </div>
</SessionWrapperModal> </SessionWrapperModal>
); );
}; };

@ -5,6 +5,7 @@ import { SessionButton, SessionButtonColor } from './SessionButton';
import { DefaultTheme, withTheme } from 'styled-components'; import { DefaultTheme, withTheme } from 'styled-components';
import { SessionIcon, SessionIconSize, SessionIconType } from './icon'; import { SessionIcon, SessionIconSize, SessionIconType } from './icon';
import { deleteAccount } from '../../util/accountManager'; import { deleteAccount } from '../../util/accountManager';
import { SpacerLG, SpacerSM, SpacerXS } from '../basic/Text';
type Props = { type Props = {
onClose: any; onClose: any;
@ -19,19 +20,19 @@ const SessionIDResetDialogInner = (props: Props) => {
return ( return (
<SessionModal title="Mandatory Upgrade Session ID" onClose={() => null} theme={props.theme}> <SessionModal title="Mandatory Upgrade Session ID" onClose={() => null} theme={props.theme}>
<div className="spacer-sm" /> <SpacerSM />
<div className="session-modal__centered text-center"> <div className="session-modal__centered text-center">
<SessionIcon <SessionIcon
iconType={SessionIconType.Shield} iconType={SessionIconType.Shield}
iconSize={SessionIconSize.Max} iconSize={SessionIconSize.Max}
theme={props.theme} theme={props.theme}
/> />
<div className="spacer-lg" /> <SpacerLG />
{description} {description}
<div className="spacer-xs" /> <SpacerXS />
</div> </div>
<div className="spacer-lg" /> <SpacerLG />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton <SessionButton

@ -6,6 +6,7 @@ import { DefaultTheme, withTheme, useTheme } from 'styled-components';
import _ from 'lodash'; import _ from 'lodash';
import { SessionWrapperModal } from './SessionWrapperModal'; import { SessionWrapperModal } from './SessionWrapperModal';
import { SpacerLG } from '../basic/Text';
type Props = { type Props = {
onClickOk?: any; onClickOk?: any;
@ -69,7 +70,7 @@ const SessionNicknameInner = (props: Props) => {
> >
<div className="session-modal__centered"> <div className="session-modal__centered">
<span className="subtle">{window.i18n('changeNicknameMessage')}</span> <span className="subtle">{window.i18n('changeNicknameMessage')}</span>
<div className="spacer-lg" /> <SpacerLG />
</div> </div>
<input <input

@ -8,6 +8,7 @@ import { SessionIconType } from './icon';
import { DefaultTheme, withTheme } from 'styled-components'; import { DefaultTheme, withTheme } from 'styled-components';
import { getPasswordHash } from '../../data/data'; import { getPasswordHash } from '../../data/data';
import { SessionWrapperModal } from './SessionWrapperModal'; import { SessionWrapperModal } from './SessionWrapperModal';
import { SpacerLG, SpacerSM } from '../basic/Text';
export enum PasswordAction { export enum PasswordAction {
Set = 'set', Set = 'set',
Change = 'change', Change = 'change',
@ -78,7 +79,7 @@ class SessionPasswordModalInner extends React.Component<Props, State> {
onClose={this.closeDialog} onClose={this.closeDialog}
theme={this.props.theme} theme={this.props.theme}
> >
<div className="spacer-sm" /> <SpacerSM />
<div className="session-modal__input-group"> <div className="session-modal__input-group">
<input <input
@ -108,7 +109,7 @@ class SessionPasswordModalInner extends React.Component<Props, State> {
)} )}
</div> </div>
<div className="spacer-sm" /> <SpacerSM />
{this.showError()} {this.showError()}
<div className="session-modal__button-group"> <div className="session-modal__button-group">
@ -142,7 +143,7 @@ class SessionPasswordModalInner extends React.Component<Props, State> {
{message && ( {message && (
<> <>
<div className="session-label warning">{message}</div> <div className="session-label warning">{message}</div>
<div className="spacer-lg" /> <SpacerLG />
</> </>
)} )}
</> </>

@ -9,6 +9,7 @@ import { getPasswordHash } from '../../data/data';
import { QRCode } from 'react-qr-svg'; import { QRCode } from 'react-qr-svg';
import { mn_decode } from '../../session/crypto/mnemonic'; import { mn_decode } from '../../session/crypto/mnemonic';
import { SessionWrapperModal } from './SessionWrapperModal'; import { SessionWrapperModal } from './SessionWrapperModal';
import { SpacerLG, SpacerSM, SpacerXS } from '../basic/Text';
interface Props { interface Props {
onClose: any; onClose: any;
@ -68,7 +69,7 @@ class SessionSeedModalInner extends React.Component<Props, State> {
onClose={onClose} onClose={onClose}
theme={this.props.theme} theme={this.props.theme}
> >
<div className="spacer-sm" /> <SpacerSM />
{hasPassword && !passwordValid ? ( {hasPassword && !passwordValid ? (
<>{this.renderPasswordView()}</> <>{this.renderPasswordView()}</>
@ -98,12 +99,12 @@ class SessionSeedModalInner extends React.Component<Props, State> {
{error && ( {error && (
<> <>
<div className="spacer-xs" /> <SpacerXS />
<div className="session-label danger">{error}</div> <div className="session-label danger">{error}</div>
</> </>
)} )}
<div className="spacer-lg" /> <SpacerLG />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton text={i18n('ok')} onClick={this.confirmPassword} /> <SessionButton text={i18n('ok')} onClick={this.confirmPassword} />
@ -125,15 +126,15 @@ class SessionSeedModalInner extends React.Component<Props, State> {
<> <>
<div className="session-modal__centered text-center"> <div className="session-modal__centered text-center">
<p className="session-modal__description">{i18n('recoveryPhraseSavePromptMain')}</p> <p className="session-modal__description">{i18n('recoveryPhraseSavePromptMain')}</p>
<div className="spacer-xs" /> <SpacerXS />
<i className="session-modal__text-highlight">{this.state.recoveryPhrase}</i> <i className="session-modal__text-highlight">{this.state.recoveryPhrase}</i>
</div> </div>
<div className="spacer-lg" /> <SpacerLG />
<div className="qr-image"> <div className="qr-image">
<QRCode value={hexEncodedSeed} bgColor={bgColor} fgColor={fgColor} level="L" /> <QRCode value={hexEncodedSeed} bgColor={bgColor} fgColor={fgColor} level="L" />
</div> </div>
<div className="spacer-lg" /> <SpacerLG />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton <SessionButton
text={i18n('copy')} text={i18n('copy')}

@ -71,7 +71,7 @@ export class SessionToggle extends React.PureComponent<Props, State> {
// If item needs a confirmation dialog to turn ON, render it // If item needs a confirmation dialog to turn ON, render it
const closeConfirmModal = () => { const closeConfirmModal = () => {
this.props.updateConfirmModal(null); this.props.updateConfirmModal(null);
} };
this.props.updateConfirmModal({ this.props.updateConfirmModal({
onClickOk: () => { onClickOk: () => {
@ -83,7 +83,7 @@ export class SessionToggle extends React.PureComponent<Props, State> {
}, },
...this.props.confirmationDialogParams, ...this.props.confirmationDialogParams,
updateConfirmModal, updateConfirmModal,
}) });
return; return;
} }

@ -33,7 +33,7 @@ export type SessionWrapperModalType = {
showHeader?: boolean; showHeader?: boolean;
onConfirm?: () => void; onConfirm?: () => void;
onClose?: () => void; onClose?: () => void;
showClose?: boolean showClose?: boolean;
confirmText?: string; confirmText?: string;
cancelText?: string; cancelText?: string;
showExitIcon?: boolean; showExitIcon?: boolean;
@ -55,7 +55,7 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
showExitIcon, showExitIcon,
theme, theme,
headerIconButtons, headerIconButtons,
headerReverse headerReverse,
} = props; } = props;
useEffect(() => { useEffect(() => {
@ -78,8 +78,7 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
<div className="loki-dialog modal"> <div className="loki-dialog modal">
<div className="session-confirm-wrapper"> <div className="session-confirm-wrapper">
<div className="session-modal"> <div className="session-modal">
{showHeader ? (
{showHeader ?
<div className={classNames('session-modal__header', headerReverse && 'reverse')}> <div className={classNames('session-modal__header', headerReverse && 'reverse')}>
<div className="session-modal__header__close"> <div className="session-modal__header__close">
{showExitIcon ? ( {showExitIcon ? (
@ -95,40 +94,37 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
<div className="session-modal__header__icons"> <div className="session-modal__header__icons">
{headerIconButtons {headerIconButtons
? headerIconButtons.map((iconItem: any) => { ? headerIconButtons.map((iconItem: any) => {
return ( return (
<SessionIconButton <SessionIconButton
key={iconItem.iconType} key={iconItem.iconType}
iconType={iconItem.iconType} iconType={iconItem.iconType}
iconSize={SessionIconSize.Large} iconSize={SessionIconSize.Large}
iconRotation={iconItem.iconRotation} iconRotation={iconItem.iconRotation}
onClick={iconItem.onClick} onClick={iconItem.onClick}
theme={props.theme} theme={props.theme}
/> />
); );
}) })
: null} : null}
</div> </div>
</div> </div>
: null} ) : null}
<div className="session-modal__body"> <div className="session-modal__body">
<div className="session-modal__centered"> <div className="session-modal__centered">
{props.children} {props.children}
<div className="session-modal__button-group"> <div className="session-modal__button-group">
{onConfirm ? ( {onConfirm ? (
<SessionButton onClick={props.onConfirm}> <SessionButton onClick={props.onConfirm}>
{confirmText || window.i18n('ok')} {confirmText || window.i18n('ok')}
</SessionButton> </SessionButton>
) : null} ) : null}
{onClose && showClose ? ( {onClose && showClose ? (
<SessionButton onClick={props.onClose}> <SessionButton onClick={props.onClose}>
{cancelText || window.i18n('close')} {cancelText || window.i18n('close')}
</SessionButton> </SessionButton>
) : null} ) : null}
</div> </div>
</div> </div>
</div> </div>

@ -346,7 +346,7 @@ export class SessionMessagesList extends React.Component<Props, State> {
}; };
} }
messageProps.updateSessionConversationModal = this.props.updateSessionConversationModal messageProps.updateSessionConversationModal = this.props.updateSessionConversationModal;
return <Message {...messageProps} key={messageProps.id} />; return <Message {...messageProps} key={messageProps.id} />;
} }

@ -246,10 +246,10 @@ class SessionRightPanel extends React.Component<Props, State> {
const leaveGroupString = isPublic const leaveGroupString = isPublic
? window.i18n('leaveGroup') ? window.i18n('leaveGroup')
: isKickedFromGroup : isKickedFromGroup
? window.i18n('youGotKickedFromGroup') ? window.i18n('youGotKickedFromGroup')
: left : left
? window.i18n('youLeftTheGroup') ? window.i18n('youLeftTheGroup')
: window.i18n('leaveGroup'); : window.i18n('leaveGroup');
const disappearingMessagesOptions = timerOptions.map(option => { const disappearingMessagesOptions = timerOptions.map(option => {
return { return {

@ -21,7 +21,7 @@ interface Props {
confirmationDialogParams?: SessionConfirmDialogProps; confirmationDialogParams?: SessionConfirmDialogProps;
// for updating modal in redux // for updating modal in redux
updateConfirmModal?: any updateConfirmModal?: any;
} }
interface State { interface State {

@ -11,7 +11,7 @@ import { ConversationController } from '../../../session/conversations';
import { getConversationLookup } from '../../../state/selectors/conversations'; import { getConversationLookup } from '../../../state/selectors/conversations';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { getPasswordHash } from '../../../../ts/data/data'; import { getPasswordHash } from '../../../../ts/data/data';
import { SpacerLG } from '../../basic/Text'; import { SpacerLG, SpacerXS } from '../../basic/Text';
import { shell } from 'electron'; import { shell } from 'electron';
import { PasswordAction, SessionPasswordModal } from '../SessionPasswordModal'; import { PasswordAction, SessionPasswordModal } from '../SessionPasswordModal';
import { SessionConfirmDialogProps } from '../SessionConfirm'; import { SessionConfirmDialogProps } from '../SessionConfirm';
@ -173,8 +173,7 @@ class SettingsViewInner extends React.Component<SettingsViewProps, State> {
<h3>{window.i18n('password')}</h3> <h3>{window.i18n('password')}</h3>
<input type="password" id="password-lock-input" defaultValue="" placeholder="Password" /> <input type="password" id="password-lock-input" defaultValue="" placeholder="Password" />
<div className="spacer-xs" /> <SpacerXS />
{this.state.pwdLockError && ( {this.state.pwdLockError && (
<> <>
<div className="session-label warning">{this.state.pwdLockError}</div> <div className="session-label warning">{this.state.pwdLockError}</div>

@ -5,7 +5,7 @@ import { actions as conversations } from './ducks/conversations';
import { actions as user } from './ducks/user'; import { actions as user } from './ducks/user';
import { actions as sections } from './ducks/section'; import { actions as sections } from './ducks/section';
import { actions as theme } from './ducks/theme'; import { actions as theme } from './ducks/theme';
import { actions as modalDialog } from './ducks/modalDialog'; import { actions as modalDialog } from './ducks/modalDialog';
export function mapDispatchToProps(dispatch: Dispatch): Object { export function mapDispatchToProps(dispatch: Dispatch): Object {
return { return {
@ -16,7 +16,7 @@ export function mapDispatchToProps(dispatch: Dispatch): Object {
...user, ...user,
...theme, ...theme,
...sections, ...sections,
...modalDialog ...modalDialog,
}, },
dispatch dispatch
), ),

@ -1,5 +1,5 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { SessionConfirmDialogProps } from '../../components/session/SessionConfirm'; import { SessionConfirmDialogProps } from '../../components/session/SessionConfirm';
export type ConfirmModalState = SessionConfirmDialogProps | null; export type ConfirmModalState = SessionConfirmDialogProps | null;
@ -12,10 +12,10 @@ const confirmModalSlice = createSlice({
updateConfirmModal(state, action: PayloadAction<ConfirmModalState | null>) { updateConfirmModal(state, action: PayloadAction<ConfirmModalState | null>) {
state = action.payload; state = action.payload;
return action.payload; return action.payload;
} },
} },
}) });
export const { actions, reducer } = confirmModalSlice; export const { actions, reducer } = confirmModalSlice;
export const { updateConfirmModal } = actions; export const { updateConfirmModal } = actions;
export const confirmModalReducer = reducer; export const confirmModalReducer = reducer;

@ -17,7 +17,9 @@ const mapStateToProps = (state: StateType) => {
theme: getTheme(state), theme: getTheme(state),
messages: getMessagesOfSelectedConversation(state), messages: getMessagesOfSelectedConversation(state),
ourNumber: getOurNumber(state), ourNumber: getOurNumber(state),
confirmModal: (state: StateType) => {state.confirmModal} confirmModal: (state: StateType) => {
state.confirmModal;
},
}; };
}; };

@ -116,8 +116,7 @@ export type AttachmentFileType = {
attachment: any; attachment: any;
data: ArrayBuffer; data: ArrayBuffer;
size: number; size: number;
} };
// export async function readFile(attachment: any): Promise<object> { // export async function readFile(attachment: any): Promise<object> {
export async function readFile(attachment: any): Promise<AttachmentFileType> { export async function readFile(attachment: any): Promise<AttachmentFileType> {

Loading…
Cancel
Save