From f060a0d4df4472a95bed8bf2907c43b6f9496c31 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Dec 2022 15:37:50 +0800 Subject: [PATCH 01/10] Add some debugging for set labels on highlights --- .../templates/article/SetLabelsControl.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/web/components/templates/article/SetLabelsControl.tsx b/packages/web/components/templates/article/SetLabelsControl.tsx index 34e4306e6..09cb65b7f 100644 --- a/packages/web/components/templates/article/SetLabelsControl.tsx +++ b/packages/web/components/templates/article/SetLabelsControl.tsx @@ -258,6 +258,8 @@ export function SetLabelsControl(props: SetLabelsControlProps): JSX.Element { const toggleLabel = useCallback( async (label: Label) => { + console.log('toggling label: ', label) + let newSelectedLabels = [...selectedLabels] if (isSelected(label)) { newSelectedLabels = selectedLabels.filter((other) => { @@ -268,12 +270,17 @@ export function SetLabelsControl(props: SetLabelsControlProps): JSX.Element { } setSelectedLabels(newSelectedLabels) - const result = await props.save(newSelectedLabels) - if (result) { - props.provider.labels = result - if (props.onLabelsChanged) { - props.onLabelsChanged(result) + try { + const result = await props.save(newSelectedLabels) + console.log(' -- result of setting labels: ', result) + if (result) { + props.provider.labels = result + if (props.onLabelsChanged) { + props.onLabelsChanged(result) + } } + } catch (err) { + console.log(' -- error setting labels: ', err) } revalidate() From 49bca60e2bb0c45ee01050d5e8f699ca2df5d394 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Dec 2022 15:55:54 +0800 Subject: [PATCH 02/10] More debugging --- packages/web/components/templates/article/SetLabelsModal.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/web/components/templates/article/SetLabelsModal.tsx b/packages/web/components/templates/article/SetLabelsModal.tsx index ed7edac6b..90d26b130 100644 --- a/packages/web/components/templates/article/SetLabelsModal.tsx +++ b/packages/web/components/templates/article/SetLabelsModal.tsx @@ -21,13 +21,18 @@ export function SetLabelsModal(props: SetLabelsModalProps): JSX.Element { const [selectedLabels, setSelectedLabels] = useState(props.provider.labels) const onOpenChange = useCallback( async (open: boolean) => { + console.log('SetLabelsModal::onOpenChange: ', open, selectedLabels) if (selectedLabels) { const result = await props.save(selectedLabels) + console.log('SetLabelsModal::onOpenChange: ', result) + if (result) { props.onLabelsChanged(result) } else { showErrorToast('Error updating labels') } + } else { + console.log('SetLabelsModal::onOpenChange: no selectedLabels') } props.onOpenChange(open) }, From 2c6b6ef3ccd7345b7939a9cce6ecd009590defc9 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Dec 2022 16:42:22 +0800 Subject: [PATCH 03/10] Set labels before making API call --- .../components/templates/article/SetLabelsControl.tsx | 10 ++++------ .../components/templates/article/SetLabelsModal.tsx | 1 + 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/web/components/templates/article/SetLabelsControl.tsx b/packages/web/components/templates/article/SetLabelsControl.tsx index 09cb65b7f..4e4fa529e 100644 --- a/packages/web/components/templates/article/SetLabelsControl.tsx +++ b/packages/web/components/templates/article/SetLabelsControl.tsx @@ -269,16 +269,14 @@ export function SetLabelsControl(props: SetLabelsControlProps): JSX.Element { newSelectedLabels = [...selectedLabels, label] } setSelectedLabels(newSelectedLabels) + props.provider.labels = newSelectedLabels + if (props.onLabelsChanged) { + props.onLabelsChanged(newSelectedLabels) + } try { const result = await props.save(newSelectedLabels) console.log(' -- result of setting labels: ', result) - if (result) { - props.provider.labels = result - if (props.onLabelsChanged) { - props.onLabelsChanged(result) - } - } } catch (err) { console.log(' -- error setting labels: ', err) } diff --git a/packages/web/components/templates/article/SetLabelsModal.tsx b/packages/web/components/templates/article/SetLabelsModal.tsx index 90d26b130..0a37a9817 100644 --- a/packages/web/components/templates/article/SetLabelsModal.tsx +++ b/packages/web/components/templates/article/SetLabelsModal.tsx @@ -41,6 +41,7 @@ export function SetLabelsModal(props: SetLabelsModalProps): JSX.Element { const handleSave = useCallback( (labels: Label[]) => { + console.log('setting selected labels: ', labels) setSelectedLabels(labels) return Promise.resolve(labels) }, From e03da2475dad5108089a621fdaa68b7bf75f5934 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 29 Dec 2022 17:37:52 +0800 Subject: [PATCH 04/10] Update setlabels to save on close, always use the modal --- .../templates/article/ArticleActionsMenu.tsx | 98 +++++++++++++------ .../templates/article/HighlightsLayer.tsx | 2 - .../templates/article/HighlightsModal.tsx | 2 +- .../templates/article/SetLabelsControl.tsx | 47 +++------ .../templates/article/SetLabelsModal.tsx | 41 +++----- .../templates/homeFeed/HomeFeedContainer.tsx | 2 +- .../web/pages/[username]/[slug]/index.tsx | 2 +- 7 files changed, 102 insertions(+), 92 deletions(-) diff --git a/packages/web/components/templates/article/ArticleActionsMenu.tsx b/packages/web/components/templates/article/ArticleActionsMenu.tsx index 195f176ff..d1037a957 100644 --- a/packages/web/components/templates/article/ArticleActionsMenu.tsx +++ b/packages/web/components/templates/article/ArticleActionsMenu.tsx @@ -20,6 +20,7 @@ import { useReaderSettings } from '../../../lib/hooks/useReaderSettings' import { useRef } from 'react' import { setLabelsMutation } from '../../../lib/networking/mutations/setLabelsMutation' import { Label } from '../../../lib/networking/fragments/labelFragment' +import { SetLabelsModal } from './SetLabelsModal' export type ArticleActionsMenuLayout = 'top' | 'side' @@ -102,12 +103,7 @@ export function ArticleActionsMenu( tooltipContent="Adjust Display Settings" tooltipSide={props.layout == 'side' ? 'right' : 'bottom'} > - - - + @@ -122,37 +118,56 @@ export function ArticleActionsMenu( }} > {props.article ? ( - + + + ) : ( + // + // + // + // } + // > + // { + // if (props.article?.id) { + // return setLabelsMutation( + // props.article?.id, + // labels.map((label) => label.id) + // ) + // } + // return Promise.resolve(undefined) + // }} + // onLabelsChanged={(labels) => { + // props.articleActionHandler('refreshLabels', labels) + // }} + // /> + //