import React, { useEffect, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import styled from 'styled-components';
import { setDisappearingMessagesByConvoId } from '../../../../interactions/conversationInteractions';
import {
DisappearingMessageSetting,
DisappearingMessageType,
} from '../../../../models/conversationAttributes';
import { closeRightPanel } from '../../../../state/ducks/conversations';
import { resetRightOverlayMode } from '../../../../state/ducks/section';
import { getSelectedConversationKey } from '../../../../state/selectors/conversations';
import { getTimerOptions } from '../../../../state/selectors/timerOptions';
import { Flex } from '../../../basic/Flex';
import { SessionButton } from '../../../basic/SessionButton';
import { SpacerLG, SpacerXL } from '../../../basic/Text';
import { PanelButtonGroup } from '../../../buttons';
import { PanelLabel } from '../../../buttons/PanelButton';
import { PanelRadioButton } from '../../../buttons/PanelRadioButton';
import { SessionIconButton } from '../../../icon';
import { getSelectedConversationExpirationSettings } from '../../../../state/selectors/conversations';
const StyledScrollContainer = styled.div`
width: 100%;
height: 100%;
overflow: hidden auto;
`;
const StyledContainer = styled(Flex)`
.session-button {
font-weight: 500;
min-width: 90px;
width: fit-content;
margin: 35px auto 0;
}
`;
const StyledTitle = styled.h2`
font-family: var(--font-default);
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
`;
const StyledSubTitle = styled.h3`
font-family: var(--font-default);
font-size: 11px;
font-weight: 400;
text-align: center;
padding-top: 0px;
margin-top: 0;
`;
type HeaderProps = {
title: string;
subtitle: string;
};
const Header = (props: HeaderProps) => {
const { title, subtitle } = props;
const dispatch = useDispatch();
return (
{
dispatch(resetRightOverlayMode());
}}
/>
{title}
{subtitle}
{
dispatch(closeRightPanel());
dispatch(resetRightOverlayMode());
}}
/>
);
};
type DisappearingModesProps = {
options: Array;
selected?: DisappearingMessageType;
setSelected: (value: string) => void;
};
const DisappearingModes = (props: DisappearingModesProps) => {
const { options, selected, setSelected } = props;
return (
<>
{window.i18n('disappearingMessagesModeLabel')}
{options.map((option: DisappearingMessageType) => {
const optionI18n =
option === 'off'
? window.i18n('disappearingMessagesModeOff')
: option === 'deleteAfterRead'
? window.i18n('disappearingMessagesModeAfterRead')
: window.i18n('disappearingMessagesModeAfterSend');
const subtitleI18n =
option === 'deleteAfterRead'
? window.i18n('disappearingMessagesModeAfterReadSubtitle')
: option === 'deleteAfterSend'
? window.i18n('disappearingMessagesModeAfterSendSubtitle')
: undefined;
return (
{
setSelected(option);
}}
disableBg={true}
/>
);
})}
>
);
};
type TimerOptionsProps = {
options: Array;
selected?: number;
setSelected: (value: number) => void;
};
const TimeOptions = (props: TimerOptionsProps) => {
const { options, selected, setSelected } = props;
return (
<>
{window.i18n('timer')}
{options.map((option: any) => (
{
setSelected(option.value);
}}
disableBg={true}
/>
))}
>
);
};
export const OverlayDisappearingMessages = () => {
const selectedConversationKey = useSelector(getSelectedConversationKey);
const disappearingModeOptions = DisappearingMessageSetting;
const timerOptions = useSelector(getTimerOptions).timerOptions;
const convoProps = useSelector(getSelectedConversationExpirationSettings);
if (!convoProps) {
return null;
}
const [modeSelected, setModeSelected] = useState(convoProps.expirationType);
const [timeSelected, setTimeSelected] = useState(convoProps.expireTimer);
useEffect(() => {
if (modeSelected !== convoProps.expirationType) {
setModeSelected(convoProps.expirationType);
}
if (timeSelected !== convoProps.expireTimer) {
setTimeSelected(convoProps.expireTimer);
}
}, [convoProps.expirationType, convoProps.expireTimer]);
return (
{modeSelected !== 'off' && (
<>
>
)}
{
if (selectedConversationKey && modeSelected && timeSelected) {
await setDisappearingMessagesByConvoId(
selectedConversationKey,
modeSelected,
timeSelected
);
}
}}
>
{window.i18n('set')}
);
};