From f6ec4e806227948da475e9da2302572920f2bb6e Mon Sep 17 00:00:00 2001 From: tomobre Date: Fri, 27 Jan 2023 10:52:03 +1100 Subject: [PATCH 1/5] 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 ( From 138d8da676418b388e4510842a73a2cd91863c83 Mon Sep 17 00:00:00 2001 From: tomobre Date: Wed, 15 Feb 2023 15:17:23 +1100 Subject: [PATCH 2/5] fix: function outside component, refactorised toggleLinkPreviews function --- .../settings/section/CategoryPrivacy.tsx | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index 736a5bd85..5784312ec 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -12,7 +12,25 @@ import { TypingBubble } from '../../conversation/TypingBubble'; import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem'; import { displayPasswordModal } from '../SessionSettings'; - +async function toggleLinkPreviews(isToggleOn: boolean, setIsToggleOn: (value: boolean) => void) { + if (!isToggleOn) { + window.inboxStore?.dispatch( + updateConfirmModal({ + title: window.i18n('linkPreviewsTitle'), + message: window.i18n('linkPreviewsConfirmMessage'), + okTheme: SessionButtonColor.Danger, + onClickOk: async () => { + const newValue = !isToggleOn; + await window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); + setIsToggleOn(newValue); + }, + }) + ); + } else { + await Data.createOrUpdateItem({ id: hasLinkPreviewPopupBeenDisplayed, value: false }); + setIsToggleOn(false); + } +} const TypingBubbleItem = () => { return ( @@ -27,30 +45,10 @@ export const SettingsCategoryPrivacy = (props: { hasPassword: boolean | null; onPasswordUpdated: (action: string) => void; }) => { + const [isLinkPreviewsOn, setIsLinkPreviewsOn] = React.useState( + Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)) + ); - 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(); if (props.hasPassword !== null) { @@ -79,7 +77,7 @@ export const SettingsCategoryPrivacy = (props: { /> { - await toggleLinkPreviews(); + await toggleLinkPreviews(isLinkPreviewsOn, setIsLinkPreviewsOn); forceUpdate(); }} title={window.i18n('linkPreviewsTitle')} From 77f0138d4945d2ff5ecbb3612dfee586d5920578 Mon Sep 17 00:00:00 2001 From: tomobre Date: Thu, 16 Feb 2023 11:36:52 +1100 Subject: [PATCH 3/5] fix: review changes #2, refactorised toggleLinkPreviews function --- .../settings/section/CategoryPrivacy.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index 5784312ec..e1364ccf8 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -12,7 +12,8 @@ import { TypingBubble } from '../../conversation/TypingBubble'; import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem'; import { displayPasswordModal } from '../SessionSettings'; -async function toggleLinkPreviews(isToggleOn: boolean, setIsToggleOn: (value: boolean) => void) { +async function toggleLinkPreviews(forceUpdate: () => void) { + const isToggleOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); if (!isToggleOn) { window.inboxStore?.dispatch( updateConfirmModal({ @@ -22,13 +23,14 @@ async function toggleLinkPreviews(isToggleOn: boolean, setIsToggleOn: (value: bo onClickOk: async () => { const newValue = !isToggleOn; await window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); - setIsToggleOn(newValue); + forceUpdate(); }, }) ); } else { + await window.setSettingValue(SettingsKey.settingsLinkPreview, false); await Data.createOrUpdateItem({ id: hasLinkPreviewPopupBeenDisplayed, value: false }); - setIsToggleOn(false); + forceUpdate(); } } @@ -45,9 +47,7 @@ export const SettingsCategoryPrivacy = (props: { hasPassword: boolean | null; onPasswordUpdated: (action: string) => void; }) => { - const [isLinkPreviewsOn, setIsLinkPreviewsOn] = React.useState( - Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)) - ); + const isLinkPreviewsOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); const forceUpdate = useUpdate(); @@ -77,8 +77,7 @@ export const SettingsCategoryPrivacy = (props: { /> { - await toggleLinkPreviews(isLinkPreviewsOn, setIsLinkPreviewsOn); - forceUpdate(); + await toggleLinkPreviews(forceUpdate); }} title={window.i18n('linkPreviewsTitle')} description={window.i18n('linkPreviewDescription')} From 18639ad8fd056393a21f59d1bdcbff3e5e3944c1 Mon Sep 17 00:00:00 2001 From: tomobre Date: Thu, 16 Feb 2023 11:39:14 +1100 Subject: [PATCH 4/5] fix: remove space --- ts/components/settings/section/CategoryPrivacy.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index e1364ccf8..8249e9e48 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -50,7 +50,6 @@ export const SettingsCategoryPrivacy = (props: { const isLinkPreviewsOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); const forceUpdate = useUpdate(); - if (props.hasPassword !== null) { return ( <> From c5a8b257cc4e4bbc76467d7a09fb3f1c2398a9c8 Mon Sep 17 00:00:00 2001 From: tomobre Date: Thu, 16 Feb 2023 11:40:31 +1100 Subject: [PATCH 5/5] fix: move line of forceupdate --- ts/components/settings/section/CategoryPrivacy.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index 8249e9e48..b936ce390 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -47,9 +47,9 @@ export const SettingsCategoryPrivacy = (props: { hasPassword: boolean | null; onPasswordUpdated: (action: string) => void; }) => { + const forceUpdate = useUpdate(); const isLinkPreviewsOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); - const forceUpdate = useUpdate(); if (props.hasPassword !== null) { return ( <>