stream-chat-react-native-core 4.4.0-beta.2 → 4.4.0-beta.3

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 (147) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +4 -12
  4. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  5. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js +4 -12
  6. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  7. package/lib/commonjs/components/Chat/Chat.js +8 -4
  8. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  9. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +80 -0
  10. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -0
  11. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +3 -1
  12. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  13. package/lib/commonjs/components/Message/Message.js +27 -22
  14. package/lib/commonjs/components/Message/Message.js.map +1 -1
  15. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +22 -14
  16. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  17. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +108 -40
  18. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  19. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +117 -24
  20. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  21. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +52 -20
  22. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  23. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  24. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  25. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  26. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  27. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +145 -119
  28. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  29. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  30. package/lib/commonjs/i18n/en.json +2 -0
  31. package/lib/commonjs/i18n/fr.json +2 -0
  32. package/lib/commonjs/i18n/hi.json +2 -0
  33. package/lib/commonjs/i18n/it.json +2 -0
  34. package/lib/commonjs/i18n/ja.json +3 -1
  35. package/lib/commonjs/i18n/ko.json +3 -1
  36. package/lib/commonjs/i18n/nl.json +2 -0
  37. package/lib/commonjs/i18n/ru.json +2 -0
  38. package/lib/commonjs/i18n/tr.json +2 -0
  39. package/lib/commonjs/icons/Warning.js +38 -0
  40. package/lib/commonjs/icons/Warning.js.map +1 -0
  41. package/lib/commonjs/icons/index.js +13 -0
  42. package/lib/commonjs/icons/index.js.map +1 -1
  43. package/lib/commonjs/utils/utils.js +33 -2
  44. package/lib/commonjs/utils/utils.js.map +1 -1
  45. package/lib/commonjs/version.json +1 -1
  46. package/lib/module/components/Channel/Channel.js.map +1 -1
  47. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +4 -12
  48. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  49. package/lib/module/components/Channel/hooks/useCreateThreadContext.js +4 -12
  50. package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  51. package/lib/module/components/Chat/Chat.js +8 -4
  52. package/lib/module/components/Chat/Chat.js.map +1 -1
  53. package/lib/module/components/Chat/hooks/useAppSettings.js +80 -0
  54. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -0
  55. package/lib/module/components/Chat/hooks/useCreateChatContext.js +3 -1
  56. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  57. package/lib/module/components/Message/Message.js +27 -22
  58. package/lib/module/components/Message/Message.js.map +1 -1
  59. package/lib/module/components/Message/MessageSimple/utils/renderText.js +22 -14
  60. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  61. package/lib/module/components/MessageInput/FileUploadPreview.js +108 -40
  62. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  63. package/lib/module/components/MessageInput/ImageUploadPreview.js +117 -24
  64. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  65. package/lib/module/components/MessageInput/UploadProgressIndicator.js +52 -20
  66. package/lib/module/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  67. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  68. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  69. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  70. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  71. package/lib/module/contexts/messageInputContext/MessageInputContext.js +145 -119
  72. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  73. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  74. package/lib/module/i18n/en.json +2 -0
  75. package/lib/module/i18n/fr.json +2 -0
  76. package/lib/module/i18n/hi.json +2 -0
  77. package/lib/module/i18n/it.json +2 -0
  78. package/lib/module/i18n/ja.json +3 -1
  79. package/lib/module/i18n/ko.json +3 -1
  80. package/lib/module/i18n/nl.json +2 -0
  81. package/lib/module/i18n/ru.json +2 -0
  82. package/lib/module/i18n/tr.json +2 -0
  83. package/lib/module/icons/Warning.js +38 -0
  84. package/lib/module/icons/Warning.js.map +1 -0
  85. package/lib/module/icons/index.js +13 -0
  86. package/lib/module/icons/index.js.map +1 -1
  87. package/lib/module/utils/utils.js +33 -2
  88. package/lib/module/utils/utils.js.map +1 -1
  89. package/lib/module/version.json +1 -1
  90. package/lib/typescript/components/Chat/hooks/__tests__/useAppSettings.test.d.ts +1 -0
  91. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +3 -0
  92. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  93. package/lib/typescript/components/Message/Message.d.ts +12 -2
  94. package/lib/typescript/components/MessageInput/UploadProgressIndicator.d.ts +1 -3
  95. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +5 -1
  96. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +4 -4
  97. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +3 -3
  98. package/lib/typescript/i18n/en.json +2 -0
  99. package/lib/typescript/i18n/fr.json +2 -0
  100. package/lib/typescript/i18n/hi.json +2 -0
  101. package/lib/typescript/i18n/it.json +2 -0
  102. package/lib/typescript/i18n/ja.json +3 -1
  103. package/lib/typescript/i18n/ko.json +3 -1
  104. package/lib/typescript/i18n/nl.json +2 -0
  105. package/lib/typescript/i18n/ru.json +2 -0
  106. package/lib/typescript/i18n/tr.json +2 -0
  107. package/lib/typescript/icons/Warning.d.ts +3 -0
  108. package/lib/typescript/icons/index.d.ts +1 -0
  109. package/lib/typescript/utils/Streami18n.d.ts +6 -0
  110. package/lib/typescript/utils/utils.d.ts +15 -2
  111. package/package.json +1 -1
  112. package/src/components/Channel/Channel.tsx +1 -1
  113. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +3 -9
  114. package/src/components/Channel/hooks/useCreateThreadContext.ts +3 -9
  115. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +1 -0
  116. package/src/components/Chat/Chat.tsx +4 -0
  117. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +34 -0
  118. package/src/components/Chat/hooks/useAppSettings.ts +39 -0
  119. package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
  120. package/src/components/Message/Message.tsx +56 -48
  121. package/src/components/Message/MessageSimple/utils/renderText.tsx +9 -0
  122. package/src/components/MessageInput/FileUploadPreview.tsx +60 -14
  123. package/src/components/MessageInput/ImageUploadPreview.tsx +95 -42
  124. package/src/components/MessageInput/UploadProgressIndicator.tsx +49 -22
  125. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +50 -80
  126. package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +49 -74
  127. package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +36 -13
  128. package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +122 -17
  129. package/src/contexts/chatContext/ChatContext.tsx +5 -1
  130. package/src/contexts/messageContext/MessageContext.tsx +7 -4
  131. package/src/contexts/messageInputContext/MessageInputContext.tsx +127 -96
  132. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +2 -2
  133. package/src/i18n/en.json +2 -0
  134. package/src/i18n/fr.json +2 -0
  135. package/src/i18n/hi.json +2 -0
  136. package/src/i18n/it.json +2 -0
  137. package/src/i18n/ja.json +3 -1
  138. package/src/i18n/ko.json +3 -1
  139. package/src/i18n/nl.json +2 -0
  140. package/src/i18n/ru.json +2 -0
  141. package/src/i18n/tr.json +2 -0
  142. package/src/icons/Warning.tsx +12 -0
  143. package/src/icons/index.ts +1 -0
  144. package/src/utils/utils.ts +53 -1
  145. package/src/version.json +1 -1
  146. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +0 -4413
  147. package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +0 -2373
@@ -14,11 +14,12 @@ describe('ImageUploadPreview', () => {
14
14
  generateImageUploadPreview({ id: 'image-upload-preview-1', state: FileState.UPLOADING }),
15
15
  generateImageUploadPreview({ id: 'image-upload-preview-2', state: FileState.UPLOADING }),
16
16
  generateImageUploadPreview({ id: 'image-upload-preview-3', state: FileState.UPLOADING }),
17
+ generateImageUploadPreview({ id: 'image-upload-preview-4', state: FileState.UPLOADING }),
17
18
  ];
18
19
  const removeImage = jest.fn();
19
20
  const uploadImage = jest.fn();
20
21
 
21
- const { getAllByTestId, queryAllByTestId, rerender, toJSON } = render(
22
+ const { getAllByTestId, queryAllByTestId, queryAllByText } = render(
22
23
  <ThemeProvider>
23
24
  <ImageUploadPreview
24
25
  imageUploads={imageUploads}
@@ -35,6 +36,7 @@ describe('ImageUploadPreview', () => {
35
36
  expect(queryAllByTestId('inactive-upload-progress-indicator')).toHaveLength(0);
36
37
  expect(queryAllByTestId('upload-progress-indicator')).toHaveLength(imageUploads.length);
37
38
  expect(queryAllByTestId('retry-upload-progress-indicator')).toHaveLength(0);
39
+ expect(queryAllByText('Not supported')).toHaveLength(0);
38
40
  expect(removeImage).toHaveBeenCalledTimes(0);
39
41
  expect(uploadImage).toHaveBeenCalledTimes(0);
40
42
  });
@@ -45,25 +47,6 @@ describe('ImageUploadPreview', () => {
45
47
  expect(removeImage).toHaveBeenCalledTimes(1);
46
48
  expect(uploadImage).toHaveBeenCalledTimes(0);
47
49
  });
48
-
49
- rerender(
50
- <ThemeProvider>
51
- <ImageUploadPreview
52
- imageUploads={imageUploads.map((image, index) => ({
53
- ...image,
54
- id: `${index}`,
55
- }))}
56
- removeImage={removeImage}
57
- uploadImage={uploadImage}
58
- />
59
- </ThemeProvider>,
60
- );
61
-
62
- const snapshot = toJSON();
63
-
64
- await waitFor(() => {
65
- expect(snapshot).toMatchSnapshot();
66
- });
67
50
  });
68
51
 
69
52
  it('should render ImageUploadPreview with all uploaded images', async () => {
@@ -71,11 +54,12 @@ describe('ImageUploadPreview', () => {
71
54
  generateImageUploadPreview({ id: 'image-upload-preview-1', state: FileState.UPLOADED }),
72
55
  generateImageUploadPreview({ id: 'image-upload-preview-2', state: FileState.UPLOADED }),
73
56
  generateImageUploadPreview({ id: 'image-upload-preview-3', state: FileState.UPLOADED }),
57
+ generateImageUploadPreview({ id: 'image-upload-preview-4', state: FileState.UPLOADED }),
74
58
  ];
75
59
  const removeImage = jest.fn();
76
60
  const uploadImage = jest.fn();
77
61
 
78
- const { getAllByTestId, queryAllByTestId, rerender, toJSON } = render(
62
+ const { getAllByTestId, queryAllByTestId, queryAllByText } = render(
79
63
  <ThemeProvider>
80
64
  <ImageUploadPreview
81
65
  imageUploads={imageUploads}
@@ -92,6 +76,7 @@ describe('ImageUploadPreview', () => {
92
76
  );
93
77
  expect(queryAllByTestId('upload-progress-indicator')).toHaveLength(0);
94
78
  expect(queryAllByTestId('retry-upload-progress-indicator')).toHaveLength(0);
79
+ expect(queryAllByText('Not supported')).toHaveLength(0);
95
80
  expect(removeImage).toHaveBeenCalledTimes(0);
96
81
  expect(uploadImage).toHaveBeenCalledTimes(0);
97
82
  });
@@ -102,25 +87,6 @@ describe('ImageUploadPreview', () => {
102
87
  expect(removeImage).toHaveBeenCalledTimes(1);
103
88
  expect(uploadImage).toHaveBeenCalledTimes(0);
104
89
  });
105
-
106
- rerender(
107
- <ThemeProvider>
108
- <ImageUploadPreview
109
- imageUploads={imageUploads.map((image, index) => ({
110
- ...image,
111
- id: `${index}`,
112
- }))}
113
- removeImage={removeImage}
114
- uploadImage={uploadImage}
115
- />
116
- </ThemeProvider>,
117
- );
118
-
119
- const snapshot = toJSON();
120
-
121
- await waitFor(() => {
122
- expect(snapshot).toMatchSnapshot();
123
- });
124
90
  });
125
91
 
126
92
  it('should render ImageUploadPreview with all failed images', async () => {
@@ -128,11 +94,12 @@ describe('ImageUploadPreview', () => {
128
94
  generateImageUploadPreview({ id: 'image-upload-preview-1', state: FileState.UPLOAD_FAILED }),
129
95
  generateImageUploadPreview({ id: 'image-upload-preview-2', state: FileState.UPLOAD_FAILED }),
130
96
  generateImageUploadPreview({ id: 'image-upload-preview-3', state: FileState.UPLOAD_FAILED }),
97
+ generateImageUploadPreview({ id: 'image-upload-preview-4', state: FileState.UPLOAD_FAILED }),
131
98
  ];
132
99
  const removeImage = jest.fn();
133
100
  const uploadImage = jest.fn();
134
101
 
135
- const { getAllByTestId, queryAllByTestId, rerender, toJSON } = render(
102
+ const { getAllByTestId, queryAllByTestId, queryAllByText } = render(
136
103
  <ThemeProvider>
137
104
  <ImageUploadPreview
138
105
  imageUploads={imageUploads}
@@ -149,6 +116,7 @@ describe('ImageUploadPreview', () => {
149
116
  expect(queryAllByTestId('inactive-upload-progress-indicator')).toHaveLength(0);
150
117
  expect(queryAllByTestId('upload-progress-indicator')).toHaveLength(0);
151
118
  expect(queryAllByTestId('retry-upload-progress-indicator')).toHaveLength(imageUploads.length);
119
+ expect(queryAllByText('Not supported')).toHaveLength(0);
152
120
  expect(removeImage).toHaveBeenCalledTimes(0);
153
121
  expect(uploadImage).toHaveBeenCalledTimes(0);
154
122
  });
@@ -166,37 +134,65 @@ describe('ImageUploadPreview', () => {
166
134
  expect(removeImage).toHaveBeenCalledTimes(1);
167
135
  expect(uploadImage).toHaveBeenCalledTimes(1);
168
136
  });
137
+ });
169
138
 
170
- rerender(
139
+ it('should render ImageUploadPreview with all unsupported', async () => {
140
+ const imageUploads = [
141
+ generateImageUploadPreview({
142
+ id: 'image-upload-preview-1',
143
+ state: FileState.NOT_SUPPORTED,
144
+ }),
145
+ generateImageUploadPreview({
146
+ id: 'image-upload-preview-2',
147
+ state: FileState.NOT_SUPPORTED,
148
+ }),
149
+ generateImageUploadPreview({
150
+ id: 'image-upload-preview-3',
151
+ state: FileState.NOT_SUPPORTED,
152
+ }),
153
+ generateImageUploadPreview({
154
+ id: 'image-upload-preview-4',
155
+ state: FileState.NOT_SUPPORTED,
156
+ }),
157
+ ];
158
+ const removeImage = jest.fn();
159
+ const uploadImage = jest.fn();
160
+
161
+ const { queryAllByTestId, queryAllByText } = render(
171
162
  <ThemeProvider>
172
163
  <ImageUploadPreview
173
- imageUploads={imageUploads.map((image, index) => ({
174
- ...image,
175
- id: `${index}`,
176
- }))}
164
+ imageUploads={imageUploads}
177
165
  removeImage={removeImage}
178
166
  uploadImage={uploadImage}
179
167
  />
180
168
  </ThemeProvider>,
181
169
  );
182
170
 
183
- const snapshot = toJSON();
184
-
185
171
  await waitFor(() => {
186
- expect(snapshot).toMatchSnapshot();
172
+ expect(queryAllByTestId('active-upload-progress-indicator')).toHaveLength(
173
+ imageUploads.length,
174
+ );
175
+ expect(queryAllByTestId('upload-progress-indicator')).toHaveLength(0);
176
+ expect(queryAllByTestId('inactive-upload-progress-indicator')).toHaveLength(0);
177
+ expect(queryAllByText('Not supported')).toHaveLength(imageUploads.length);
178
+ expect(queryAllByTestId('retry-upload-progress-indicator')).toHaveLength(0);
179
+
180
+ expect(removeImage).toHaveBeenCalledTimes(0);
181
+ expect(uploadImage).toHaveBeenCalledTimes(0);
187
182
  });
188
183
  });
189
184
 
190
- it('should render ImageUploadPreview with 1 uploading, 1 uploaded, and 1 failed image', async () => {
185
+ it('should render ImageUploadPreview with 1 uploading, 1 uploaded, and 1 failed image, and 1 unsupported', async () => {
191
186
  const imageUploads = [
192
187
  generateImageUploadPreview({ id: 'image-upload-preview-1', state: FileState.UPLOADING }),
193
188
  generateImageUploadPreview({ id: 'image-upload-preview-2', state: FileState.UPLOADED }),
194
189
  generateImageUploadPreview({ id: 'image-upload-preview-3', state: FileState.UPLOAD_FAILED }),
190
+ generateImageUploadPreview({ id: 'image-upload-preview-4', state: FileState.NOT_SUPPORTED }),
195
191
  ];
196
192
  const removeImage = jest.fn();
197
193
  const uploadImage = jest.fn();
198
194
 
199
- const { queryAllByTestId, rerender, toJSON } = render(
195
+ const { queryAllByTestId, queryAllByText } = render(
200
196
  <ThemeProvider>
201
197
  <ImageUploadPreview
202
198
  imageUploads={imageUploads}
@@ -207,33 +203,12 @@ describe('ImageUploadPreview', () => {
207
203
  );
208
204
 
209
205
  await waitFor(() => {
210
- expect(queryAllByTestId('active-upload-progress-indicator')).toHaveLength(
211
- imageUploads.length - 1,
212
- );
213
- expect(queryAllByTestId('inactive-upload-progress-indicator')).toHaveLength(1);
214
206
  expect(queryAllByTestId('upload-progress-indicator')).toHaveLength(1);
207
+ expect(queryAllByTestId('inactive-upload-progress-indicator')).toHaveLength(1);
215
208
  expect(queryAllByTestId('retry-upload-progress-indicator')).toHaveLength(1);
209
+ expect(queryAllByText('Not supported')).toHaveLength(1);
216
210
  expect(removeImage).toHaveBeenCalledTimes(0);
217
211
  expect(uploadImage).toHaveBeenCalledTimes(0);
218
212
  });
219
-
220
- rerender(
221
- <ThemeProvider>
222
- <ImageUploadPreview
223
- imageUploads={imageUploads.map((image, index) => ({
224
- ...image,
225
- id: `${index}`,
226
- }))}
227
- removeImage={removeImage}
228
- uploadImage={uploadImage}
229
- />
230
- </ThemeProvider>,
231
- );
232
-
233
- const snapshot = toJSON();
234
-
235
- await waitFor(() => {
236
- expect(snapshot).toMatchSnapshot();
237
- });
238
213
  });
239
214
  });
@@ -7,14 +7,14 @@ import { ProgressIndicatorTypes } from '../../../utils/utils';
7
7
  import { UploadProgressIndicator } from '../UploadProgressIndicator';
8
8
 
9
9
  describe('UploadProgressIndicator', () => {
10
- it('should render an inactive IN_PROGRESS UploadProgressIndicator', async () => {
10
+ it('should render an inactive UploadProgressIndicator', async () => {
11
11
  const action = jest.fn();
12
12
 
13
13
  const { queryByTestId, toJSON } = render(
14
14
  <ThemeProvider>
15
15
  <UploadProgressIndicator
16
16
  action={action}
17
- type={ProgressIndicatorTypes.IN_PROGRESS}
17
+ type={ProgressIndicatorTypes.INACTIVE}
18
18
  ></UploadProgressIndicator>
19
19
  </ThemeProvider>,
20
20
  );
@@ -32,21 +32,21 @@ describe('UploadProgressIndicator', () => {
32
32
  });
33
33
  });
34
34
 
35
- it('should render an inactive RETRY UploadProgressIndicator', async () => {
35
+ it('should render an active UploadProgressIndicator', async () => {
36
36
  const action = jest.fn();
37
37
 
38
38
  const { queryByTestId, toJSON } = render(
39
39
  <ThemeProvider>
40
40
  <UploadProgressIndicator
41
41
  action={action}
42
- type={ProgressIndicatorTypes.RETRY}
42
+ type={ProgressIndicatorTypes.IN_PROGRESS}
43
43
  ></UploadProgressIndicator>
44
44
  </ThemeProvider>,
45
45
  );
46
46
 
47
47
  await waitFor(() => {
48
- expect(queryByTestId('active-upload-progress-indicator')).toBeFalsy();
49
- expect(queryByTestId('inactive-upload-progress-indicator')).toBeTruthy();
48
+ expect(queryByTestId('active-upload-progress-indicator')).toBeTruthy();
49
+ expect(queryByTestId('inactive-upload-progress-indicator')).toBeFalsy();
50
50
  expect(action).toHaveBeenCalledTimes(0);
51
51
  });
52
52
 
@@ -57,24 +57,48 @@ describe('UploadProgressIndicator', () => {
57
57
  });
58
58
  });
59
59
 
60
- it('should render an active IN_PROGRESS UploadProgressIndicator', async () => {
60
+ it('should render an active UploadProgressIndicator and not-supported indicator', async () => {
61
61
  const action = jest.fn();
62
62
 
63
63
  const { queryByTestId, toJSON } = render(
64
64
  <ThemeProvider>
65
65
  <UploadProgressIndicator
66
66
  action={action}
67
- active
68
- type={ProgressIndicatorTypes.IN_PROGRESS}
67
+ type={ProgressIndicatorTypes.NOT_SUPPORTED}
69
68
  ></UploadProgressIndicator>
70
69
  </ThemeProvider>,
71
70
  );
72
71
 
73
72
  await waitFor(() => {
74
73
  expect(queryByTestId('active-upload-progress-indicator')).toBeTruthy();
74
+ expect(queryByTestId('not-supported-upload-progress-indicator')).toBeTruthy();
75
75
  expect(queryByTestId('inactive-upload-progress-indicator')).toBeFalsy();
76
+ expect(action).toHaveBeenCalledTimes(0);
77
+ });
78
+
79
+ const snapshot = toJSON();
80
+
81
+ await waitFor(() => {
82
+ expect(snapshot).toMatchSnapshot();
83
+ });
84
+ });
85
+
86
+ it('should render an active UploadProgressIndicator and in-progress indicator', async () => {
87
+ const action = jest.fn();
88
+
89
+ const { queryByTestId, toJSON } = render(
90
+ <ThemeProvider>
91
+ <UploadProgressIndicator
92
+ action={action}
93
+ type={ProgressIndicatorTypes.IN_PROGRESS}
94
+ ></UploadProgressIndicator>
95
+ </ThemeProvider>,
96
+ );
97
+
98
+ await waitFor(() => {
99
+ expect(queryByTestId('active-upload-progress-indicator')).toBeTruthy();
76
100
  expect(queryByTestId('upload-progress-indicator')).toBeTruthy();
77
- expect(queryByTestId('retry-upload-progress-indicator')).toBeFalsy();
101
+ expect(queryByTestId('inactive-upload-progress-indicator')).toBeFalsy();
78
102
  expect(action).toHaveBeenCalledTimes(0);
79
103
  });
80
104
 
@@ -85,14 +109,13 @@ describe('UploadProgressIndicator', () => {
85
109
  });
86
110
  });
87
111
 
88
- it('should render an active RETRY UploadProgressIndicator', async () => {
112
+ it('should render an active UploadProgressIndicator and retry indicator', async () => {
89
113
  const action = jest.fn();
90
114
 
91
115
  const { getByTestId, queryByTestId, toJSON } = render(
92
116
  <ThemeProvider>
93
117
  <UploadProgressIndicator
94
118
  action={action}
95
- active
96
119
  type={ProgressIndicatorTypes.RETRY}
97
120
  ></UploadProgressIndicator>
98
121
  </ThemeProvider>,
@@ -100,8 +123,8 @@ describe('UploadProgressIndicator', () => {
100
123
 
101
124
  await waitFor(() => {
102
125
  expect(queryByTestId('active-upload-progress-indicator')).toBeTruthy();
103
- expect(queryByTestId('inactive-upload-progress-indicator')).toBeFalsy();
104
126
  expect(queryByTestId('upload-progress-indicator')).toBeFalsy();
127
+ expect(queryByTestId('inactive-upload-progress-indicator')).toBeFalsy();
105
128
  expect(queryByTestId('retry-upload-progress-indicator')).toBeTruthy();
106
129
  expect(action).toHaveBeenCalledTimes(0);
107
130
  });
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`UploadProgressIndicator should render an active IN_PROGRESS UploadProgressIndicator 1`] = `
3
+ exports[`UploadProgressIndicator should render an active UploadProgressIndicator 1`] = `
4
4
  <View
5
5
  style={
6
6
  Array [
@@ -46,6 +46,7 @@ exports[`UploadProgressIndicator should render an active IN_PROGRESS UploadProgr
46
46
  Object {},
47
47
  ]
48
48
  }
49
+ testID="not-supported-upload-progress-indicator"
49
50
  >
50
51
  <View
51
52
  style={
@@ -69,7 +70,7 @@ exports[`UploadProgressIndicator should render an active IN_PROGRESS UploadProgr
69
70
  </View>
70
71
  `;
71
72
 
72
- exports[`UploadProgressIndicator should render an active RETRY UploadProgressIndicator 1`] = `
73
+ exports[`UploadProgressIndicator should render an active UploadProgressIndicator and in-progress indicator 1`] = `
73
74
  <View
74
75
  style={
75
76
  Array [
@@ -115,6 +116,124 @@ exports[`UploadProgressIndicator should render an active RETRY UploadProgressInd
115
116
  Object {},
116
117
  ]
117
118
  }
119
+ testID="not-supported-upload-progress-indicator"
120
+ >
121
+ <View
122
+ style={
123
+ Object {
124
+ "alignItems": "center",
125
+ "bottom": 0,
126
+ "justifyContent": "center",
127
+ "left": 0,
128
+ "position": "absolute",
129
+ "right": 0,
130
+ "top": 0,
131
+ }
132
+ }
133
+ >
134
+ <ActivityIndicator
135
+ color="#F2F2F2"
136
+ testID="upload-progress-indicator"
137
+ />
138
+ </View>
139
+ </View>
140
+ </View>
141
+ `;
142
+
143
+ exports[`UploadProgressIndicator should render an active UploadProgressIndicator and not-supported indicator 1`] = `
144
+ <View
145
+ style={
146
+ Array [
147
+ Object {
148
+ "overflow": "hidden",
149
+ },
150
+ undefined,
151
+ ]
152
+ }
153
+ testID="active-upload-progress-indicator"
154
+ >
155
+ <View
156
+ style={
157
+ Array [
158
+ Object {
159
+ "alignItems": "center",
160
+ "height": "100%",
161
+ "justifyContent": "center",
162
+ "opacity": 0,
163
+ "position": "absolute",
164
+ "width": "100%",
165
+ },
166
+ Object {
167
+ "backgroundColor": "#000000CC",
168
+ },
169
+ Object {},
170
+ ]
171
+ }
172
+ />
173
+ <View
174
+ style={
175
+ Array [
176
+ Object {
177
+ "overflow": "hidden",
178
+ },
179
+ Object {
180
+ "backgroundColor": "#000000CC",
181
+ },
182
+ Object {},
183
+ ]
184
+ }
185
+ testID="not-supported-upload-progress-indicator"
186
+ />
187
+ </View>
188
+ `;
189
+
190
+ exports[`UploadProgressIndicator should render an active UploadProgressIndicator and retry indicator 1`] = `
191
+ <View
192
+ style={
193
+ Array [
194
+ Object {
195
+ "overflow": "hidden",
196
+ },
197
+ undefined,
198
+ ]
199
+ }
200
+ testID="active-upload-progress-indicator"
201
+ >
202
+ <View
203
+ style={
204
+ Array [
205
+ Object {
206
+ "alignItems": "center",
207
+ "height": "100%",
208
+ "justifyContent": "center",
209
+ "opacity": 0,
210
+ "position": "absolute",
211
+ "width": "100%",
212
+ },
213
+ Object {
214
+ "backgroundColor": "#000000CC",
215
+ },
216
+ Object {},
217
+ ]
218
+ }
219
+ />
220
+ <View
221
+ style={
222
+ Array [
223
+ Object {
224
+ "alignItems": "center",
225
+ "height": "100%",
226
+ "justifyContent": "center",
227
+ "position": "absolute",
228
+ "width": "100%",
229
+ },
230
+ Object {
231
+ "backgroundColor": "#000000CC",
232
+ },
233
+ Object {},
234
+ ]
235
+ }
236
+ testID="not-supported-upload-progress-indicator"
118
237
  >
119
238
  <View
120
239
  accessible={true}
@@ -188,21 +307,7 @@ exports[`UploadProgressIndicator should render an active RETRY UploadProgressInd
188
307
  </View>
189
308
  `;
190
309
 
191
- exports[`UploadProgressIndicator should render an inactive IN_PROGRESS UploadProgressIndicator 1`] = `
192
- <View
193
- style={
194
- Array [
195
- Object {
196
- "overflow": "hidden",
197
- },
198
- undefined,
199
- ]
200
- }
201
- testID="inactive-upload-progress-indicator"
202
- />
203
- `;
204
-
205
- exports[`UploadProgressIndicator should render an inactive RETRY UploadProgressIndicator 1`] = `
310
+ exports[`UploadProgressIndicator should render an inactive UploadProgressIndicator 1`] = `
206
311
  <View
207
312
  style={
208
313
  Array [
@@ -1,6 +1,6 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
2
 
3
- import type { Channel, Mute, StreamChat } from 'stream-chat';
3
+ import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
4
4
 
5
5
  import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
6
6
  import { getDisplayName } from '../utils/getDisplayName';
@@ -8,6 +8,10 @@ import { getDisplayName } from '../utils/getDisplayName';
8
8
  export type ChatContextValue<
9
9
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
10
10
  > = {
11
+ /**
12
+ * Object of application settings returned from Stream.
13
+ * */
14
+ appSettings: AppSettingsAPIResponse<StreamChatGenerics> | null;
11
15
  /**
12
16
  * The StreamChat client object
13
17
  *
@@ -3,7 +3,10 @@ import React, { PropsWithChildren, useContext } from 'react';
3
3
  import type { Attachment } from 'stream-chat';
4
4
 
5
5
  import type { ActionHandler } from '../../components/Attachment/Attachment';
6
- import type { TouchableHandlerPayload } from '../../components/Message/Message';
6
+ import type {
7
+ MessageTouchableHandlerPayload,
8
+ TouchableHandlerPayload,
9
+ } from '../../components/Message/Message';
7
10
  import type { GroupType, MessageType } from '../../components/MessageList/hooks/useMessageList';
8
11
  import type { ChannelContextValue } from '../../contexts/channelContext/ChannelContext';
9
12
  import type { MessageContentType } from '../../contexts/messagesContext/MessagesContext';
@@ -62,7 +65,7 @@ export type MessageContextValue<
62
65
  *
63
66
  * By default, we show the overlay with all the message actions on long press.
64
67
  *
65
- * @param event Event object for onLongPress event
68
+ * @param payload Payload object for onLongPress event
66
69
  */
67
70
  onLongPress: (payload: TouchableHandlerPayload) => void;
68
71
  /** Whether the message is only text and the text is only emojis */
@@ -77,9 +80,9 @@ export type MessageContextValue<
77
80
  *
78
81
  * By default, we will dismiss the keyboard on press.
79
82
  *
80
- * @param event Event object for onPress event
83
+ * @param payload Payload object for onPress event
81
84
  */
82
- onPress: (payload: TouchableHandlerPayload) => void;
85
+ onPress: (payload: MessageTouchableHandlerPayload) => void;
83
86
  onPressIn: ((payload: TouchableHandlerPayload) => void) | null;
84
87
  /** The images attached to a message */
85
88
  otherAttachments: Attachment<StreamChatGenerics>[];