From f6ec4e806227948da475e9da2302572920f2bb6e Mon Sep 17 00:00:00 2001 From: tomobre Date: Fri, 27 Jan 2023 10:52:03 +1100 Subject: [PATCH] fix: on cancel link preview toggle, toggle stays off --- .../settings/section/CategoryPrivacy.tsx | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index 0e8d14b5a..736a5bd85 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -12,21 +12,7 @@ import { TypingBubble } from '../../conversation/TypingBubble'; import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem'; import { displayPasswordModal } from '../SessionSettings'; -async function toggleLinkPreviews() { - const newValue = !window.getSettingValue(SettingsKey.settingsLinkPreview); - await window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); - if (!newValue) { - await Data.createOrUpdateItem({ id: hasLinkPreviewPopupBeenDisplayed, value: false }); - } else { - window.inboxStore?.dispatch( - updateConfirmModal({ - title: window.i18n('linkPreviewsTitle'), - message: window.i18n('linkPreviewsConfirmMessage'), - okTheme: SessionButtonColor.Danger, - }) - ); - } -} + const TypingBubbleItem = () => { return ( @@ -41,8 +27,31 @@ export const SettingsCategoryPrivacy = (props: { hasPassword: boolean | null; onPasswordUpdated: (action: string) => void; }) => { + + const [isLinkPreviewsOn, setIsLinkPreviewsOn] = React.useState(Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview))) + + async function toggleLinkPreviews() { + const newValue = !isLinkPreviewsOn + await window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); + setIsLinkPreviewsOn(newValue) + if (!newValue) { + await Data.createOrUpdateItem({ id: hasLinkPreviewPopupBeenDisplayed, value: false }); + setIsLinkPreviewsOn(false) + } else { + window.inboxStore?.dispatch( + updateConfirmModal({ + title: window.i18n('linkPreviewsTitle'), + message: window.i18n('linkPreviewsConfirmMessage'), + okTheme: SessionButtonColor.Danger, + onClickCancel: async () => { + await window.setSettingValue(SettingsKey.settingsLinkPreview, Boolean(false)); + setIsLinkPreviewsOn(false)}, + }) + ); + } +} + const forceUpdate = useUpdate(); - const isLinkPreviewsOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); if (props.hasPassword !== null) { return (