From d8e9b5d21609191175de3b8718d097f1d5f94883 Mon Sep 17 00:00:00 2001 From: Rao <1227431568@qq.com> Date: Fri, 28 Feb 2025 10:45:13 +0800 Subject: [PATCH] rht --- .../app/main/home/components/CategorySection.tsx | 1 + .../src/app/main/layout/BasePost/FilterSection.tsx | 1 + .../models/course/detail/CourseDetailContext.tsx | 13 ++++++++++--- .../models/course/detail/JoinLearingButton.tsx | 9 ++++++++- .../components/models/term/term-parent-selector.tsx | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/main/home/components/CategorySection.tsx b/apps/web/src/app/main/home/components/CategorySection.tsx index 4c8141e..7d23030 100755 --- a/apps/web/src/app/main/home/components/CategorySection.tsx +++ b/apps/web/src/app/main/home/components/CategorySection.tsx @@ -35,6 +35,7 @@ const CategorySection = () => { const handleMouseClick = useCallback((categoryId: string) => { setSelectedTerms({ + ...selectedTerms, [TaxonomySlug.CATEGORY]: [categoryId], }); navigate("/courses"); diff --git a/apps/web/src/app/main/layout/BasePost/FilterSection.tsx b/apps/web/src/app/main/layout/BasePost/FilterSection.tsx index 9742e47..d7eccd4 100755 --- a/apps/web/src/app/main/layout/BasePost/FilterSection.tsx +++ b/apps/web/src/app/main/layout/BasePost/FilterSection.tsx @@ -24,6 +24,7 @@ export default function FilterSection() {

{tax?.name} + {/* {JSON.stringify(items)} */}

void; // 新增 canEdit?: boolean; userIsLearning?: boolean; + setUserIsLearning:(learning: boolean) => void; } interface CourseFormProviderProps { @@ -56,9 +57,14 @@ export function CourseDetailProvider({ { enabled: Boolean(editId) } ); - const userIsLearning = useMemo(() => { - return (course?.studentIds || []).includes(user?.id); - }, [user, course, isLoading]); + // const userIsLearning = useMemo(() => { + // return (course?.studentIds || []).includes(user?.id); + // }, [user, course, isLoading]); + const [userIsLearning, setUserIsLearning] = useState(false); + useEffect(()=>{ + console.log(course?.studentIds,user?.id) + setUserIsLearning((course?.studentIds || []).includes(user?.id)); + },[user, course, isLoading]) const canEdit = useMemo(() => { const isAuthor = isAuthenticated && user?.id === course?.authorId; const isRoot = hasSomePermissions(RolePerms?.MANAGE_ANY_POST); @@ -110,6 +116,7 @@ export function CourseDetailProvider({ setIsHeaderVisible, canEdit, userIsLearning, + setUserIsLearning }}> {children} diff --git a/apps/web/src/components/models/course/detail/JoinLearingButton.tsx b/apps/web/src/components/models/course/detail/JoinLearingButton.tsx index 68c4243..942a7de 100644 --- a/apps/web/src/components/models/course/detail/JoinLearingButton.tsx +++ b/apps/web/src/components/models/course/detail/JoinLearingButton.tsx @@ -12,15 +12,17 @@ import { EditTwoTone, LoginOutlined, } from "@ant-design/icons"; +import toast from "react-hot-toast"; export default function CourseOperationBtns() { const { id } = useParams(); const { isAuthenticated, user, hasSomePermissions, hasEveryPermissions } = useAuth(); const navigate = useNavigate(); - const { course, canEdit, userIsLearning } = useContext(CourseDetailContext); + const { course, canEdit, userIsLearning, setUserIsLearning} = useContext(CourseDetailContext); const { update } = useStaff(); const [isHovered, setIsHovered] = useState(false); + const toggleLearning = async () => { if (!userIsLearning) { await update.mutateAsync({ @@ -31,7 +33,10 @@ export default function CourseOperationBtns() { }, }, }); + setUserIsLearning(true) + toast.success("加入学习成功"); } else { + await update.mutateAsync({ where: { id: user?.id }, data: { @@ -42,6 +47,8 @@ export default function CourseOperationBtns() { }, }, }); + toast.success("退出学习成功"); + setUserIsLearning(false) } }; return ( diff --git a/apps/web/src/components/models/term/term-parent-selector.tsx b/apps/web/src/components/models/term/term-parent-selector.tsx index b604390..2b479b6 100755 --- a/apps/web/src/components/models/term/term-parent-selector.tsx +++ b/apps/web/src/components/models/term/term-parent-selector.tsx @@ -37,7 +37,7 @@ export default function TermParentSelector({ {data?.map((category) => (
- + {category.name}