From f7936738759d4c2aa9d5a4a370649a20d758d3f9 Mon Sep 17 00:00:00 2001 From: Mo Date: Thu, 17 Nov 2022 10:57:23 -0600 Subject: [PATCH] feat: click saving indicator to toggle visibility (#2028) --- .../NoteView/NoteStatusIndicator.tsx | 22 ++++++++++++------- .../Preferences/Panes/General/General.tsx | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/web/src/javascripts/Components/NoteView/NoteStatusIndicator.tsx b/packages/web/src/javascripts/Components/NoteView/NoteStatusIndicator.tsx index bd45ad662..6571a0590 100644 --- a/packages/web/src/javascripts/Components/NoteView/NoteStatusIndicator.tsx +++ b/packages/web/src/javascripts/Components/NoteView/NoteStatusIndicator.tsx @@ -1,9 +1,10 @@ import { ElementIds } from '@/Constants/ElementIDs' import { PrefDefaults } from '@/Constants/PrefDefaults' import { classNames } from '@/Utils/ConcatenateClassNames' -import { ReactNode, useState } from 'react' +import { ReactNode, useCallback, useState } from 'react' import { IconType, PrefKey } from '@standardnotes/snjs' import Icon from '../Icon/Icon' +import { useApplication } from '../ApplicationView/ApplicationProvider' export type NoteStatus = { type: 'saving' | 'saved' | 'error' @@ -42,7 +43,8 @@ const IndicatorWithTooltip = ({ id={ElementIds.NoteStatusTooltip} className={classNames( isTooltipVisible ? '' : 'hidden', - 'absolute top-full right-0 min-w-[90vw] translate-x-2 translate-y-1 select-none rounded border border-border bg-default py-1.5 px-3 text-left peer-hover:block peer-focus:block md:min-w-max', + 'absolute top-full right-0 min-w-[90vw] translate-x-2 translate-y-1 select-none rounded border border-border', + 'bg-default py-1.5 px-3 text-left peer-hover:block peer-focus:block md:min-w-max', )} > {children} @@ -61,11 +63,15 @@ const NoteStatusIndicator = ({ syncTakingTooLong, updateSavingIndicator = PrefDefaults[PrefKey.UpdateSavingStatusIndicator], }: Props) => { + const application = useApplication() const [isTooltipVisible, setIsTooltipVisible] = useState(false) - const onClick = () => setIsTooltipVisible((show) => !show) const onBlur = () => setIsTooltipVisible(false) + const toggleShowPreference = useCallback(() => { + void application.setPreference(PrefKey.UpdateSavingStatusIndicator, !updateSavingIndicator) + }, [application, updateSavingIndicator]) + if (updateSavingIndicator && !status) { return null } @@ -74,7 +80,7 @@ const NoteStatusIndicator = ({ return (
Note status updates are disabled
-
They can be re-enabled in the Preferences under General > Tools
+
Click to enable.
) } diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/General/General.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/General/General.tsx index fceb4a812..2c2483ce5 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/General/General.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/General/General.tsx @@ -23,8 +23,8 @@ const General: FunctionComponent = ({ viewControllerManager, application, - +