@magmamath/students-features 0.2.3 → 0.2.5

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 +139 -0
  24. package/dist/commonjs/features/feedback/model/comments.js.map +1 -0
  25. package/dist/commonjs/features/feedback/model/model.js +134 -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 +134 -0
  60. package/dist/module/features/feedback/model/comments.js.map +1 -0
  61. package/dist/module/features/feedback/model/model.js +129 -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 +20 -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 +28 -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 +44 -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 +20 -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 +28 -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 +44 -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 +127 -0
  150. package/src/features/feedback/model/model.ts +125 -0
  151. package/src/features/feedback/model/sockets.ts +22 -0
  152. package/src/features/feedback/types.ts +48 -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
@@ -0,0 +1,48 @@
1
+ import { EMPTY_COMMENT_ID } from './constants'
2
+
3
+ export type GetCommentsPayload = {
4
+ id: string
5
+ }
6
+
7
+ export type GetCommentsResponse = {
8
+ [problemId: string]: { comments: TeacherComment[] }
9
+ }
10
+
11
+ export type UpdateCommentStatusSeenPayload = {
12
+ ids: string[]
13
+ }
14
+
15
+ export type TeacherComment = {
16
+ _id: string
17
+ teacherId: string
18
+ teacherName: string
19
+ studentId: string
20
+ problemId: string
21
+ exerciseId: string
22
+ content: string
23
+ isRead: boolean
24
+ createdAt: Date
25
+ updatedAt: Date
26
+ __v: number
27
+ }
28
+
29
+ export type NoCommentsMessage = Omit<TeacherComment, '_id' | 'problemId' | 'exerciseId'> & {
30
+ _id: typeof EMPTY_COMMENT_ID
31
+ }
32
+
33
+ export type FeedbackEntity = {
34
+ comments: TeacherComment[]
35
+ unreadMessagesCount: number
36
+ }
37
+
38
+ export type CommentsMap = Map<string, { [problemId: string]: FeedbackEntity }>
39
+
40
+ export type Credits = {
41
+ assignmentId: string
42
+ problemId: string
43
+ }
44
+
45
+ export enum FeedbackSocketEvents {
46
+ COMMENT_ADDED = 'exerciseCommentCreated',
47
+ COMMENT_DELETED = 'exerciseCommentDeleted',
48
+ }
@@ -1,2 +1,28 @@
1
+ import { RELATIVE_TIME_LABELS } from '../../shared/translation/constants'
2
+ import { Locale } from '@magmamath/students-features'
3
+
1
4
  export const generateRandomId = () =>
2
5
  Date.now().toString(36) + Math.random().toString(36).substring(2)
6
+
7
+ export const getRelativeTimeText = (date: Date, lang: Locale) => {
8
+ const t = RELATIVE_TIME_LABELS[lang] || RELATIVE_TIME_LABELS[Locale.EN]
9
+ const timeBufferMs = 2000 // adds 2 seconds time buffer because when used with sockets, it displayed -1 seconds ago, instead of 1 second ago.
10
+
11
+ const now = new Date().getTime()
12
+ const targetDate = new Date(date).getTime() - timeBufferMs
13
+ const diffTime = now - targetDate
14
+
15
+ const seconds = Math.floor(diffTime / 1000)
16
+ const minutes = Math.floor(seconds / 60)
17
+ const hours = Math.floor(minutes / 60)
18
+ const days = Math.floor(hours / 24)
19
+ const months = Math.floor(days / 30)
20
+ const years = Math.floor(days / 365)
21
+
22
+ if (seconds < 60) return t.justNow
23
+ if (minutes < 60) return `${minutes} ${minutes === 1 ? t.minuteAgo : t.minutesAgo}`
24
+ if (hours < 24) return `${hours} ${hours === 1 ? t.hourAgo : t.hoursAgo}`
25
+ if (days < 30) return `${days} ${days === 1 ? t.dayAgo : t.daysAgo}`
26
+ if (months < 12) return `${months} ${months === 1 ? t.monthAgo : t.monthsAgo}`
27
+ return `${years} ${years === 1 ? t.yearAgo : t.yearsAgo}`
28
+ }
@@ -4,7 +4,49 @@ import GB from '../../lib/localization/gb.json'
4
4
  import SW from '../../lib/localization/sw.json'
5
5
 
6
6
  export const LOCALIZATION_CONFIGS = {
7
- [Locale.EN]: EN,
8
- [Locale.GB]: GB,
9
- [Locale.SW]: SW,
7
+ [Locale.EN]: EN,
8
+ [Locale.GB]: GB,
9
+ [Locale.SW]: SW,
10
+ }
11
+
12
+ export const RELATIVE_TIME_LABELS = {
13
+ [Locale.EN]: {
14
+ justNow: 'just now',
15
+ minuteAgo: 'minute ago',
16
+ minutesAgo: 'minutes ago',
17
+ hourAgo: 'hour ago',
18
+ hoursAgo: 'hours ago',
19
+ dayAgo: 'day ago',
20
+ daysAgo: 'days ago',
21
+ monthAgo: 'month ago',
22
+ monthsAgo: 'months ago',
23
+ yearAgo: 'year ago',
24
+ yearsAgo: 'years ago',
25
+ },
26
+ [Locale.SW]: {
27
+ justNow: 'alldeles nyss',
28
+ minuteAgo: 'minut sedan',
29
+ minutesAgo: 'minuter sedan',
30
+ hourAgo: 'timme sedan',
31
+ hoursAgo: 'timmar sedan',
32
+ dayAgo: 'dag sedan',
33
+ daysAgo: 'dagar sedan',
34
+ monthAgo: 'månad sedan',
35
+ monthsAgo: 'månader sedan',
36
+ yearAgo: 'år sedan',
37
+ yearsAgo: 'år sedan',
38
+ },
39
+ [Locale.GB]: {
40
+ justNow: 'just now',
41
+ minuteAgo: 'minute ago',
42
+ minutesAgo: 'minutes ago',
43
+ hourAgo: 'hour ago',
44
+ hoursAgo: 'hours ago',
45
+ dayAgo: 'day ago',
46
+ daysAgo: 'days ago',
47
+ monthAgo: 'month ago',
48
+ monthsAgo: 'months ago',
49
+ yearAgo: 'year ago',
50
+ yearsAgo: 'years ago',
51
+ },
10
52
  }
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_constants","_teacherFeedbackTypes","_jsxRuntime","e","__esModule","default","EmptyComment","locale","jsx","View","style","styles","container","children","Text","text","Locale","SV","NO_COMMENTS_SWE","NO_COMMENTS_ENG","exports","StyleSheet","create","padding","gap","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","shadowColor","COLORS","NEUTRAL_10","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","backgroundColor","NEUTRAL_3","alignItems","justifyContent","fontSize","fontFamily","BUENOS_AIRES_FONT","fontWeight","color","NEUTRAL_7","lineHeight"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/EmptyComment/EmptyComment.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,qBAAA,GAAAJ,OAAA;AAA0D,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMnD,MAAMG,YAAY,GAAGA,CAAC;EAAEC;AAA0B,CAAC,KAAK;EAC7D,oBACE,IAAAL,WAAA,CAAAM,GAAA,EAACV,YAAA,CAAAW,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5B,IAAAX,WAAA,CAAAM,GAAA,EAACV,YAAA,CAAAgB,IAAI;MAACJ,KAAK,EAAEC,MAAM,CAACI,IAAK;MAAAF,QAAA,EAAEN,MAAM,KAAKS,4BAAM,CAACC,EAAE,GAAGC,0BAAe,GAAGC;IAAe,CAAO;EAAC,CACvF,CAAC;AAEX,CAAC;AAAAC,OAAA,CAAAd,YAAA,GAAAA,YAAA;AAED,MAAMK,MAAM,GAAGU,uBAAU,CAACC,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,OAAO,EAAE,CAAC;IACVC,GAAG,EAAE,EAAE;IACPC,mBAAmB,EAAE,CAAC;IACtBC,oBAAoB,EAAE,CAAC;IACvBC,uBAAuB,EAAE,CAAC;IAC1BC,WAAW,EAAEC,qBAAM,CAACC,UAAU;IAC9BC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACrCC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE,CAAC;IACZC,eAAe,EAAER,qBAAM,CAACS,SAAS;IACjCC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDzB,IAAI,EAAE;IACJ0B,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEC,4BAAiB;IAC7BC,UAAU,EAAE,KAAK;IACjBC,KAAK,EAAEhB,qBAAM,CAACiB,SAAS;IACvBvB,OAAO,EAAE,CAAC;IACVwB,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_MessageBubbleIcon","_reactNativeUi","_constants","_jsxRuntime","e","__esModule","default","ListCardCommentsCount","count","jsxs","View","style","styles","container","children","jsx","MessageBubbleIcon","size","color","COLORS","NEUTRAL_7","Text","text","exports","StyleSheet","create","width","flexDirection","alignItems","gap","fontSize","fontFamily","BUENOS_AIRES_FONT","fontWeight"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAAmD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAM5C,MAAMG,qBAAqB,GAAGA,CAAC;EAAEC;AAAkC,CAAC,KAAK;EAC9E,oBACE,IAAAL,WAAA,CAAAM,IAAA,EAACV,YAAA,CAAAW,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBAC5B,IAAAX,WAAA,CAAAY,GAAA,EAACf,kBAAA,CAAAgB,iBAAiB;MAACC,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEC,qBAAM,CAACC;IAAU,CAAE,CAAC,eACxD,IAAAjB,WAAA,CAAAY,GAAA,EAAChB,YAAA,CAAAsB,IAAI;MAACV,KAAK,EAAEC,MAAM,CAACU,IAAK;MAAAR,QAAA,EAAEN;IAAK,CAAO,CAAC;EAAA,CACpC,CAAC;AAEX,CAAC;AAAAe,OAAA,CAAAhB,qBAAA,GAAAA,qBAAA;AAED,MAAMK,MAAM,GAAGY,uBAAU,CAACC,MAAM,CAAC;EAC/BZ,SAAS,EAAE;IACTa,KAAK,EAAE,EAAE;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE;EACP,CAAC;EACDP,IAAI,EAAE;IACJQ,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEC,4BAAiB;IAC7Bd,KAAK,EAAEC,qBAAM,CAACC,SAAS;IACvBa,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSvg","_interopRequireWildcard","_reactNativeUi","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MessageBubbleIcon","size","color","COLORS","NEUTRAL_1","jsx","width","height","viewBox","fill","children","Path","d","stroke","strokeWidth","strokeLinejoin","exports"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/icons/MessageBubbleIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAf,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAEvD,MAAMmB,iBAAiB,GAAGA,CAAC;EAAEC,IAAI,GAAG,EAAE;EAAEC,KAAK,GAAGC,qBAAM,CAACC;AAAqB,CAAC,KAAK;EACvF,oBACE,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAU,OAAG;IAACoB,KAAK,EAAEL,IAAK;IAACM,MAAM,EAAEN,IAAK;IAACO,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,eAC7D,IAAA/B,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAmC,IAAI;MACHC,CAAC,EAAC,+SAA+S;MACjTC,MAAM,EAAEX,KAAM;MACdY,WAAW,EAAC,GAAG;MACfC,cAAc,EAAC;IAAO,CACvB;EAAC,CACC,CAAC;AAEV,CAAC;AAAAC,OAAA,CAAAhB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSvg","_interopRequireWildcard","_reactNativeUi","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","XCloseIcon","size","color","COLORS","NEUTRAL_9","jsx","width","height","viewBox","fill","children","Path","d","exports"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/icons/XCloseIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAf,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAEvD,MAAMmB,UAAU,GAAGA,CAAC;EAAEC,IAAI,GAAG,EAAE;EAAEC,KAAK,GAAGC,qBAAM,CAACC;AAAqB,CAAC,KAAK;EAChF,oBACE,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAU,OAAG;IAACoB,KAAK,EAAEL,IAAK;IAACM,MAAM,EAAEN,IAAK;IAACO,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,eAC7D,IAAA/B,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAmC,IAAI;MACHC,CAAC,EAAC,ufAAuf;MACzfH,IAAI,EAAEP;IAAM,CACb;EAAC,CACC,CAAC;AAEV,CAAC;AAAAW,OAAA,CAAAb,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,211 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TeacherFeedbackModel = void 0;
7
- var _effector = require("effector");
8
- var _constants = require("../constants.js");
9
- class TeacherFeedbackModel {
10
- setCommentsSeen = (0, _effector.createEvent)();
11
- $comments = (0, _effector.createStore)(new Map());
12
- setIsOpened = (0, _effector.createEvent)();
13
- $isOpened = (0, _effector.restore)(this.setIsOpened, false);
14
- setIsVisible = (0, _effector.createEvent)();
15
- $isVisible = (0, _effector.restore)(this.setIsVisible, false);
16
- sockets = {
17
- onCreate: (0, _effector.createEvent)(),
18
- onDeleted: (0, _effector.createEvent)()
19
- };
20
- constructor({
21
- api,
22
- credits
23
- }) {
24
- this.getCommentsByAssignmentIdFx = (0, _effector.createEffect)(async ({
25
- id
26
- }) => {
27
- const response = await api.getCommentsByAssignmentId({
28
- id
29
- });
30
- return {
31
- data: response,
32
- assignmentId: id
33
- };
34
- });
35
- this.updateCommentSeenFx = (0, _effector.createEffect)(api.updateCommentSeenStatus);
36
- this.$assignmentId = credits.assignmentId;
37
- this.$currentProblemId = credits.problemId;
38
- this.$locale = credits.locale;
39
- (0, _effector.sample)({
40
- clock: this.$currentProblemId,
41
- fn: () => false,
42
- target: this.setIsOpened
43
- });
44
- (0, _effector.sample)({
45
- clock: this.sockets.onCreate,
46
- source: [this.$isOpened, this.$currentProblemId, this.$assignmentId],
47
- filter: ([isOpen, currentProblemId], payload) => {
48
- return isOpen && currentProblemId === payload.problemId;
49
- },
50
- fn: ([_, currentProblemId, assignmentId], {
51
- _id
52
- }) => ({
53
- currentProblemId,
54
- assignmentId,
55
- ids: [_id]
56
- }),
57
- target: [this.setCommentsSeen, this.updateCommentSeenFx]
58
- });
59
- (0, _effector.sample)({
60
- clock: this.$isOpened,
61
- source: [this.$comments, this.$currentProblemId, this.$assignmentId],
62
- filter: ([feedback, currentProblemId, assignmentId], isOpen) => {
63
- const assignmentComments = feedback.get(assignmentId) || {};
64
- const comments = assignmentComments[currentProblemId]?.comments ?? [];
65
- const hasUnreadComments = comments.some(comment => !comment.isRead);
66
- return isOpen && hasUnreadComments;
67
- },
68
- fn: ([feedback, currentProblemId, assignmentId]) => {
69
- const assignmentComments = feedback.get(assignmentId) || {};
70
- const comments = assignmentComments[currentProblemId]?.comments ?? [];
71
- return {
72
- currentProblemId,
73
- assignmentId,
74
- ids: comments.filter(comment => !comment.isRead).map(comment => comment._id)
75
- };
76
- },
77
- target: [this.setCommentsSeen, this.updateCommentSeenFx]
78
- });
79
- this.$isVisible.on(this.getCommentsByAssignmentIdFx.doneData, (_, {
80
- data
81
- }) => {
82
- return Object.values(data).some(problemFeedback => problemFeedback.comments?.length > 0);
83
- });
84
- this.$comments.on(this.getCommentsByAssignmentIdFx.doneData, (state, {
85
- assignmentId,
86
- data
87
- }) => {
88
- const problemsMap = {};
89
- for (const [problemId, {
90
- comments
91
- }] of Object.entries(data)) {
92
- const unreadMessages = comments.filter(comment => !comment.isRead);
93
- problemsMap[problemId] = {
94
- comments,
95
- unreadMessagesCount: unreadMessages.length
96
- };
97
- }
98
- const updatedState = new Map(state);
99
- updatedState.set(assignmentId, problemsMap);
100
- return updatedState;
101
- }).on(this.setCommentsSeen, (state, {
102
- ids,
103
- currentProblemId,
104
- assignmentId
105
- }) => {
106
- const assignmentComments = state.get(assignmentId);
107
- if (!assignmentComments) return state;
108
- const feedback = assignmentComments[currentProblemId];
109
- if (!feedback) return state;
110
- const updatedComments = feedback.comments.map(comment => ids.includes(comment._id) ? {
111
- ...comment,
112
- isRead: true
113
- } : comment);
114
- const updatedFeedback = {
115
- ...feedback,
116
- comments: updatedComments,
117
- unreadMessagesCount: 0
118
- };
119
- const updatedAssignmentComments = {
120
- ...assignmentComments,
121
- [currentProblemId]: updatedFeedback
122
- };
123
- const updatedState = new Map(state);
124
- updatedState.set(assignmentId, updatedAssignmentComments);
125
- return updatedState;
126
- }).on(this.sockets.onCreate, (state, payload) => {
127
- const assignmentComments = state.get(payload.exerciseId) || {};
128
- const feedback = assignmentComments[payload.problemId] ?? {
129
- comments: [],
130
- unreadMessagesCount: 0
131
- };
132
- const updatedFeedback = {
133
- ...feedback,
134
- comments: [...feedback.comments, payload],
135
- unreadMessagesCount: feedback.unreadMessagesCount + 1
136
- };
137
- const updatedAssignmentComments = {
138
- ...assignmentComments,
139
- [payload.problemId]: updatedFeedback
140
- };
141
- const updatedState = new Map(state);
142
- updatedState.set(payload.exerciseId, updatedAssignmentComments);
143
- return updatedState;
144
- }).on(this.sockets.onDeleted, (state, payload) => {
145
- const assignmentId = this.$assignmentId.getState();
146
- const assignmentComments = state.get(assignmentId);
147
- if (!assignmentComments) return state;
148
- const feedback = assignmentComments[payload.problemId];
149
- if (!feedback) return state;
150
- const isDeleteMessageUnread = feedback.comments.some(comment => comment._id === payload._id && !comment.isRead);
151
- const updatedFeedback = {
152
- comments: feedback.comments.filter(comment => comment._id !== payload._id),
153
- unreadMessagesCount: isDeleteMessageUnread ? feedback.unreadMessagesCount - 1 : feedback.unreadMessagesCount
154
- };
155
- const isOpen = this.$isOpened.getState();
156
- if (updatedFeedback.comments.length === 0) {
157
- const updatedAssignmentComments = {
158
- ...assignmentComments
159
- };
160
- if (!isOpen) {
161
- delete updatedAssignmentComments[payload.problemId];
162
- if (Object.keys(updatedAssignmentComments).length === 0) {
163
- const updatedState = new Map(state);
164
- updatedState.delete(assignmentId);
165
- return updatedState;
166
- }
167
- } else {
168
- updatedAssignmentComments[payload.problemId] = {
169
- ...updatedFeedback,
170
- comments: [(0, _constants.getEmptyComment)(payload.problemId, this.$locale.getState())]
171
- };
172
- }
173
- const updatedState = new Map(state);
174
- updatedState.set(assignmentId, updatedAssignmentComments);
175
- return updatedState;
176
- }
177
- const updatedAssignmentComments = {
178
- ...assignmentComments,
179
- [payload.problemId]: updatedFeedback
180
- };
181
- const updatedState = new Map(state);
182
- updatedState.set(assignmentId, updatedAssignmentComments);
183
- return updatedState;
184
- }).on(this.setIsOpened, (state, isOpen) => {
185
- if (isOpen) return state;
186
- const assignmentId = this.$assignmentId.getState();
187
- const problemId = this.$currentProblemId.getState();
188
- const assignmentComments = state.get(assignmentId);
189
- if (!assignmentComments) return state;
190
- const feedback = assignmentComments[problemId];
191
- if (!feedback) return state;
192
- if (feedback.comments.length === 1 && feedback.comments[0]._id === _constants.EMPTY_COMMENT_ID) {
193
- const updatedAssignmentComments = {
194
- ...assignmentComments
195
- };
196
- delete updatedAssignmentComments[problemId];
197
- if (Object.keys(updatedAssignmentComments).length === 0) {
198
- const updatedState = new Map(state);
199
- updatedState.delete(assignmentId);
200
- return updatedState;
201
- }
202
- const updatedState = new Map(state);
203
- updatedState.set(assignmentId, updatedAssignmentComments);
204
- return updatedState;
205
- }
206
- return state;
207
- });
208
- }
209
- }
210
- exports.TeacherFeedbackModel = TeacherFeedbackModel;
211
- //# sourceMappingURL=teacherFeedback.model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_effector","require","_constants","TeacherFeedbackModel","setCommentsSeen","createEvent","$comments","createStore","Map","setIsOpened","$isOpened","restore","setIsVisible","$isVisible","sockets","onCreate","onDeleted","constructor","api","credits","getCommentsByAssignmentIdFx","createEffect","id","response","getCommentsByAssignmentId","data","assignmentId","updateCommentSeenFx","updateCommentSeenStatus","$assignmentId","$currentProblemId","problemId","$locale","locale","sample","clock","fn","target","source","filter","isOpen","currentProblemId","payload","_","_id","ids","feedback","assignmentComments","get","comments","hasUnreadComments","some","comment","isRead","map","on","doneData","Object","values","problemFeedback","length","state","problemsMap","entries","unreadMessages","unreadMessagesCount","updatedState","set","updatedComments","includes","updatedFeedback","updatedAssignmentComments","exerciseId","getState","isDeleteMessageUnread","keys","delete","getEmptyComment","EMPTY_COMMENT_ID","exports"],"sourceRoot":"../../../../../src","sources":["features/feedback/model/teacherFeedback.model.ts"],"mappings":"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","ignoreList":[]}
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TeacherFeedbackSocketEvent = exports.Locale = void 0;
7
- let Locale = exports.Locale = /*#__PURE__*/function (Locale) {
8
- Locale["US"] = "en-US";
9
- Locale["SV"] = "sv-SE";
10
- Locale["GB"] = "en-GB";
11
- return Locale;
12
- }({});
13
- let TeacherFeedbackSocketEvent = exports.TeacherFeedbackSocketEvent = /*#__PURE__*/function (TeacherFeedbackSocketEvent) {
14
- TeacherFeedbackSocketEvent["COMMENT_CREATED"] = "exerciseCommentCreated";
15
- TeacherFeedbackSocketEvent["COMMENT_DELETED"] = "exerciseCommentDeleted";
16
- return TeacherFeedbackSocketEvent;
17
- }({});
18
- //# sourceMappingURL=teacherFeedback.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Locale","exports","TeacherFeedbackSocketEvent"],"sourceRoot":"../../../../../src","sources":["features/feedback/types/teacherFeedback.types.ts"],"mappings":";;;;;;IAsBYA,MAAM,GAAAC,OAAA,CAAAD,MAAA,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAAA,IAMNE,0BAA0B,GAAAD,OAAA,CAAAC,0BAAA,0BAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","StyleSheet","Text","View","COLORS","BUENOS_AIRES_FONT","NO_COMMENTS_SWE","NO_COMMENTS_ENG","Locale","jsx","_jsx","EmptyComment","locale","style","styles","container","children","text","SV","create","padding","gap","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","shadowColor","NEUTRAL_10","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","backgroundColor","NEUTRAL_3","alignItems","justifyContent","fontSize","fontFamily","fontWeight","color","NEUTRAL_7","lineHeight"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/EmptyComment/EmptyComment.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,QAAQ,oBAAiB;AACrF,SAASC,MAAM,QAAQ,sCAAmC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAM1D,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC;AAA0B,CAAC,KAAK;EAC7D,oBACEF,IAAA,CAACP,IAAI;IAACU,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BN,IAAA,CAACR,IAAI;MAACW,KAAK,EAAEC,MAAM,CAACG,IAAK;MAAAD,QAAA,EAAEJ,MAAM,KAAKJ,MAAM,CAACU,EAAE,GAAGZ,eAAe,GAAGC;IAAe,CAAO;EAAC,CACvF,CAAC;AAEX,CAAC;AAED,MAAMO,MAAM,GAAGb,UAAU,CAACkB,MAAM,CAAC;EAC/BJ,SAAS,EAAE;IACTK,OAAO,EAAE,CAAC;IACVC,GAAG,EAAE,EAAE;IACPC,mBAAmB,EAAE,CAAC;IACtBC,oBAAoB,EAAE,CAAC;IACvBC,uBAAuB,EAAE,CAAC;IAC1BC,WAAW,EAAErB,MAAM,CAACsB,UAAU;IAC9BC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACrCC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE,CAAC;IACZC,eAAe,EAAE7B,MAAM,CAAC8B,SAAS;IACjCC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDnB,IAAI,EAAE;IACJoB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEjC,iBAAiB;IAC7BkC,UAAU,EAAE,KAAK;IACjBC,KAAK,EAAEpC,MAAM,CAACqC,SAAS;IACvBrB,OAAO,EAAE,CAAC;IACVsB,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Text","View","StyleSheet","MessageBubbleIcon","COLORS","BUENOS_AIRES_FONT","jsx","_jsx","jsxs","_jsxs","ListCardCommentsCount","count","style","styles","container","children","size","color","NEUTRAL_7","text","create","width","flexDirection","alignItems","gap","fontSize","fontFamily","fontWeight"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/ListCardCommentsCount/ListCardCommentsCount.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AACrD,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,iBAAiB,QAAQ,oBAAiB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMnD,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC;AAAkC,CAAC,KAAK;EAC9E,oBACEF,KAAA,CAACR,IAAI;IAACW,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBAC5BR,IAAA,CAACJ,iBAAiB;MAACa,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEb,MAAM,CAACc;IAAU,CAAE,CAAC,eACxDX,IAAA,CAACP,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACM,IAAK;MAAAJ,QAAA,EAAEJ;IAAK,CAAO,CAAC;EAAA,CACpC,CAAC;AAEX,CAAC;AAED,MAAME,MAAM,GAAGX,UAAU,CAACkB,MAAM,CAAC;EAC/BN,SAAS,EAAE;IACTO,KAAK,EAAE,EAAE;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE;EACP,CAAC;EACDL,IAAI,EAAE;IACJM,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAErB,iBAAiB;IAC7BY,KAAK,EAAEb,MAAM,CAACc,SAAS;IACvBS,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Svg","Path","COLORS","jsx","_jsx","MessageBubbleIcon","size","color","NEUTRAL_1","width","height","viewBox","fill","children","d","stroke","strokeWidth","strokeLinejoin"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/icons/MessageBubbleIcon.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAC5C,SAAoBC,MAAM,QAAQ,4BAA4B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE9D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC,IAAI,GAAG,EAAE;EAAEC,KAAK,GAAGL,MAAM,CAACM;AAAqB,CAAC,KAAK;EACvF,oBACEJ,IAAA,CAACJ,GAAG;IAACS,KAAK,EAAEH,IAAK;IAACI,MAAM,EAAEJ,IAAK;IAACK,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,eAC7DT,IAAA,CAACH,IAAI;MACHa,CAAC,EAAC,+SAA+S;MACjTC,MAAM,EAAER,KAAM;MACdS,WAAW,EAAC,GAAG;MACfC,cAAc,EAAC;IAAO,CACvB;EAAC,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Svg","Path","COLORS","jsx","_jsx","XCloseIcon","size","color","NEUTRAL_9","width","height","viewBox","fill","children","d"],"sourceRoot":"../../../../../../src","sources":["features/feedback/components/icons/XCloseIcon.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAC5C,SAAoBC,MAAM,QAAQ,4BAA4B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE9D,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC,IAAI,GAAG,EAAE;EAAEC,KAAK,GAAGL,MAAM,CAACM;AAAqB,CAAC,KAAK;EAChF,oBACEJ,IAAA,CAACJ,GAAG;IAACS,KAAK,EAAEH,IAAK;IAACI,MAAM,EAAEJ,IAAK;IAACK,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,eAC7DT,IAAA,CAACH,IAAI;MACHa,CAAC,EAAC,ufAAuf;MACzfF,IAAI,EAAEL;IAAM,CACb;EAAC,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -1,206 +0,0 @@
1
- "use strict";
2
-
3
- import { createEffect, createEvent, createStore, restore, sample } from 'effector';
4
- import { EMPTY_COMMENT_ID, getEmptyComment } from "../constants.js";
5
- export class TeacherFeedbackModel {
6
- setCommentsSeen = createEvent();
7
- $comments = createStore(new Map());
8
- setIsOpened = createEvent();
9
- $isOpened = restore(this.setIsOpened, false);
10
- setIsVisible = createEvent();
11
- $isVisible = restore(this.setIsVisible, false);
12
- sockets = {
13
- onCreate: createEvent(),
14
- onDeleted: createEvent()
15
- };
16
- constructor({
17
- api,
18
- credits
19
- }) {
20
- this.getCommentsByAssignmentIdFx = createEffect(async ({
21
- id
22
- }) => {
23
- const response = await api.getCommentsByAssignmentId({
24
- id
25
- });
26
- return {
27
- data: response,
28
- assignmentId: id
29
- };
30
- });
31
- this.updateCommentSeenFx = createEffect(api.updateCommentSeenStatus);
32
- this.$assignmentId = credits.assignmentId;
33
- this.$currentProblemId = credits.problemId;
34
- this.$locale = credits.locale;
35
- sample({
36
- clock: this.$currentProblemId,
37
- fn: () => false,
38
- target: this.setIsOpened
39
- });
40
- sample({
41
- clock: this.sockets.onCreate,
42
- source: [this.$isOpened, this.$currentProblemId, this.$assignmentId],
43
- filter: ([isOpen, currentProblemId], payload) => {
44
- return isOpen && currentProblemId === payload.problemId;
45
- },
46
- fn: ([_, currentProblemId, assignmentId], {
47
- _id
48
- }) => ({
49
- currentProblemId,
50
- assignmentId,
51
- ids: [_id]
52
- }),
53
- target: [this.setCommentsSeen, this.updateCommentSeenFx]
54
- });
55
- sample({
56
- clock: this.$isOpened,
57
- source: [this.$comments, this.$currentProblemId, this.$assignmentId],
58
- filter: ([feedback, currentProblemId, assignmentId], isOpen) => {
59
- const assignmentComments = feedback.get(assignmentId) || {};
60
- const comments = assignmentComments[currentProblemId]?.comments ?? [];
61
- const hasUnreadComments = comments.some(comment => !comment.isRead);
62
- return isOpen && hasUnreadComments;
63
- },
64
- fn: ([feedback, currentProblemId, assignmentId]) => {
65
- const assignmentComments = feedback.get(assignmentId) || {};
66
- const comments = assignmentComments[currentProblemId]?.comments ?? [];
67
- return {
68
- currentProblemId,
69
- assignmentId,
70
- ids: comments.filter(comment => !comment.isRead).map(comment => comment._id)
71
- };
72
- },
73
- target: [this.setCommentsSeen, this.updateCommentSeenFx]
74
- });
75
- this.$isVisible.on(this.getCommentsByAssignmentIdFx.doneData, (_, {
76
- data
77
- }) => {
78
- return Object.values(data).some(problemFeedback => problemFeedback.comments?.length > 0);
79
- });
80
- this.$comments.on(this.getCommentsByAssignmentIdFx.doneData, (state, {
81
- assignmentId,
82
- data
83
- }) => {
84
- const problemsMap = {};
85
- for (const [problemId, {
86
- comments
87
- }] of Object.entries(data)) {
88
- const unreadMessages = comments.filter(comment => !comment.isRead);
89
- problemsMap[problemId] = {
90
- comments,
91
- unreadMessagesCount: unreadMessages.length
92
- };
93
- }
94
- const updatedState = new Map(state);
95
- updatedState.set(assignmentId, problemsMap);
96
- return updatedState;
97
- }).on(this.setCommentsSeen, (state, {
98
- ids,
99
- currentProblemId,
100
- assignmentId
101
- }) => {
102
- const assignmentComments = state.get(assignmentId);
103
- if (!assignmentComments) return state;
104
- const feedback = assignmentComments[currentProblemId];
105
- if (!feedback) return state;
106
- const updatedComments = feedback.comments.map(comment => ids.includes(comment._id) ? {
107
- ...comment,
108
- isRead: true
109
- } : comment);
110
- const updatedFeedback = {
111
- ...feedback,
112
- comments: updatedComments,
113
- unreadMessagesCount: 0
114
- };
115
- const updatedAssignmentComments = {
116
- ...assignmentComments,
117
- [currentProblemId]: updatedFeedback
118
- };
119
- const updatedState = new Map(state);
120
- updatedState.set(assignmentId, updatedAssignmentComments);
121
- return updatedState;
122
- }).on(this.sockets.onCreate, (state, payload) => {
123
- const assignmentComments = state.get(payload.exerciseId) || {};
124
- const feedback = assignmentComments[payload.problemId] ?? {
125
- comments: [],
126
- unreadMessagesCount: 0
127
- };
128
- const updatedFeedback = {
129
- ...feedback,
130
- comments: [...feedback.comments, payload],
131
- unreadMessagesCount: feedback.unreadMessagesCount + 1
132
- };
133
- const updatedAssignmentComments = {
134
- ...assignmentComments,
135
- [payload.problemId]: updatedFeedback
136
- };
137
- const updatedState = new Map(state);
138
- updatedState.set(payload.exerciseId, updatedAssignmentComments);
139
- return updatedState;
140
- }).on(this.sockets.onDeleted, (state, payload) => {
141
- const assignmentId = this.$assignmentId.getState();
142
- const assignmentComments = state.get(assignmentId);
143
- if (!assignmentComments) return state;
144
- const feedback = assignmentComments[payload.problemId];
145
- if (!feedback) return state;
146
- const isDeleteMessageUnread = feedback.comments.some(comment => comment._id === payload._id && !comment.isRead);
147
- const updatedFeedback = {
148
- comments: feedback.comments.filter(comment => comment._id !== payload._id),
149
- unreadMessagesCount: isDeleteMessageUnread ? feedback.unreadMessagesCount - 1 : feedback.unreadMessagesCount
150
- };
151
- const isOpen = this.$isOpened.getState();
152
- if (updatedFeedback.comments.length === 0) {
153
- const updatedAssignmentComments = {
154
- ...assignmentComments
155
- };
156
- if (!isOpen) {
157
- delete updatedAssignmentComments[payload.problemId];
158
- if (Object.keys(updatedAssignmentComments).length === 0) {
159
- const updatedState = new Map(state);
160
- updatedState.delete(assignmentId);
161
- return updatedState;
162
- }
163
- } else {
164
- updatedAssignmentComments[payload.problemId] = {
165
- ...updatedFeedback,
166
- comments: [getEmptyComment(payload.problemId, this.$locale.getState())]
167
- };
168
- }
169
- const updatedState = new Map(state);
170
- updatedState.set(assignmentId, updatedAssignmentComments);
171
- return updatedState;
172
- }
173
- const updatedAssignmentComments = {
174
- ...assignmentComments,
175
- [payload.problemId]: updatedFeedback
176
- };
177
- const updatedState = new Map(state);
178
- updatedState.set(assignmentId, updatedAssignmentComments);
179
- return updatedState;
180
- }).on(this.setIsOpened, (state, isOpen) => {
181
- if (isOpen) return state;
182
- const assignmentId = this.$assignmentId.getState();
183
- const problemId = this.$currentProblemId.getState();
184
- const assignmentComments = state.get(assignmentId);
185
- if (!assignmentComments) return state;
186
- const feedback = assignmentComments[problemId];
187
- if (!feedback) return state;
188
- if (feedback.comments.length === 1 && feedback.comments[0]._id === EMPTY_COMMENT_ID) {
189
- const updatedAssignmentComments = {
190
- ...assignmentComments
191
- };
192
- delete updatedAssignmentComments[problemId];
193
- if (Object.keys(updatedAssignmentComments).length === 0) {
194
- const updatedState = new Map(state);
195
- updatedState.delete(assignmentId);
196
- return updatedState;
197
- }
198
- const updatedState = new Map(state);
199
- updatedState.set(assignmentId, updatedAssignmentComments);
200
- return updatedState;
201
- }
202
- return state;
203
- });
204
- }
205
- }
206
- //# sourceMappingURL=teacherFeedback.model.js.map