@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
@@ -3,24 +3,32 @@ import { useStoreMap, useUnit } from 'effector-react'
3
3
  import { View, StyleSheet } from 'react-native'
4
4
  import { TeacherFeedbackButton } from './TeacherFeedbackButton/TeacherFeedbackButton'
5
5
  import { TeacherFeedbackComments } from './TeacherFeedbackComments/TeacherFeedbackComments'
6
- import { TeacherFeedbackModel } from '../model/teacherFeedback.model'
7
6
  import { FeedbackButtonColors, FeedbackButtonSize, FeedbackMode } from '../constants'
7
+ import { TeacherFeedbackModel } from '../model/model'
8
+ import { Locale } from '../../../shared/translation'
8
9
 
9
10
  type TeacherFeedbackProps = {
10
11
  model: TeacherFeedbackModel
11
12
  mode: FeedbackMode
13
+ locale: Locale
14
+ assignmentId: string
15
+ problemId: string
12
16
  isExam: boolean
13
17
  }
14
18
 
15
- export const TeacherFeedback = ({ model, mode, isExam = false }: TeacherFeedbackProps) => {
16
- const isOpen = useUnit(model.$isOpened)
17
- const assignmentId = useUnit(model.$assignmentId)
18
- const problemId = useUnit(model.$currentProblemId)
19
- const locale = useUnit(model.$locale)
20
- const isLoading = useUnit(model.getCommentsByAssignmentIdFx.pending)
19
+ export const TeacherFeedback = ({
20
+ model,
21
+ mode,
22
+ assignmentId,
23
+ problemId,
24
+ locale,
25
+ isExam = false,
26
+ }: TeacherFeedbackProps) => {
27
+ const isOpen = useUnit(model.$isOpen)
28
+ const isLoading = useUnit(model.api.getCommentsFx.pending)
21
29
  const teacherFeedback = useStoreMap({
22
- store: model.$comments,
23
- fn: (feedback, [assignmentId, problemId]) => feedback.get(assignmentId)?.[problemId] ?? null,
30
+ store: model.comments.$data,
31
+ fn: (feedback, [assignmentId, problemId]) => feedback?.get(assignmentId)?.[problemId] ?? null,
24
32
  keys: [assignmentId, problemId],
25
33
  })
26
34
 
@@ -28,9 +36,11 @@ export const TeacherFeedback = ({ model, mode, isExam = false }: TeacherFeedback
28
36
 
29
37
  return (
30
38
  <View style={styles.container}>
31
- {isOpen && <TeacherFeedbackComments comments={teacherFeedback.comments} locale={locale} mode={mode} />}
39
+ {isOpen && (
40
+ <TeacherFeedbackComments comments={teacherFeedback.comments} locale={locale} mode={mode} />
41
+ )}
32
42
  <TeacherFeedbackButton
33
- onPress={() => model.setIsOpened(!isOpen)}
43
+ onPress={() => model.setIsOpen(!isOpen)}
34
44
  unreadCommentsCount={teacherFeedback.unreadMessagesCount}
35
45
  isOpen={isOpen}
36
46
  isLoading={isLoading}
@@ -2,8 +2,8 @@ import React from 'react'
2
2
  import { StyleSheet, View } from 'react-native'
3
3
  import { Button, COLORS } from '@magmamath/react-native-ui'
4
4
  import { UnreadMessagesBadge } from '../UnreadMessagesBadge'
5
- import { MessageBubbleIcon } from '../icons/MessageBubbleIcon'
6
- import { XCloseIcon } from '../icons/XCloseIcon'
5
+ import { MessageBubbleIcon } from '../../assets/icons/MessageBubbleIcon'
6
+ import { XCloseIcon } from '../../assets/icons/XCloseIcon'
7
7
  import { COLOR_SCHEMES } from './colorSchemes'
8
8
  import {
9
9
  FeedbackButtonColors,
@@ -1,9 +1,9 @@
1
1
  import React from 'react'
2
2
  import { View, Text, StyleSheet } from 'react-native'
3
3
  import { COLORS } from '@magmamath/react-native-ui'
4
- import { getRelativeTime } from '../../helpers'
5
4
  import { BUENOS_AIRES_FONT } from '../../constants'
6
- import { Locale } from '../../types/teacherFeedback.types'
5
+ import { getRelativeTimeText } from '../../../../lib/helpers/helpers'
6
+ import { Locale } from '@magmamath/students-features'
7
7
 
8
8
  type TeacherCommentProps = {
9
9
  content: string
@@ -13,7 +13,13 @@ type TeacherCommentProps = {
13
13
  isLastComment: boolean
14
14
  }
15
15
 
16
- export const TeacherComment = ({ content, teacherName, createdAt, locale, isLastComment }: TeacherCommentProps) => {
16
+ export const TeacherComment = ({
17
+ content,
18
+ teacherName,
19
+ createdAt,
20
+ locale,
21
+ isLastComment,
22
+ }: TeacherCommentProps) => {
17
23
  return (
18
24
  <View style={{ marginBottom: isLastComment ? 8 : 0 }}>
19
25
  <View style={styles.authorInfo}>
@@ -22,7 +28,7 @@ export const TeacherComment = ({ content, teacherName, createdAt, locale, isLast
22
28
  </Text>
23
29
  <View style={styles.spacer} />
24
30
  <Text style={styles.dateAdded} numberOfLines={1}>
25
- {getRelativeTime(createdAt, locale ?? Locale.US)}
31
+ {getRelativeTimeText(createdAt, locale ?? Locale.EN)}
26
32
  </Text>
27
33
  </View>
28
34
 
@@ -1,17 +1,18 @@
1
1
  import React, { useEffect, useRef } from 'react'
2
2
  import { Platform, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native'
3
- import { Locale, TeacherComment as FeedbackComment } from '../../types/teacherFeedback.types'
4
3
  import { TeacherComment } from './TeacherComment'
5
- import { EmptyComment } from '../EmptyComment/EmptyComment'
4
+ import { EmptyComment } from '../EmptyComment'
6
5
  import { EMPTY_COMMENT_ID, FeedbackMode } from '../../constants'
7
6
  import { COLORS } from '@magmamath/react-native-ui'
7
+ import { Locale } from '../../../../shared/translation'
8
+ import { TeacherComment as TeacherCommentEntity } from '../../types'
8
9
 
9
10
  const TOOLBAR_HEIGHT = 140
10
11
  const BOTTOM_OFFSET = Platform.OS === 'web' ? 270 : 304
11
12
  const SIMPLE_MODE_OFFSET = 70
12
13
 
13
14
  type TeacherFeedbackCommentsProps = {
14
- comments: FeedbackComment[] | null
15
+ comments: TeacherCommentEntity[] | null
15
16
  locale: Locale | null
16
17
  mode: FeedbackMode
17
18
  }
@@ -2,4 +2,4 @@ export { TeacherFeedbackComments } from './TeacherFeedbackComments/TeacherFeedba
2
2
  export { TeacherFeedbackButton } from './TeacherFeedbackButton/TeacherFeedbackButton'
3
3
  export { TeacherFeedback } from './TeacherFeedback'
4
4
  export { UnreadMessagesBadge } from './UnreadMessagesBadge'
5
- export { ListCardCommentsCount } from './ListCardCommentsCount/ListCardCommentsCount'
5
+ export { ListCardCommentsCount } from './ListCardCommentsCount'
@@ -1,28 +1,12 @@
1
1
  import { Platform } from 'react-native'
2
- import { Locale } from './types/teacherFeedback.types'
3
2
 
4
- export const BUENOS_AIRES_FONT = Platform.OS === 'web' ? 'Buenos Aires, sans-serif' : 'BuenosAires-Regular'
3
+ export const BUENOS_AIRES_FONT =
4
+ Platform.OS === 'web' ? 'Buenos Aires, sans-serif' : 'BuenosAires-Regular'
5
5
 
6
6
  export const NO_COMMENTS_ENG = 'No comments yet'
7
7
  export const NO_COMMENTS_SWE = 'Inga kommentarer än'
8
8
  export const EMPTY_COMMENT_ID = 'empty-comment'
9
9
 
10
- export const getEmptyComment = (problemId: string, locale: Locale | null) => {
11
- return {
12
- __v: 0,
13
- _id: EMPTY_COMMENT_ID,
14
- content: locale === Locale.SV ? NO_COMMENTS_SWE : NO_COMMENTS_ENG,
15
- createdAt: new Date(),
16
- exerciseId: '',
17
- isRead: true,
18
- problemId,
19
- studentId: '',
20
- teacherId: '',
21
- teacherName: '',
22
- updatedAt: new Date(),
23
- }
24
- }
25
-
26
10
  export const TEACHER_FEEDBACK_BUTTON_ID = 'teacherFeedbackButton'
27
11
 
28
12
  export enum FeedbackButtonColors {
@@ -1,66 +1,33 @@
1
- import { Locale } from './types/teacherFeedback.types'
1
+ import { CommentsMap, FeedbackEntity, GetCommentsResponse } from './types'
2
2
 
3
- const RELATIVE_TIME_LABELS = {
4
- [Locale.US]: {
5
- justNow: 'just now',
6
- minuteAgo: 'minute ago',
7
- minutesAgo: 'minutes ago',
8
- hourAgo: 'hour ago',
9
- hoursAgo: 'hours ago',
10
- dayAgo: 'day ago',
11
- daysAgo: 'days ago',
12
- monthAgo: 'month ago',
13
- monthsAgo: 'months ago',
14
- yearAgo: 'year ago',
15
- yearsAgo: 'years ago',
16
- },
17
- [Locale.SV]: {
18
- justNow: 'alldeles nyss',
19
- minuteAgo: 'minut sedan',
20
- minutesAgo: 'minuter sedan',
21
- hourAgo: 'timme sedan',
22
- hoursAgo: 'timmar sedan',
23
- dayAgo: 'dag sedan',
24
- daysAgo: 'dagar sedan',
25
- monthAgo: 'månad sedan',
26
- monthsAgo: 'månader sedan',
27
- yearAgo: 'år sedan',
28
- yearsAgo: 'år sedan',
29
- },
30
- [Locale.GB]: {
31
- justNow: 'just now',
32
- minuteAgo: 'minute ago',
33
- minutesAgo: 'minutes ago',
34
- hourAgo: 'hour ago',
35
- hoursAgo: 'hours ago',
36
- dayAgo: 'day ago',
37
- daysAgo: 'days ago',
38
- monthAgo: 'month ago',
39
- monthsAgo: 'months ago',
40
- yearAgo: 'year ago',
41
- yearsAgo: 'years ago',
42
- },
43
- }
3
+ export function generateCommentsMap(assignmentId: string, data: GetCommentsResponse): CommentsMap {
4
+ const problemsMap = Object.entries(data).reduce<Record<string, FeedbackEntity>>(
5
+ (acc, [problemId, feedback]) => {
6
+ const unreadMessages = feedback.comments.filter(({ isRead }) => !isRead)
7
+
8
+ acc[problemId] = {
9
+ comments: feedback.comments,
10
+ unreadMessagesCount: unreadMessages.length,
11
+ }
44
12
 
45
- export const getRelativeTime = (date: Date, lang: Locale) => {
46
- const t = RELATIVE_TIME_LABELS[lang] || RELATIVE_TIME_LABELS[Locale.US]
47
- const timeBufferMs = 2000 // adds 2 seconds time buffer because when used with sockets, it displayed -1 seconds ago, instead of 1 second ago.
13
+ return acc
14
+ },
15
+ {},
16
+ )
48
17
 
49
- const now = new Date().getTime()
50
- const targetDate = new Date(date).getTime() - timeBufferMs
51
- const diffTime = now - targetDate
18
+ return new Map().set(assignmentId, problemsMap)
19
+ }
52
20
 
53
- const seconds = Math.floor(diffTime / 1000)
54
- const minutes = Math.floor(seconds / 60)
55
- const hours = Math.floor(minutes / 60)
56
- const days = Math.floor(hours / 24)
57
- const months = Math.floor(days / 30)
58
- const years = Math.floor(days / 365)
21
+ type FindCommentsByCreditsProps = {
22
+ data: CommentsMap | null
23
+ assignmentId: string
24
+ problemId: string
25
+ }
59
26
 
60
- if (seconds < 60) return t.justNow
61
- if (minutes < 60) return `${minutes} ${minutes === 1 ? t.minuteAgo : t.minutesAgo}`
62
- if (hours < 24) return `${hours} ${hours === 1 ? t.hourAgo : t.hoursAgo}`
63
- if (days < 30) return `${days} ${days === 1 ? t.dayAgo : t.daysAgo}`
64
- if (months < 12) return `${months} ${months === 1 ? t.monthAgo : t.monthsAgo}`
65
- return `${years} ${years === 1 ? t.yearAgo : t.yearsAgo}`
27
+ export function findCommentsByCredits({
28
+ data,
29
+ assignmentId,
30
+ problemId,
31
+ }: FindCommentsByCreditsProps) {
32
+ return data?.get(assignmentId)?.[problemId]?.comments ?? []
66
33
  }
@@ -1,4 +1,4 @@
1
- export * from './model/teacherFeedback.model'
2
- export * from './types/teacherFeedback.types'
1
+ export * from './model/model'
2
+ export * from './types'
3
3
  export * from './constants'
4
4
  export * from './components'
@@ -0,0 +1,13 @@
1
+ import { createEffect, Effect } from 'effector'
2
+ import { TeacherFeedbackModelProps } from './model'
3
+ import { GetCommentsPayload, GetCommentsResponse, UpdateCommentStatusSeenPayload } from '../types'
4
+
5
+ export class TeacherFeedbackAPI {
6
+ public readonly getCommentsFx: Effect<GetCommentsPayload, GetCommentsResponse>
7
+ public readonly updateCommentStatusSeenFx: Effect<UpdateCommentStatusSeenPayload, void>
8
+
9
+ constructor(api: TeacherFeedbackModelProps['api']) {
10
+ this.getCommentsFx = createEffect(api.getComments)
11
+ this.updateCommentStatusSeenFx = createEffect(api.updateCommentStatusSeen)
12
+ }
13
+ }
@@ -0,0 +1,82 @@
1
+ import { createEvent, restore, sample } from 'effector'
2
+ import { CommentsMap, Credits, FeedbackEntity, TeacherComment } from '../types'
3
+
4
+ type UpdateProps = {
5
+ state: CommentsMap | null
6
+ assignmentId: string
7
+ problemId: string
8
+ fn: (data: FeedbackEntity) => FeedbackEntity | undefined
9
+ }
10
+
11
+ export class TeacherComments {
12
+ public readonly setAllCommentsRead = createEvent<Credits>()
13
+ public readonly addComment = createEvent<Credits & { comment: TeacherComment; isRead: boolean }>()
14
+ public readonly deleteComment = createEvent<Credits & { commentId: string }>()
15
+
16
+ public readonly setData = createEvent<CommentsMap>()
17
+ public readonly $data = restore<CommentsMap | null>(this.setData, null)
18
+ .on(this.setAllCommentsRead, (state, { assignmentId, problemId }) =>
19
+ this.update({
20
+ state,
21
+ assignmentId,
22
+ problemId,
23
+ fn: data => ({
24
+ comments: data.comments.map(comment => ({ ...comment, isRead: true })),
25
+ unreadMessagesCount: 0,
26
+ }),
27
+ }),
28
+ )
29
+ .on(this.addComment, (state, { assignmentId, problemId, comment, isRead }) =>
30
+ this.update({
31
+ state,
32
+ assignmentId,
33
+ problemId,
34
+ fn: data => ({
35
+ comments: [...data.comments, comment],
36
+ unreadMessagesCount: isRead ? data.unreadMessagesCount : data.unreadMessagesCount + 1,
37
+ }),
38
+ }),
39
+ )
40
+ .on(this.deleteComment, (state, { assignmentId, problemId, commentId }) =>
41
+ this.update({
42
+ state,
43
+ assignmentId,
44
+ problemId,
45
+ fn: data => {
46
+ const commentToDelete = data.comments.find(({ _id }) => _id === commentId)
47
+ if (!commentToDelete) return data
48
+ return {
49
+ comments: data.comments.filter(({ _id }) => _id !== commentId),
50
+ unreadMessagesCount: commentToDelete.isRead
51
+ ? data.unreadMessagesCount
52
+ : data.unreadMessagesCount - 1,
53
+ }
54
+ },
55
+ }),
56
+ )
57
+
58
+ constructor() {
59
+ sample({
60
+ clock: this.deleteComment,
61
+ })
62
+ }
63
+
64
+ private update({ state, assignmentId, problemId, fn }: UpdateProps) {
65
+ if (!state) return state
66
+
67
+ const updatedState = new Map(state)
68
+ const assignmentMap = updatedState.get(assignmentId) || {}
69
+ const currentData = assignmentMap[problemId]
70
+ const updatedData = fn(currentData)
71
+
72
+ if (updatedData === undefined) {
73
+ delete assignmentMap[problemId]
74
+ if (Object.keys(assignmentMap).length === 0) updatedState.delete(assignmentId)
75
+ return updatedState
76
+ }
77
+
78
+ assignmentMap[problemId] = updatedData
79
+ updatedState.set(assignmentId, assignmentMap)
80
+ return updatedState
81
+ }
82
+ }
@@ -0,0 +1,102 @@
1
+ import { createEvent, restore, sample, Store } from 'effector'
2
+ import { TeacherFeedbackAPI } from './api'
3
+ import { TeacherFeedbackSockets } from './sockets'
4
+ import { TeacherComments } from './comments'
5
+ import { findCommentsByCredits, generateCommentsMap } from '../helpers'
6
+ import {
7
+ GetCommentsPayload,
8
+ GetCommentsResponse,
9
+ TeacherComment,
10
+ UpdateCommentStatusSeenPayload,
11
+ } from '../types'
12
+
13
+ export type TeacherFeedbackModelProps = {
14
+ api: {
15
+ getComments: (props: GetCommentsPayload) => Promise<GetCommentsResponse>
16
+ updateCommentStatusSeen: (props: UpdateCommentStatusSeenPayload) => Promise<void>
17
+ }
18
+ socket: any
19
+ credits: {
20
+ $assignmentId: Store<string>
21
+ $problemId: Store<string>
22
+ }
23
+ defaults: { EMPTY_COMMENT: TeacherComment }
24
+ }
25
+
26
+ export class TeacherFeedbackModel {
27
+ private readonly sockets: TeacherFeedbackSockets
28
+ public readonly api: TeacherFeedbackAPI
29
+ public readonly comments: TeacherComments
30
+ public readonly setIsOpen = createEvent<boolean>()
31
+ public readonly $isOpen = restore(this.setIsOpen, false)
32
+
33
+ constructor({ api, socket, credits }: TeacherFeedbackModelProps) {
34
+ this.api = new TeacherFeedbackAPI(api)
35
+ this.sockets = new TeacherFeedbackSockets(socket)
36
+ this.comments = new TeacherComments()
37
+
38
+ sample({
39
+ clock: credits.$problemId,
40
+ fn: () => false,
41
+ target: this.setIsOpen,
42
+ })
43
+
44
+ sample({
45
+ clock: this.setIsOpen,
46
+ source: {
47
+ data: this.comments.$data,
48
+ assignmentId: credits.$assignmentId,
49
+ problemId: credits.$problemId,
50
+ },
51
+ filter: (source, isOpen) => {
52
+ const comments = findCommentsByCredits(source)
53
+ const hasUnreadComments = comments.some(({ isRead }) => !isRead)
54
+ return isOpen && hasUnreadComments
55
+ },
56
+ fn: source => {
57
+ const comments = findCommentsByCredits(source)
58
+ return { ids: comments.map(({ _id }) => _id) }
59
+ },
60
+ target: this.api.updateCommentStatusSeenFx,
61
+ })
62
+
63
+ sample({
64
+ clock: this.api.updateCommentStatusSeenFx.pending,
65
+ source: { assignmentId: credits.$assignmentId, problemId: credits.$problemId },
66
+ target: this.comments.setAllCommentsRead,
67
+ })
68
+
69
+ sample({
70
+ clock: this.api.getCommentsFx.done,
71
+ fn: ({ params, result }) => generateCommentsMap(params.id, result),
72
+ target: this.comments.setData,
73
+ })
74
+
75
+ sample({
76
+ clock: this.sockets.commentDeleted,
77
+ source: { assignmentId: credits.$assignmentId },
78
+ fn: ({ assignmentId }, comment) => ({
79
+ assignmentId,
80
+ problemId: comment.problemId,
81
+ commentId: comment._id,
82
+ }),
83
+ target: this.comments.deleteComment,
84
+ })
85
+
86
+ sample({
87
+ clock: this.sockets.commentAdded,
88
+ source: {
89
+ assignmentId: credits.$assignmentId,
90
+ problemId: credits.$problemId,
91
+ isOpen: this.$isOpen,
92
+ },
93
+ fn: ({ assignmentId, problemId, isOpen }, comment) => ({
94
+ assignmentId,
95
+ problemId,
96
+ comment,
97
+ isRead: isOpen && comment.problemId === problemId,
98
+ }),
99
+ target: this.comments.addComment,
100
+ })
101
+ }
102
+ }
@@ -0,0 +1,22 @@
1
+ import { createEvent } from 'effector'
2
+ import { TeacherComment, FeedbackSocketEvents } from '../types'
3
+
4
+ export class TeacherFeedbackSockets {
5
+ private readonly socket: any
6
+ public readonly commentAdded = createEvent<TeacherComment>()
7
+ public readonly commentDeleted = createEvent<TeacherComment>()
8
+
9
+ constructor(socket: any) {
10
+ this.socket = socket
11
+ }
12
+
13
+ connect() {
14
+ this.socket.on(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
15
+ this.socket.on(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
16
+ }
17
+
18
+ off() {
19
+ this.socket.off(FeedbackSocketEvents.COMMENT_ADDED, this.commentAdded)
20
+ this.socket.off(FeedbackSocketEvents.COMMENT_DELETED, this.commentDeleted)
21
+ }
22
+ }
@@ -0,0 +1,42 @@
1
+ export type GetCommentsPayload = {
2
+ id: string
3
+ }
4
+
5
+ export type GetCommentsResponse = {
6
+ [problemId: string]: { comments: TeacherComment[] }
7
+ }
8
+
9
+ export type UpdateCommentStatusSeenPayload = {
10
+ ids: string[]
11
+ }
12
+
13
+ export type TeacherComment = {
14
+ _id: string
15
+ teacherId: string
16
+ teacherName: string
17
+ studentId: string
18
+ problemId: string
19
+ exerciseId: string
20
+ content: string
21
+ isRead: boolean
22
+ createdAt: Date
23
+ updatedAt: Date
24
+ __v: number
25
+ }
26
+
27
+ export type FeedbackEntity = {
28
+ comments: TeacherComment[]
29
+ unreadMessagesCount: number
30
+ }
31
+
32
+ export type CommentsMap = Map<string, { [problemId: string]: FeedbackEntity }>
33
+
34
+ export type Credits = {
35
+ assignmentId: string
36
+ problemId: string
37
+ }
38
+
39
+ export enum FeedbackSocketEvents {
40
+ COMMENT_ADDED = 'exerciseCommentCreated',
41
+ COMMENT_DELETED = 'exerciseCommentDeleted',
42
+ }
@@ -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":[]}