From d3d2ae5889e29238166a74429f0700cf7b79d644 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Sun, 14 May 2023 03:05:54 +0100 Subject: [PATCH] Refactor update topic progress functionality --- src/components/TopicDetail/TopicDetail.tsx | 2 + .../TopicDetail/TopicProgressButton.tsx | 69 +++---------------- 2 files changed, 10 insertions(+), 61 deletions(-) diff --git a/src/components/TopicDetail/TopicDetail.tsx b/src/components/TopicDetail/TopicDetail.tsx index ff5c9d132..2305377ec 100644 --- a/src/components/TopicDetail/TopicDetail.tsx +++ b/src/components/TopicDetail/TopicDetail.tsx @@ -45,6 +45,7 @@ export function TopicDetail() { } }; + // Close the topic detail when user clicks outside the topic detail useOutsideClick(topicRef, () => { setIsActive(false); @@ -169,6 +170,7 @@ export function TopicDetail() { topicId={topicId} resourceId={resourceId} resourceType={resourceType} + onShowLoginPopup={showLoginPopup} onClose={() => { setIsActive(false); }} diff --git a/src/components/TopicDetail/TopicProgressButton.tsx b/src/components/TopicDetail/TopicProgressButton.tsx index 38eefe6c7..a5ed10aa1 100644 --- a/src/components/TopicDetail/TopicProgressButton.tsx +++ b/src/components/TopicDetail/TopicProgressButton.tsx @@ -1,9 +1,6 @@ import { useEffect, useMemo, useRef, useState } from 'preact/hooks'; import { useOutsideClick } from '../../hooks/use-outside-click'; -import CheckIcon from '../../icons/check.svg'; import DownIcon from '../../icons/down.svg'; -import ProgressIcon from '../../icons/progress.svg'; -import ResetIcon from '../../icons/reset.svg'; import SpinnerIcon from '../../icons/spinner.svg'; import { isLoggedIn } from '../../lib/jwt'; import { @@ -19,6 +16,7 @@ type TopicProgressButtonProps = { resourceId: string; resourceType: ResourceType; + onShowLoginPopup: () => void; onClose: () => void; }; @@ -30,7 +28,7 @@ const statusColors: Record = { }; export function TopicProgressButton(props: TopicProgressButtonProps) { - const { topicId, resourceId, resourceType, onClose } = props; + const { topicId, resourceId, resourceType, onClose, onShowLoginPopup } = props; const [isUpdatingProgress, setIsUpdatingProgress] = useState(true); const [progress, setProgress] = useState('pending'); @@ -59,6 +57,12 @@ export function TopicProgressButton(props: TopicProgressButtonProps) { }, [topicId, resourceId, resourceType]); const handleUpdateResourceProgress = (progress: ResourceProgressType) => { + if (isGuest) { + onClose(); + onShowLoginPopup(); + return; + } + setIsUpdatingProgress(true); updateResourceProgress( { @@ -170,61 +174,4 @@ export function TopicProgressButton(props: TopicProgressButtonProps) { )} ); - - if (isGuest) { - return ( -
- - -
- ); - } - - return ( -
- {allowMarkingDone && ( - - )} - - {allowMarkingLearning && ( - - )} - - {allowMarkingPending && ( - - )} -
- ); }