Refactor smart components
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
parent
05c09ef769
commit
27b55e472d
109 changed files with 3583 additions and 2629 deletions
|
@ -1,14 +1,9 @@
|
|||
// Copyright 2022 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { connect } from 'react-redux';
|
||||
import { mapDispatchToProps } from '../actions';
|
||||
|
||||
import type { PropsDataType } from '../../components/EditUsernameModalBody';
|
||||
import React, { memo } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { EditUsernameModalBody } from '../../components/EditUsernameModalBody';
|
||||
import { getMinNickname, getMaxNickname } from '../../util/Username';
|
||||
|
||||
import type { StateType } from '../reducer';
|
||||
import { getIntl } from '../selectors/user';
|
||||
import {
|
||||
getUsernameReservationState,
|
||||
|
@ -18,25 +13,55 @@ import {
|
|||
} from '../selectors/username';
|
||||
import { getUsernameCorrupted } from '../selectors/items';
|
||||
import { getMe } from '../selectors/conversations';
|
||||
import { useUsernameActions } from '../ducks/username';
|
||||
import { useToastActions } from '../ducks/toast';
|
||||
|
||||
function mapStateToProps(state: StateType): PropsDataType {
|
||||
const i18n = getIntl(state);
|
||||
const { username } = getMe(state);
|
||||
const usernameCorrupted = getUsernameCorrupted(state);
|
||||
export type SmartEditUsernameModalBodyProps = Readonly<{
|
||||
isRootModal: boolean;
|
||||
onClose(): void;
|
||||
}>;
|
||||
|
||||
return {
|
||||
i18n,
|
||||
usernameCorrupted,
|
||||
currentUsername: usernameCorrupted ? undefined : username,
|
||||
minNickname: getMinNickname(),
|
||||
maxNickname: getMaxNickname(),
|
||||
state: getUsernameReservationState(state),
|
||||
recoveredUsername: getRecoveredUsername(state),
|
||||
reservation: getUsernameReservationObject(state),
|
||||
error: getUsernameReservationError(state),
|
||||
};
|
||||
}
|
||||
|
||||
const smart = connect(mapStateToProps, mapDispatchToProps);
|
||||
|
||||
export const SmartEditUsernameModalBody = smart(EditUsernameModalBody);
|
||||
export const SmartEditUsernameModalBody = memo(
|
||||
function SmartEditUsernameModalBody({
|
||||
isRootModal,
|
||||
onClose,
|
||||
}: SmartEditUsernameModalBodyProps) {
|
||||
const i18n = useSelector(getIntl);
|
||||
const { username } = useSelector(getMe);
|
||||
const usernameCorrupted = useSelector(getUsernameCorrupted);
|
||||
const currentUsername = usernameCorrupted ? undefined : username;
|
||||
const minNickname = getMinNickname();
|
||||
const maxNickname = getMaxNickname();
|
||||
const state = useSelector(getUsernameReservationState);
|
||||
const recoveredUsername = useSelector(getRecoveredUsername);
|
||||
const reservation = useSelector(getUsernameReservationObject);
|
||||
const error = useSelector(getUsernameReservationError);
|
||||
const {
|
||||
setUsernameReservationError,
|
||||
clearUsernameReservation,
|
||||
reserveUsername,
|
||||
confirmUsername,
|
||||
} = useUsernameActions();
|
||||
const { showToast } = useToastActions();
|
||||
return (
|
||||
<EditUsernameModalBody
|
||||
i18n={i18n}
|
||||
usernameCorrupted={usernameCorrupted}
|
||||
currentUsername={currentUsername}
|
||||
minNickname={minNickname}
|
||||
maxNickname={maxNickname}
|
||||
state={state}
|
||||
recoveredUsername={recoveredUsername}
|
||||
reservation={reservation}
|
||||
error={error}
|
||||
setUsernameReservationError={setUsernameReservationError}
|
||||
clearUsernameReservation={clearUsernameReservation}
|
||||
reserveUsername={reserveUsername}
|
||||
confirmUsername={confirmUsername}
|
||||
showToast={showToast}
|
||||
isRootModal={isRootModal}
|
||||
onClose={onClose}
|
||||
/>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue