51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
|
// Copyright 2022 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { createSelector } from 'reselect';
|
||
|
|
||
|
import type { UsernameReservationType } from '../../types/Username';
|
||
|
import type { StateType } from '../reducer';
|
||
|
import type {
|
||
|
UsernameStateType,
|
||
|
UsernameReservationStateType,
|
||
|
} from '../ducks/username';
|
||
|
import type {
|
||
|
UsernameEditState,
|
||
|
UsernameReservationState,
|
||
|
UsernameReservationError,
|
||
|
} from '../ducks/usernameEnums';
|
||
|
|
||
|
export const getUsernameState = (state: StateType): UsernameStateType =>
|
||
|
state.username;
|
||
|
|
||
|
export const getUsernameEditState = createSelector(
|
||
|
getUsernameState,
|
||
|
(state: UsernameStateType): UsernameEditState => state.editState
|
||
|
);
|
||
|
|
||
|
export const getUsernameReservation = createSelector(
|
||
|
getUsernameState,
|
||
|
(state: UsernameStateType): UsernameReservationStateType =>
|
||
|
state.usernameReservation
|
||
|
);
|
||
|
|
||
|
export const getUsernameReservationState = createSelector(
|
||
|
getUsernameReservation,
|
||
|
(reservation: UsernameReservationStateType): UsernameReservationState =>
|
||
|
reservation.state
|
||
|
);
|
||
|
|
||
|
export const getUsernameReservationObject = createSelector(
|
||
|
getUsernameReservation,
|
||
|
(
|
||
|
reservation: UsernameReservationStateType
|
||
|
): UsernameReservationType | undefined => reservation.reservation
|
||
|
);
|
||
|
|
||
|
export const getUsernameReservationError = createSelector(
|
||
|
getUsernameReservation,
|
||
|
(
|
||
|
reservation: UsernameReservationStateType
|
||
|
): UsernameReservationError | undefined => reservation.error
|
||
|
);
|