WbwPaliDiscussionIcon.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { useAppSelector } from "../../../hooks";
  2. import { courseUser } from "../../../reducers/course-user";
  3. import { courseInfo } from "../../../reducers/current-course";
  4. import { currentUser } from "../../../reducers/current-user";
  5. import type { IDiscussionCountWbw } from "../../../api/Comment";
  6. import type { IStudio } from "../../auth/Studio";
  7. import DiscussionButton from "../../discussion/DiscussionButton";
  8. import type { IWbw } from "./WbwWord";
  9. interface IWidget {
  10. data: IWbw;
  11. studio?: IStudio;
  12. channelId?: string;
  13. }
  14. const WbwPaliDiscussionIcon = ({ data, studio, channelId }: IWidget) => {
  15. const userInCourse = useAppSelector(courseUser);
  16. const currUser = useAppSelector(currentUser);
  17. const course = useAppSelector(courseInfo);
  18. let wbw: IDiscussionCountWbw | undefined;
  19. let onlyMe = false;
  20. if (userInCourse) {
  21. if (userInCourse.role === "student") {
  22. if (studio?.id === currUser?.id) {
  23. //我自己的wbw channel 显示全部
  24. onlyMe = false;
  25. } else {
  26. //其他channel 只显示自己的
  27. onlyMe = true;
  28. }
  29. } else {
  30. if (course) {
  31. if (course.channelId === channelId) {
  32. wbw = {
  33. book_id: data.book,
  34. paragraph: data.para,
  35. wid: data.sn[0],
  36. };
  37. }
  38. }
  39. }
  40. }
  41. return (
  42. <DiscussionButton
  43. initCount={data.hasComment ? 1 : 0}
  44. hideCount
  45. hideInZero
  46. onlyMe={onlyMe}
  47. resId={data.uid}
  48. resType="wbw"
  49. wbw={wbw}
  50. />
  51. );
  52. };
  53. export default WbwPaliDiscussionIcon;