@magmamath/students-features 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/commonjs/features/feedback/assets/icons/MessageBubbleIcon.js.map +1 -0
  2. package/dist/commonjs/features/feedback/assets/icons/XCloseIcon.js.map +1 -0
  3. package/dist/commonjs/features/feedback/components/{EmptyComment/EmptyComment.js → EmptyComment.js} +3 -3
  4. package/dist/commonjs/features/feedback/components/EmptyComment.js.map +1 -0
  5. package/dist/commonjs/features/feedback/components/{ListCardCommentsCount/ListCardCommentsCount.js → ListCardCommentsCount.js} +2 -2
  6. package/dist/commonjs/features/feedback/components/ListCardCommentsCount.js.map +1 -0
  7. package/dist/commonjs/features/feedback/components/TeacherFeedback.js +8 -8
  8. package/dist/commonjs/features/feedback/components/TeacherFeedback.js.map +1 -1
  9. package/dist/commonjs/features/feedback/components/TeacherFeedbackButton/TeacherFeedbackButton.js +2 -2
  10. package/dist/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherComment.js +3 -3
  11. package/dist/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherComment.js.map +1 -1
  12. package/dist/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.js +1 -1
  13. package/dist/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.js.map +1 -1
  14. package/dist/commonjs/features/feedback/components/index.js +1 -1
  15. package/dist/commonjs/features/feedback/constants.js +1 -18
  16. package/dist/commonjs/features/feedback/constants.js.map +1 -1
  17. package/dist/commonjs/features/feedback/helpers.js +22 -64
  18. package/dist/commonjs/features/feedback/helpers.js.map +1 -1
  19. package/dist/commonjs/features/feedback/index.js +8 -8
  20. package/dist/commonjs/features/feedback/index.js.map +1 -1
  21. package/dist/commonjs/features/feedback/model/api.js +15 -0
  22. package/dist/commonjs/features/feedback/model/api.js.map +1 -0
  23. package/dist/commonjs/features/feedback/model/comments.js +88 -0
  24. package/dist/commonjs/features/feedback/model/comments.js.map +1 -0
  25. package/dist/commonjs/features/feedback/model/model.js +104 -0
  26. package/dist/commonjs/features/feedback/model/model.js.map +1 -0
  27. package/dist/commonjs/features/feedback/model/sockets.js +25 -0
  28. package/dist/commonjs/features/feedback/model/sockets.js.map +1 -0
  29. package/dist/commonjs/features/feedback/types.js +12 -0
  30. package/dist/commonjs/features/feedback/types.js.map +1 -0
  31. package/dist/commonjs/lib/helpers/helpers.js +24 -1
  32. package/dist/commonjs/lib/helpers/helpers.js.map +1 -1
  33. package/dist/commonjs/shared/translation/constants.js +42 -1
  34. package/dist/commonjs/shared/translation/constants.js.map +1 -1
  35. package/dist/module/features/feedback/assets/icons/MessageBubbleIcon.js.map +1 -0
  36. package/dist/module/features/feedback/assets/icons/XCloseIcon.js.map +1 -0
  37. package/dist/module/features/feedback/components/{EmptyComment/EmptyComment.js → EmptyComment.js} +3 -3
  38. package/dist/module/features/feedback/components/EmptyComment.js.map +1 -0
  39. package/dist/module/features/feedback/components/{ListCardCommentsCount/ListCardCommentsCount.js → ListCardCommentsCount.js} +2 -2
  40. package/dist/module/features/feedback/components/ListCardCommentsCount.js.map +1 -0
  41. package/dist/module/features/feedback/components/TeacherFeedback.js +8 -8
  42. package/dist/module/features/feedback/components/TeacherFeedback.js.map +1 -1
  43. package/dist/module/features/feedback/components/TeacherFeedbackButton/TeacherFeedbackButton.js +2 -2
  44. package/dist/module/features/feedback/components/TeacherFeedbackButton/TeacherFeedbackButton.js.map +1 -1
  45. package/dist/module/features/feedback/components/TeacherFeedbackComments/TeacherComment.js +3 -3
  46. package/dist/module/features/feedback/components/TeacherFeedbackComments/TeacherComment.js.map +1 -1
  47. package/dist/module/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.js +1 -1
  48. package/dist/module/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.js.map +1 -1
  49. package/dist/module/features/feedback/components/index.js +1 -1
  50. package/dist/module/features/feedback/components/index.js.map +1 -1
  51. package/dist/module/features/feedback/constants.js +0 -16
  52. package/dist/module/features/feedback/constants.js.map +1 -1
  53. package/dist/module/features/feedback/helpers.js +20 -62
  54. package/dist/module/features/feedback/helpers.js.map +1 -1
  55. package/dist/module/features/feedback/index.js +2 -2
  56. package/dist/module/features/feedback/index.js.map +1 -1
  57. package/dist/module/features/feedback/model/api.js +10 -0
  58. package/dist/module/features/feedback/model/api.js.map +1 -0
  59. package/dist/module/features/feedback/model/comments.js +83 -0
  60. package/dist/module/features/feedback/model/comments.js.map +1 -0
  61. package/dist/module/features/feedback/model/model.js +99 -0
  62. package/dist/module/features/feedback/model/model.js.map +1 -0
  63. package/dist/module/features/feedback/model/sockets.js +20 -0
  64. package/dist/module/features/feedback/model/sockets.js.map +1 -0
  65. package/dist/module/features/feedback/types.js +8 -0
  66. package/dist/module/features/feedback/types.js.map +1 -0
  67. package/dist/module/lib/helpers/helpers.js +22 -0
  68. package/dist/module/lib/helpers/helpers.js.map +1 -1
  69. package/dist/module/shared/translation/constants.js +41 -0
  70. package/dist/module/shared/translation/constants.js.map +1 -1
  71. package/dist/typescript/commonjs/features/feedback/assets/icons/MessageBubbleIcon.d.ts.map +1 -0
  72. package/dist/typescript/commonjs/features/feedback/assets/icons/XCloseIcon.d.ts.map +1 -0
  73. package/dist/typescript/commonjs/features/feedback/components/{EmptyComment/EmptyComment.d.ts → EmptyComment.d.ts} +1 -1
  74. package/dist/typescript/commonjs/features/feedback/components/EmptyComment.d.ts.map +1 -0
  75. package/dist/typescript/commonjs/features/feedback/components/ListCardCommentsCount.d.ts.map +1 -0
  76. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedback.d.ts +6 -2
  77. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedback.d.ts.map +1 -1
  78. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherComment.d.ts +2 -2
  79. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherComment.d.ts.map +1 -1
  80. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.d.ts +3 -2
  81. package/dist/typescript/commonjs/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.d.ts.map +1 -1
  82. package/dist/typescript/commonjs/features/feedback/components/index.d.ts +1 -1
  83. package/dist/typescript/commonjs/features/feedback/components/index.d.ts.map +1 -1
  84. package/dist/typescript/commonjs/features/feedback/constants.d.ts +0 -14
  85. package/dist/typescript/commonjs/features/feedback/constants.d.ts.map +1 -1
  86. package/dist/typescript/commonjs/features/feedback/helpers.d.ts +9 -2
  87. package/dist/typescript/commonjs/features/feedback/helpers.d.ts.map +1 -1
  88. package/dist/typescript/commonjs/features/feedback/index.d.ts +2 -2
  89. package/dist/typescript/commonjs/features/feedback/index.d.ts.map +1 -1
  90. package/dist/typescript/commonjs/features/feedback/model/api.d.ts +9 -0
  91. package/dist/typescript/commonjs/features/feedback/model/api.d.ts.map +1 -0
  92. package/dist/typescript/commonjs/features/feedback/model/comments.d.ts +16 -0
  93. package/dist/typescript/commonjs/features/feedback/model/comments.d.ts.map +1 -0
  94. package/dist/typescript/commonjs/features/feedback/model/model.d.ts +27 -0
  95. package/dist/typescript/commonjs/features/feedback/model/model.d.ts.map +1 -0
  96. package/dist/typescript/commonjs/features/feedback/model/sockets.d.ts +10 -0
  97. package/dist/typescript/commonjs/features/feedback/model/sockets.d.ts.map +1 -0
  98. package/dist/typescript/commonjs/features/feedback/types.d.ts +40 -0
  99. package/dist/typescript/commonjs/features/feedback/types.d.ts.map +1 -0
  100. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts +2 -0
  101. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts.map +1 -1
  102. package/dist/typescript/commonjs/shared/translation/constants.d.ts +41 -0
  103. package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -1
  104. package/dist/typescript/module/features/feedback/assets/icons/MessageBubbleIcon.d.ts.map +1 -0
  105. package/dist/typescript/module/features/feedback/assets/icons/XCloseIcon.d.ts.map +1 -0
  106. package/dist/typescript/module/features/feedback/components/{EmptyComment/EmptyComment.d.ts → EmptyComment.d.ts} +1 -1
  107. package/dist/typescript/module/features/feedback/components/EmptyComment.d.ts.map +1 -0
  108. package/dist/typescript/module/features/feedback/components/ListCardCommentsCount.d.ts.map +1 -0
  109. package/dist/typescript/module/features/feedback/components/TeacherFeedback.d.ts +6 -2
  110. package/dist/typescript/module/features/feedback/components/TeacherFeedback.d.ts.map +1 -1
  111. package/dist/typescript/module/features/feedback/components/TeacherFeedbackComments/TeacherComment.d.ts +2 -2
  112. package/dist/typescript/module/features/feedback/components/TeacherFeedbackComments/TeacherComment.d.ts.map +1 -1
  113. package/dist/typescript/module/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.d.ts +3 -2
  114. package/dist/typescript/module/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.d.ts.map +1 -1
  115. package/dist/typescript/module/features/feedback/components/index.d.ts +1 -1
  116. package/dist/typescript/module/features/feedback/components/index.d.ts.map +1 -1
  117. package/dist/typescript/module/features/feedback/constants.d.ts +0 -14
  118. package/dist/typescript/module/features/feedback/constants.d.ts.map +1 -1
  119. package/dist/typescript/module/features/feedback/helpers.d.ts +9 -2
  120. package/dist/typescript/module/features/feedback/helpers.d.ts.map +1 -1
  121. package/dist/typescript/module/features/feedback/index.d.ts +2 -2
  122. package/dist/typescript/module/features/feedback/index.d.ts.map +1 -1
  123. package/dist/typescript/module/features/feedback/model/api.d.ts +9 -0
  124. package/dist/typescript/module/features/feedback/model/api.d.ts.map +1 -0
  125. package/dist/typescript/module/features/feedback/model/comments.d.ts +16 -0
  126. package/dist/typescript/module/features/feedback/model/comments.d.ts.map +1 -0
  127. package/dist/typescript/module/features/feedback/model/model.d.ts +27 -0
  128. package/dist/typescript/module/features/feedback/model/model.d.ts.map +1 -0
  129. package/dist/typescript/module/features/feedback/model/sockets.d.ts +10 -0
  130. package/dist/typescript/module/features/feedback/model/sockets.d.ts.map +1 -0
  131. package/dist/typescript/module/features/feedback/types.d.ts +40 -0
  132. package/dist/typescript/module/features/feedback/types.d.ts.map +1 -0
  133. package/dist/typescript/module/lib/helpers/helpers.d.ts +2 -0
  134. package/dist/typescript/module/lib/helpers/helpers.d.ts.map +1 -1
  135. package/dist/typescript/module/shared/translation/constants.d.ts +41 -0
  136. package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -1
  137. package/package.json +1 -1
  138. package/src/features/feedback/components/{EmptyComment/EmptyComment.tsx → EmptyComment.tsx} +3 -3
  139. package/src/features/feedback/components/{ListCardCommentsCount/ListCardCommentsCount.tsx → ListCardCommentsCount.tsx} +2 -2
  140. package/src/features/feedback/components/TeacherFeedback.tsx +21 -11
  141. package/src/features/feedback/components/TeacherFeedbackButton/TeacherFeedbackButton.tsx +2 -2
  142. package/src/features/feedback/components/TeacherFeedbackComments/TeacherComment.tsx +10 -4
  143. package/src/features/feedback/components/TeacherFeedbackComments/TeacherFeedbackComments.tsx +4 -3
  144. package/src/features/feedback/components/index.ts +1 -1
  145. package/src/features/feedback/constants.ts +2 -18
  146. package/src/features/feedback/helpers.ts +27 -60
  147. package/src/features/feedback/index.ts +2 -2
  148. package/src/features/feedback/model/api.ts +13 -0
  149. package/src/features/feedback/model/comments.ts +82 -0
  150. package/src/features/feedback/model/model.ts +102 -0
  151. package/src/features/feedback/model/sockets.ts +22 -0
  152. package/src/features/feedback/types.ts +42 -0
  153. package/src/lib/helpers/helpers.ts +26 -0
  154. package/src/shared/translation/constants.ts +45 -3
  155. package/dist/commonjs/features/feedback/components/EmptyComment/EmptyComment.js.map +0 -1
  156. package/dist/commonjs/features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.js.map +0 -1
  157. package/dist/commonjs/features/feedback/components/icons/MessageBubbleIcon.js.map +0 -1
  158. package/dist/commonjs/features/feedback/components/icons/XCloseIcon.js.map +0 -1
  159. package/dist/commonjs/features/feedback/model/teacherFeedback.model.js +0 -211
  160. package/dist/commonjs/features/feedback/model/teacherFeedback.model.js.map +0 -1
  161. package/dist/commonjs/features/feedback/types/teacherFeedback.types.js +0 -18
  162. package/dist/commonjs/features/feedback/types/teacherFeedback.types.js.map +0 -1
  163. package/dist/module/features/feedback/components/EmptyComment/EmptyComment.js.map +0 -1
  164. package/dist/module/features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.js.map +0 -1
  165. package/dist/module/features/feedback/components/icons/MessageBubbleIcon.js.map +0 -1
  166. package/dist/module/features/feedback/components/icons/XCloseIcon.js.map +0 -1
  167. package/dist/module/features/feedback/model/teacherFeedback.model.js +0 -206
  168. package/dist/module/features/feedback/model/teacherFeedback.model.js.map +0 -1
  169. package/dist/module/features/feedback/types/teacherFeedback.types.js +0 -14
  170. package/dist/module/features/feedback/types/teacherFeedback.types.js.map +0 -1
  171. package/dist/typescript/commonjs/features/feedback/components/EmptyComment/EmptyComment.d.ts.map +0 -1
  172. package/dist/typescript/commonjs/features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.d.ts.map +0 -1
  173. package/dist/typescript/commonjs/features/feedback/components/icons/MessageBubbleIcon.d.ts.map +0 -1
  174. package/dist/typescript/commonjs/features/feedback/components/icons/XCloseIcon.d.ts.map +0 -1
  175. package/dist/typescript/commonjs/features/feedback/model/teacherFeedback.model.d.ts +0 -45
  176. package/dist/typescript/commonjs/features/feedback/model/teacherFeedback.model.d.ts.map +0 -1
  177. package/dist/typescript/commonjs/features/feedback/types/teacherFeedback.types.d.ts +0 -33
  178. package/dist/typescript/commonjs/features/feedback/types/teacherFeedback.types.d.ts.map +0 -1
  179. package/dist/typescript/module/features/feedback/components/EmptyComment/EmptyComment.d.ts.map +0 -1
  180. package/dist/typescript/module/features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.d.ts.map +0 -1
  181. package/dist/typescript/module/features/feedback/components/icons/MessageBubbleIcon.d.ts.map +0 -1
  182. package/dist/typescript/module/features/feedback/components/icons/XCloseIcon.d.ts.map +0 -1
  183. package/dist/typescript/module/features/feedback/model/teacherFeedback.model.d.ts +0 -45
  184. package/dist/typescript/module/features/feedback/model/teacherFeedback.model.d.ts.map +0 -1
  185. package/dist/typescript/module/features/feedback/types/teacherFeedback.types.d.ts +0 -33
  186. package/dist/typescript/module/features/feedback/types/teacherFeedback.types.d.ts.map +0 -1
  187. package/src/features/feedback/model/teacherFeedback.model.ts +0 -268
  188. package/src/features/feedback/types/teacherFeedback.types.ts +0 -32
  189. /package/dist/commonjs/features/feedback/{components → assets}/icons/MessageBubbleIcon.js +0 -0
  190. /package/dist/commonjs/features/feedback/{components → assets}/icons/XCloseIcon.js +0 -0
  191. /package/dist/module/features/feedback/{components → assets}/icons/MessageBubbleIcon.js +0 -0
  192. /package/dist/module/features/feedback/{components → assets}/icons/XCloseIcon.js +0 -0
  193. /package/dist/typescript/commonjs/features/feedback/{components → assets}/icons/MessageBubbleIcon.d.ts +0 -0
  194. /package/dist/typescript/commonjs/features/feedback/{components → assets}/icons/XCloseIcon.d.ts +0 -0
  195. /package/dist/typescript/commonjs/features/feedback/components/{ListCardCommentsCount/ListCardCommentsCount.d.ts → ListCardCommentsCount.d.ts} +0 -0
  196. /package/dist/typescript/module/features/feedback/{components → assets}/icons/MessageBubbleIcon.d.ts +0 -0
  197. /package/dist/typescript/module/features/feedback/{components → assets}/icons/XCloseIcon.d.ts +0 -0
  198. /package/dist/typescript/module/features/feedback/components/{ListCardCommentsCount/ListCardCommentsCount.d.ts → ListCardCommentsCount.d.ts} +0 -0
  199. /package/src/features/feedback/{components → assets}/icons/MessageBubbleIcon.tsx +0 -0
  200. /package/src/features/feedback/{components → assets}/icons/XCloseIcon.tsx +0 -0
@@ -1,45 +0,0 @@
1
- import { Effect, StoreWritable } from 'effector';
2
- import { CommentsEntity, GetCommentsByIdProps, Locale, TeacherComment, UpdateCommentSeenStatusProps } from '../types/teacherFeedback.types';
3
- type TeacherFeedbackModelProps = {
4
- credits: {
5
- assignmentId: StoreWritable<string>;
6
- problemId: StoreWritable<string>;
7
- locale: StoreWritable<Locale | null>;
8
- };
9
- api: {
10
- getCommentsByAssignmentId: (props: GetCommentsByIdProps) => Promise<Record<string, {
11
- comments: TeacherComment[];
12
- }>>;
13
- updateCommentSeenStatus: (props: UpdateCommentSeenStatusProps) => Promise<void>;
14
- };
15
- };
16
- type CommentsMap = Map<string, Record<string, CommentsEntity>>;
17
- export declare class TeacherFeedbackModel {
18
- $assignmentId: StoreWritable<string>;
19
- $currentProblemId: StoreWritable<string>;
20
- $locale: StoreWritable<Locale | null>;
21
- setCommentsSeen: import("effector").EventCallable<{
22
- ids: string[];
23
- currentProblemId: string;
24
- assignmentId: string;
25
- }>;
26
- $comments: StoreWritable<CommentsMap>;
27
- setIsOpened: import("effector").EventCallable<boolean>;
28
- $isOpened: StoreWritable<boolean>;
29
- setIsVisible: import("effector").EventCallable<boolean>;
30
- $isVisible: StoreWritable<boolean>;
31
- getCommentsByAssignmentIdFx: Effect<GetCommentsByIdProps, {
32
- data: Record<string, {
33
- comments: TeacherComment[];
34
- }>;
35
- assignmentId: string;
36
- }>;
37
- updateCommentSeenFx: Effect<UpdateCommentSeenStatusProps, void>;
38
- sockets: {
39
- onCreate: import("effector").EventCallable<TeacherComment>;
40
- onDeleted: import("effector").EventCallable<TeacherComment>;
41
- };
42
- constructor({ api, credits }: TeacherFeedbackModelProps);
43
- }
44
- export {};
45
- //# sourceMappingURL=teacherFeedback.model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"teacherFeedback.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/feedback/model/teacherFeedback.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,EAGN,aAAa,EACd,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,4BAA4B,EAC7B,MAAM,gCAAgC,CAAA;AAGvC,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE;QACP,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QACnC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;KACrC,CAAA;IACD,GAAG,EAAE;QACH,yBAAyB,EAAE,CACzB,KAAK,EAAE,oBAAoB,KACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;SAAE,CAAC,CAAC,CAAA;QAC5D,uBAAuB,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAChF,CAAA;CACF,CAAA;AAED,KAAK,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;AAE9D,qBAAa,oBAAoB;IAC/B,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,OAAO,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAErC,eAAe;aAAsB,MAAM,EAAE;0BAAoB,MAAM;sBAAgB,MAAM;OAAK;IAClG,SAAS,6BAAsC;IAE/C,WAAW,4CAAyB;IACpC,SAAS,yBAAmC;IAC5C,YAAY,4CAAyB;IACrC,UAAU,yBAAoC;IAE9C,2BAA2B,EAAE,MAAM,CACjC,oBAAoB,EACpB;QACE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;SAAE,CAAC,CAAA;QACpD,YAAY,EAAE,MAAM,CAAA;KACrB,CACF,CAAA;IACD,mBAAmB,EAAE,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;IAE/D,OAAO;;;MAGN;gBAEW,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,yBAAyB;CA8MxD"}
@@ -1,33 +0,0 @@
1
- export type GetCommentsByIdProps = {
2
- id: string;
3
- };
4
- export type UpdateCommentSeenStatusProps = {
5
- ids: string[];
6
- };
7
- export type TeacherComment = {
8
- _id: string;
9
- teacherId: string;
10
- teacherName: string;
11
- studentId: string;
12
- problemId: string;
13
- exerciseId: string;
14
- content: string;
15
- isRead: boolean;
16
- createdAt: Date;
17
- updatedAt: Date;
18
- __v: number;
19
- };
20
- export type CommentsEntity = {
21
- comments: TeacherComment[];
22
- unreadMessagesCount: number;
23
- };
24
- export declare enum Locale {
25
- US = "en-US",
26
- SV = "sv-SE",
27
- GB = "en-GB"
28
- }
29
- export declare enum TeacherFeedbackSocketEvent {
30
- COMMENT_CREATED = "exerciseCommentCreated",
31
- COMMENT_DELETED = "exerciseCommentDeleted"
32
- }
33
- //# sourceMappingURL=teacherFeedback.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"teacherFeedback.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/feedback/types/teacherFeedback.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,4BAA4B,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,oBAAY,MAAM;IAChB,EAAE,UAAU;IACZ,EAAE,UAAU;IACZ,EAAE,UAAU;CACb;AAED,oBAAY,0BAA0B;IACpC,eAAe,2BAA2B;IAC1C,eAAe,2BAA2B;CAC3C"}
@@ -1,268 +0,0 @@
1
- import {
2
- createEffect,
3
- createEvent,
4
- createStore,
5
- Effect,
6
- restore,
7
- sample,
8
- StoreWritable,
9
- } from 'effector'
10
- import {
11
- CommentsEntity,
12
- GetCommentsByIdProps,
13
- Locale,
14
- TeacherComment,
15
- UpdateCommentSeenStatusProps,
16
- } from '../types/teacherFeedback.types'
17
- import { EMPTY_COMMENT_ID, getEmptyComment } from '../constants'
18
-
19
- type TeacherFeedbackModelProps = {
20
- credits: {
21
- assignmentId: StoreWritable<string>
22
- problemId: StoreWritable<string>
23
- locale: StoreWritable<Locale | null>
24
- }
25
- api: {
26
- getCommentsByAssignmentId: (
27
- props: GetCommentsByIdProps,
28
- ) => Promise<Record<string, { comments: TeacherComment[] }>>
29
- updateCommentSeenStatus: (props: UpdateCommentSeenStatusProps) => Promise<void>
30
- }
31
- }
32
-
33
- type CommentsMap = Map<string, Record<string, CommentsEntity>>
34
-
35
- export class TeacherFeedbackModel {
36
- $assignmentId: StoreWritable<string>
37
- $currentProblemId: StoreWritable<string>
38
- $locale: StoreWritable<Locale | null>
39
-
40
- setCommentsSeen = createEvent<{ ids: string[]; currentProblemId: string; assignmentId: string }>()
41
- $comments = createStore<CommentsMap>(new Map())
42
-
43
- setIsOpened = createEvent<boolean>()
44
- $isOpened = restore(this.setIsOpened, false)
45
- setIsVisible = createEvent<boolean>()
46
- $isVisible = restore(this.setIsVisible, false)
47
-
48
- getCommentsByAssignmentIdFx: Effect<
49
- GetCommentsByIdProps,
50
- {
51
- data: Record<string, { comments: TeacherComment[] }>
52
- assignmentId: string
53
- }
54
- >
55
- updateCommentSeenFx: Effect<UpdateCommentSeenStatusProps, void>
56
-
57
- sockets = {
58
- onCreate: createEvent<TeacherComment>(),
59
- onDeleted: createEvent<TeacherComment>(),
60
- }
61
-
62
- constructor({ api, credits }: TeacherFeedbackModelProps) {
63
- this.getCommentsByAssignmentIdFx = createEffect(async ({ id }: { id: string }) => {
64
- const response = await api.getCommentsByAssignmentId({ id })
65
- return {
66
- data: response,
67
- assignmentId: id,
68
- }
69
- })
70
- this.updateCommentSeenFx = createEffect(api.updateCommentSeenStatus)
71
- this.$assignmentId = credits.assignmentId
72
- this.$currentProblemId = credits.problemId
73
- this.$locale = credits.locale
74
-
75
- sample({
76
- clock: this.$currentProblemId,
77
- fn: () => false,
78
- target: this.setIsOpened,
79
- })
80
-
81
- sample({
82
- clock: this.sockets.onCreate,
83
- source: [this.$isOpened, this.$currentProblemId, this.$assignmentId] as const,
84
- filter: ([isOpen, currentProblemId], payload) => {
85
- return isOpen && currentProblemId === payload.problemId
86
- },
87
- fn: ([_, currentProblemId, assignmentId], { _id }) => ({
88
- currentProblemId,
89
- assignmentId,
90
- ids: [_id],
91
- }),
92
- target: [this.setCommentsSeen, this.updateCommentSeenFx],
93
- })
94
-
95
- sample({
96
- clock: this.$isOpened,
97
- source: [this.$comments, this.$currentProblemId, this.$assignmentId] as const,
98
- filter: ([feedback, currentProblemId, assignmentId], isOpen) => {
99
- const assignmentComments = feedback.get(assignmentId) || {}
100
- const comments = assignmentComments[currentProblemId]?.comments ?? []
101
- const hasUnreadComments = comments.some(comment => !comment.isRead)
102
- return isOpen && hasUnreadComments
103
- },
104
- fn: ([feedback, currentProblemId, assignmentId]) => {
105
- const assignmentComments = feedback.get(assignmentId) || {}
106
- const comments = assignmentComments[currentProblemId]?.comments ?? []
107
- return {
108
- currentProblemId,
109
- assignmentId,
110
- ids: comments.filter(comment => !comment.isRead).map(comment => comment._id),
111
- }
112
- },
113
- target: [this.setCommentsSeen, this.updateCommentSeenFx],
114
- })
115
-
116
- this.$isVisible.on(this.getCommentsByAssignmentIdFx.doneData, (_, { data }) => {
117
- return Object.values(data).some(problemFeedback => problemFeedback.comments?.length > 0)
118
- })
119
-
120
- this.$comments
121
- .on(this.getCommentsByAssignmentIdFx.doneData, (state, { assignmentId, data }) => {
122
- const problemsMap: Record<string, CommentsEntity> = {}
123
-
124
- for (const [problemId, { comments }] of Object.entries(data)) {
125
- const unreadMessages = comments.filter(comment => !comment.isRead)
126
- problemsMap[problemId] = {
127
- comments,
128
- unreadMessagesCount: unreadMessages.length,
129
- }
130
- }
131
-
132
- const updatedState = new Map(state)
133
- updatedState.set(assignmentId, problemsMap)
134
- return updatedState
135
- })
136
- .on(this.setCommentsSeen, (state, { ids, currentProblemId, assignmentId }) => {
137
- const assignmentComments = state.get(assignmentId)
138
- if (!assignmentComments) return state
139
-
140
- const feedback = assignmentComments[currentProblemId]
141
- if (!feedback) return state
142
-
143
- const updatedComments = feedback.comments.map(comment =>
144
- ids.includes(comment._id) ? { ...comment, isRead: true } : comment,
145
- )
146
-
147
- const updatedFeedback = {
148
- ...feedback,
149
- comments: updatedComments,
150
- unreadMessagesCount: 0,
151
- }
152
-
153
- const updatedAssignmentComments = {
154
- ...assignmentComments,
155
- [currentProblemId]: updatedFeedback,
156
- }
157
-
158
- const updatedState = new Map(state)
159
- updatedState.set(assignmentId, updatedAssignmentComments)
160
-
161
- return updatedState
162
- })
163
- .on(this.sockets.onCreate, (state, payload) => {
164
- const assignmentComments = state.get(payload.exerciseId) || {}
165
- const feedback = assignmentComments[payload.problemId] ?? {
166
- comments: [],
167
- unreadMessagesCount: 0,
168
- }
169
-
170
- const updatedFeedback = {
171
- ...feedback,
172
- comments: [...feedback.comments, payload],
173
- unreadMessagesCount: feedback.unreadMessagesCount + 1,
174
- }
175
-
176
- const updatedAssignmentComments = {
177
- ...assignmentComments,
178
- [payload.problemId]: updatedFeedback,
179
- }
180
-
181
- const updatedState = new Map(state)
182
- updatedState.set(payload.exerciseId, updatedAssignmentComments)
183
-
184
- return updatedState
185
- })
186
- .on(this.sockets.onDeleted, (state, payload) => {
187
- const assignmentId = this.$assignmentId.getState()
188
- const assignmentComments = state.get(assignmentId)
189
- if (!assignmentComments) return state
190
-
191
- const feedback = assignmentComments[payload.problemId]
192
- if (!feedback) return state
193
-
194
- const isDeleteMessageUnread = feedback.comments.some(
195
- comment => comment._id === payload._id && !comment.isRead,
196
- )
197
-
198
- const updatedFeedback = {
199
- comments: feedback.comments.filter(comment => comment._id !== payload._id),
200
- unreadMessagesCount: isDeleteMessageUnread
201
- ? feedback.unreadMessagesCount - 1
202
- : feedback.unreadMessagesCount,
203
- }
204
-
205
- const isOpen = this.$isOpened.getState()
206
-
207
- if (updatedFeedback.comments.length === 0) {
208
- const updatedAssignmentComments = { ...assignmentComments }
209
-
210
- if (!isOpen) {
211
- delete updatedAssignmentComments[payload.problemId]
212
-
213
- if (Object.keys(updatedAssignmentComments).length === 0) {
214
- const updatedState = new Map(state)
215
- updatedState.delete(assignmentId)
216
- return updatedState
217
- }
218
- } else {
219
- updatedAssignmentComments[payload.problemId] = {
220
- ...updatedFeedback,
221
- comments: [getEmptyComment(payload.problemId, this.$locale.getState())],
222
- }
223
- }
224
-
225
- const updatedState = new Map(state)
226
- updatedState.set(assignmentId, updatedAssignmentComments)
227
- return updatedState
228
- }
229
-
230
- const updatedAssignmentComments = {
231
- ...assignmentComments,
232
- [payload.problemId]: updatedFeedback,
233
- }
234
-
235
- const updatedState = new Map(state)
236
- updatedState.set(assignmentId, updatedAssignmentComments)
237
- return updatedState
238
- })
239
- .on(this.setIsOpened, (state, isOpen) => {
240
- if (isOpen) return state
241
-
242
- const assignmentId = this.$assignmentId.getState()
243
- const problemId = this.$currentProblemId.getState()
244
- const assignmentComments = state.get(assignmentId)
245
- if (!assignmentComments) return state
246
-
247
- const feedback = assignmentComments[problemId]
248
- if (!feedback) return state
249
-
250
- if (feedback.comments.length === 1 && feedback.comments[0]._id === EMPTY_COMMENT_ID) {
251
- const updatedAssignmentComments = { ...assignmentComments }
252
- delete updatedAssignmentComments[problemId]
253
-
254
- if (Object.keys(updatedAssignmentComments).length === 0) {
255
- const updatedState = new Map(state)
256
- updatedState.delete(assignmentId)
257
- return updatedState
258
- }
259
-
260
- const updatedState = new Map(state)
261
- updatedState.set(assignmentId, updatedAssignmentComments)
262
- return updatedState
263
- }
264
-
265
- return state
266
- })
267
- }
268
- }
@@ -1,32 +0,0 @@
1
- export type GetCommentsByIdProps = { id: string }
2
- export type UpdateCommentSeenStatusProps = { ids: string[] }
3
-
4
- export type TeacherComment = {
5
- _id: string
6
- teacherId: string
7
- teacherName: string
8
- studentId: string
9
- problemId: string
10
- exerciseId: string
11
- content: string
12
- isRead: boolean
13
- createdAt: Date
14
- updatedAt: Date
15
- __v: number
16
- }
17
-
18
- export type CommentsEntity = {
19
- comments: TeacherComment[]
20
- unreadMessagesCount: number
21
- }
22
-
23
- export enum Locale {
24
- US = 'en-US',
25
- SV = 'sv-SE',
26
- GB = 'en-GB',
27
- }
28
-
29
- export enum TeacherFeedbackSocketEvent {
30
- COMMENT_CREATED = 'exerciseCommentCreated',
31
- COMMENT_DELETED = 'exerciseCommentDeleted',
32
- }