// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

import { connect } from 'react-redux';
import { ConversationNotificationsSettings } from '../../components/conversation/conversation-details/ConversationNotificationsSettings';
import type { StateType } from '../reducer';
import { getIntl } from '../selectors/user';
import { getConversationByIdSelector } from '../selectors/conversations';
import { strictAssert } from '../../util/assert';

export type OwnProps = {
  conversationId: string;
  setDontNotifyForMentionsIfMuted: (
    dontNotifyForMentionsIfMuted: boolean
  ) => unknown;
  setMuteExpiration: (muteExpiresAt: undefined | number) => unknown;
};

const mapStateToProps = (state: StateType, props: OwnProps) => {
  const {
    conversationId,
    setDontNotifyForMentionsIfMuted,
    setMuteExpiration,
  } = props;

  const conversationSelector = getConversationByIdSelector(state);
  const conversation = conversationSelector(conversationId);
  strictAssert(conversation, 'Expected a conversation to be found');

  return {
    conversationType: conversation.type,
    dontNotifyForMentionsIfMuted: Boolean(
      conversation.dontNotifyForMentionsIfMuted
    ),
    i18n: getIntl(state),
    muteExpiresAt: conversation.muteExpiresAt,
    setDontNotifyForMentionsIfMuted,
    setMuteExpiration,
  };
};

const smart = connect(mapStateToProps, {});

export const SmartConversationNotificationsSettings = smart(
  ConversationNotificationsSettings
);
