From f4e5d89a15a0c753621479b6971ac181db5b4b64 Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 3 Apr 2023 14:09:04 +0200 Subject: [PATCH] fix: make sure to update state when the covnersation changes --- ts/components/buttons/PanelButton.tsx | 7 ++++-- .../overlay/OverlayDisappearingMessages.tsx | 25 ++++++++++++++----- ts/state/selectors/conversations.ts | 14 +++-------- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/ts/components/buttons/PanelButton.tsx b/ts/components/buttons/PanelButton.tsx index f4f6d1301..d1553423f 100644 --- a/ts/components/buttons/PanelButton.tsx +++ b/ts/components/buttons/PanelButton.tsx @@ -30,6 +30,9 @@ export const PanelLabel = styled.p` `; const StyledRoundedPanelButtonGroup = styled.div` + display: flex; + flex-direction: column; + justify-content: center; overflow: hidden; background: var(--right-panel-item-background-color); border-radius: 16px; @@ -40,7 +43,7 @@ const StyledRoundedPanelButtonGroup = styled.div` const PanelButtonContainer = styled.div` overflow: auto; - min-height: 40px; + min-height: 50px; max-height: 100%; `; @@ -69,7 +72,7 @@ const StyledPanelButton = styled.button<{ flex-grow: 1; font-family: var(--font-default); padding: 0px var(--margins-sm); - height: '50px'; + min-height: 50px; width: 100%; transition: var(--default-duration); background-color: ${props => diff --git a/ts/components/conversation/right-panel/overlay/OverlayDisappearingMessages.tsx b/ts/components/conversation/right-panel/overlay/OverlayDisappearingMessages.tsx index 1b2893b82..671a009cc 100644 --- a/ts/components/conversation/right-panel/overlay/OverlayDisappearingMessages.tsx +++ b/ts/components/conversation/right-panel/overlay/OverlayDisappearingMessages.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import styled from 'styled-components'; import { setDisappearingMessagesByConvoId } from '../../../../interactions/conversationInteractions'; @@ -94,7 +94,7 @@ const Header = (props: HeaderProps) => { type DisappearingModesProps = { options: Array; - selected: DisappearingMessageType; + selected?: DisappearingMessageType; setSelected: (value: string) => void; }; @@ -140,7 +140,7 @@ const DisappearingModes = (props: DisappearingModesProps) => { type TimerOptionsProps = { options: Array; - selected: number; + selected?: number; setSelected: (value: number) => void; }; @@ -173,10 +173,23 @@ export const OverlayDisappearingMessages = () => { const disappearingModeOptions = DisappearingMessageSetting; const timerOptions = useSelector(getTimerOptions).timerOptions; - const { expirationType, expireTimer } = useSelector(getSelectedConversationExpirationSettings); + const convoProps = useSelector(getSelectedConversationExpirationSettings); - const [modeSelected, setModeSelected] = useState(expirationType); - const [timeSelected, setTimeSelected] = useState(expireTimer); + 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 ( diff --git a/ts/state/selectors/conversations.ts b/ts/state/selectors/conversations.ts index 2f3b4169a..388ff5417 100644 --- a/ts/state/selectors/conversations.ts +++ b/ts/state/selectors/conversations.ts @@ -33,11 +33,7 @@ import { LightBoxOptions } from '../../components/conversation/SessionConversati import { getConversationController } from '../../session/conversations'; import { UserUtils } from '../../session/utils'; import { Storage } from '../../util/storage'; -import { - ConversationTypeEnum, - DisappearingMessageSetting, - DisappearingMessageType, -} from '../../models/conversationAttributes'; +import { ConversationTypeEnum } from '../../models/conversationAttributes'; import { MessageReactsSelectorProps } from '../../components/conversation/message/message-content/MessageReactions'; import { filter, isEmpty, pick, sortBy } from 'lodash'; @@ -1181,10 +1177,8 @@ export const getIsSelectedConvoInitialLoadingInProgress = createSelector( export const getSelectedConversationExpirationSettings = createSelector( getSelectedConversation, - ( - convo: ReduxConversationType | undefined - ): { expirationType: DisappearingMessageType; expireTimer: number } => ({ - expirationType: convo?.expirationType || DisappearingMessageSetting[0], - expireTimer: convo?.expireTimer || 0, + (convo: ReduxConversationType | undefined) => ({ + expirationType: convo?.expirationType, + expireTimer: convo?.expireTimer, }) );