import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import styled from 'styled-components'; import { setDisappearingMessagesByConvoId } from '../../../../interactions/conversationInteractions'; import { DisappearingMessageConversationSetting, DisappearingMessageConversationType, } 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?: DisappearingMessageConversationType; setSelected: (value: string) => void; }; const DisappearingModes = (props: DisappearingModesProps) => { const { options, selected, setSelected } = props; return ( <> {window.i18n('disappearingMessagesModeLabel')} {options.map((option: DisappearingMessageConversationType) => { 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 = DisappearingMessageConversationSetting; 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')} ); };