This commit is contained in:
Li1304553726 2025-02-28 11:45:55 +08:00
commit 862f85083f
5 changed files with 21 additions and 5 deletions

View File

@ -35,6 +35,7 @@ const CategorySection = () => {
const handleMouseClick = useCallback((categoryId: string) => {
setSelectedTerms({
...selectedTerms,
[TaxonomySlug.CATEGORY]: [categoryId],
});
navigate("/courses");

View File

@ -24,6 +24,7 @@ export default function FilterSection() {
<div key={index}>
<h3 className="text-lg font-medium mb-4">
{tax?.name}
{/* {JSON.stringify(items)} */}
</h3>
<TermParentSelector
value={items}

View File

@ -29,6 +29,7 @@ interface CourseDetailContextType {
setIsHeaderVisible: (visible: boolean) => 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);
@ -121,6 +127,7 @@ export function CourseDetailProvider({
setIsHeaderVisible,
canEdit,
userIsLearning,
setUserIsLearning
}}>
{children}
</CourseDetailContext.Provider>

View File

@ -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 (

View File

@ -37,7 +37,7 @@ export default function TermParentSelector({
<Checkbox.Group onChange={handleCheckboxChange}>
{data?.map((category) => (
<div className="w-full h-9 p-2 my-1">
<Checkbox className="text-base text-slate-700" key={category.id} value={category.id}>
<Checkbox checked={value?.includes(category.id)} className="text-base text-slate-700" key={category.id} value={category.id}>
{category.name}
</Checkbox>
</div>