Signal-Desktop/ts/state/smart/ChatColorPicker.tsx

49 lines
1.5 KiB
TypeScript

// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { connect } from 'react-redux';
import { mapDispatchToProps } from '../actions';
import type { PropsDataType } from '../../components/ChatColorPicker';
import { ChatColorPicker } from '../../components/ChatColorPicker';
import type { StateType } from '../reducer';
import {
getConversationSelector,
getConversationsWithCustomColorSelector,
} from '../selectors/conversations';
import { getIntl } from '../selectors/user';
import { getConversationColorAttributes } from '../../util/getConversationColorAttributes';
export type SmartChatColorPickerProps = {
conversationId?: string;
};
const mapStateToProps = (
state: StateType,
props: SmartChatColorPickerProps
): PropsDataType => {
const conversation = props.conversationId
? getConversationSelector(state)(props.conversationId)
: {};
const colorValues = getConversationColorAttributes(conversation);
const { customColors } = state.items;
return {
...props,
customColors: customColors ? customColors.colors : {},
getConversationsWithCustomColor: (colorId: string) =>
Promise.resolve(getConversationsWithCustomColorSelector(state)(colorId)),
i18n: getIntl(state),
selectedColor: colorValues.conversationColor,
selectedCustomColor: {
id: colorValues.customColorId,
value: colorValues.customColor,
},
};
};
const smart = connect(mapStateToProps, mapDispatchToProps);
export const SmartChatColorPicker = smart(ChatColorPicker);