You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/state/selectors/conversationScreen.ts

39 lines
1.4 KiB
TypeScript

import { createSelector } from 'reselect';
import { StateType } from '../reducer';
import { ConversationScreenState } from '../ducks/conversationScreen';
import { MessagePropsDetails } from '../ducks/conversations';
export const getConversationScreenState = (state: StateType): ConversationScreenState =>
state.conversationScreen;
export const isMessageDetailView = createSelector(
getConversationScreenState,
(state: ConversationScreenState): boolean => state.messageDetailProps !== undefined
);
export const getMessageDetailsViewProps = createSelector(
getConversationScreenState,
(state: ConversationScreenState): MessagePropsDetails | undefined => state.messageDetailProps
);
export const isRightPanelShowing = createSelector(
getConversationScreenState,
(state: ConversationScreenState): boolean => state.showRightPanel
);
export const isMessageSelectionMode = createSelector(
getConversationScreenState,
(state: ConversationScreenState): boolean => state.selectedMessageIds.length > 0
);
export const getSelectedMessageIds = createSelector(
getConversationScreenState,
(state: ConversationScreenState): Array<string> => state.selectedMessageIds
);
export const isMessageSelected = (messageId: string) =>
createSelector(getConversationScreenState, (state: ConversationScreenState): boolean =>
state.selectedMessageIds.includes(messageId)
);