stream-chat-react-native-core 4.9.0-beta.2 → 4.9.0

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 (98) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +246 -190
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/VideoThumbnail.js +11 -5
  4. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  6. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  7. package/lib/commonjs/components/Message/Message.js +7 -6
  8. package/lib/commonjs/components/Message/Message.js.map +1 -1
  9. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +24 -18
  10. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  11. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +2 -2
  12. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  13. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js +43 -0
  14. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js.map +1 -0
  15. package/lib/commonjs/components/Reply/Reply.js +7 -2
  16. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +20 -27
  18. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  19. package/lib/commonjs/mock-builders/generator/attachment.js +3 -2
  20. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  21. package/lib/commonjs/utils/getUrlOfImageAttachment.js +1 -1
  22. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -1
  23. package/lib/commonjs/version.json +1 -1
  24. package/lib/module/components/Attachment/Gallery.js +246 -190
  25. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  26. package/lib/module/components/Attachment/VideoThumbnail.js +11 -5
  27. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  28. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  29. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  30. package/lib/module/components/Message/Message.js +7 -6
  31. package/lib/module/components/Message/Message.js.map +1 -1
  32. package/lib/module/components/MessageInput/FileUploadPreview.js +24 -18
  33. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  34. package/lib/module/components/MessageInput/ImageUploadPreview.js +2 -2
  35. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  36. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js +43 -0
  37. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js.map +1 -0
  38. package/lib/module/components/Reply/Reply.js +7 -2
  39. package/lib/module/components/Reply/Reply.js.map +1 -1
  40. package/lib/module/contexts/messageInputContext/MessageInputContext.js +20 -27
  41. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  42. package/lib/module/mock-builders/generator/attachment.js +3 -2
  43. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  44. package/lib/module/utils/getUrlOfImageAttachment.js +1 -1
  45. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -1
  46. package/lib/module/version.json +1 -1
  47. package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +3 -1
  48. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +1 -0
  49. package/lib/typescript/components/RTLComponents/WritingDirectionAwareText.d.ts +4 -0
  50. package/lib/typescript/components/Reply/__tests__/Reply.test.d.ts +1 -0
  51. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -0
  52. package/lib/typescript/contexts/messageInputContext/__tests__/MessageInputContext.test.d.ts +1 -0
  53. package/lib/typescript/contexts/messageInputContext/__tests__/isValidMessage.test.d.ts +1 -0
  54. package/lib/typescript/contexts/messageInputContext/__tests__/pickFile.test.d.ts +1 -0
  55. package/lib/typescript/contexts/messageInputContext/__tests__/removeFile.test.d.ts +1 -0
  56. package/lib/typescript/contexts/messageInputContext/__tests__/removeImage.test.d.ts +1 -0
  57. package/lib/typescript/contexts/messageInputContext/__tests__/sendMessage.test.d.ts +1 -0
  58. package/lib/typescript/contexts/messageInputContext/__tests__/sendMessageAsync.test.d.ts +1 -0
  59. package/lib/typescript/contexts/messageInputContext/__tests__/updateMessage.test.d.ts +1 -0
  60. package/lib/typescript/contexts/messageInputContext/__tests__/uploadFile.test.d.ts +1 -0
  61. package/lib/typescript/contexts/messageInputContext/__tests__/uploadImage.test.d.ts +1 -0
  62. package/lib/typescript/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.d.ts +1 -0
  63. package/lib/typescript/mock-builders/api/getOrCreateChannel.d.ts +7 -0
  64. package/lib/typescript/mock-builders/api/useMockedApis.d.ts +1 -0
  65. package/lib/typescript/mock-builders/generator/attachment.d.ts +10 -0
  66. package/lib/typescript/mock-builders/generator/channel.d.ts +116 -0
  67. package/lib/typescript/mock-builders/generator/message.d.ts +38 -0
  68. package/lib/typescript/mock-builders/generator/user.d.ts +9 -9
  69. package/package.json +7 -5
  70. package/src/components/Attachment/Gallery.tsx +231 -140
  71. package/src/components/Attachment/VideoThumbnail.tsx +12 -5
  72. package/src/components/Attachment/__tests__/Attachment.test.js +12 -0
  73. package/src/components/Attachment/__tests__/Gallery.test.js +23 -1
  74. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +1 -0
  75. package/src/components/Attachment/utils/buildGallery/types.ts +1 -0
  76. package/src/components/Message/Message.tsx +5 -1
  77. package/src/components/MessageInput/FileUploadPreview.tsx +7 -5
  78. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  79. package/src/components/RTLComponents/WritingDirectionAwareText.tsx +17 -0
  80. package/src/components/Reply/Reply.tsx +19 -3
  81. package/src/components/Reply/__tests__/Reply.test.tsx +48 -0
  82. package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -4
  83. package/src/contexts/messageInputContext/__tests__/MessageInputContext.test.tsx +208 -0
  84. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +109 -0
  85. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessageAsync.test.tsx.snap +33 -0
  86. package/src/contexts/messageInputContext/__tests__/isValidMessage.test.tsx +71 -0
  87. package/src/contexts/messageInputContext/__tests__/pickFile.test.tsx +67 -0
  88. package/src/contexts/messageInputContext/__tests__/removeFile.test.tsx +82 -0
  89. package/src/contexts/messageInputContext/__tests__/removeImage.test.tsx +80 -0
  90. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +286 -0
  91. package/src/contexts/messageInputContext/__tests__/sendMessageAsync.test.tsx +124 -0
  92. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +92 -0
  93. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +76 -0
  94. package/src/contexts/messageInputContext/__tests__/uploadImage.test.tsx +55 -0
  95. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +62 -0
  96. package/src/mock-builders/generator/attachment.js +4 -2
  97. package/src/utils/getUrlOfImageAttachment.ts +1 -1
  98. package/src/version.json +1 -1
@@ -0,0 +1,124 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { act } from 'react-test-renderer';
3
+
4
+ import { renderHook } from '@testing-library/react-hooks';
5
+
6
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
7
+ import { FileState } from '../../../utils/utils';
8
+ import {
9
+ InputMessageInputContextValue,
10
+ MessageInputContextValue,
11
+ MessageInputProvider,
12
+ useMessageInputContext,
13
+ } from '../MessageInputContext';
14
+
15
+ type WrapperType<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =
16
+ Partial<InputMessageInputContextValue<StreamChatGenerics>>;
17
+
18
+ const Wrapper = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({
19
+ children,
20
+ ...rest
21
+ }: PropsWithChildren<WrapperType<StreamChatGenerics>>) => (
22
+ <MessageInputProvider
23
+ value={
24
+ {
25
+ ...rest,
26
+ } as MessageInputContextValue<StreamChatGenerics>
27
+ }
28
+ >
29
+ {children}
30
+ </MessageInputProvider>
31
+ );
32
+
33
+ describe("MessageInputContext's sendMessageAsync", () => {
34
+ it('sendMessageAsync returns undefined when image state is UPLOAD_FAILED', () => {
35
+ const asyncUploads = {
36
+ 'test-file': {
37
+ state: FileState.UPLOAD_FAILED,
38
+ url: 'https://www.test.com',
39
+ },
40
+ };
41
+
42
+ const { rerender, result } = renderHook(() => useMessageInputContext(), {
43
+ initialProps: {
44
+ editing: true,
45
+ },
46
+ wrapper: Wrapper,
47
+ });
48
+
49
+ act(() => {
50
+ result.current.setAsyncUploads(asyncUploads);
51
+ });
52
+
53
+ rerender({ editing: false });
54
+
55
+ let data;
56
+ act(() => {
57
+ data = result.current.sendMessageAsync('test-file');
58
+ });
59
+
60
+ expect(data).toBeUndefined();
61
+ });
62
+
63
+ it.each([[FileState.UPLOADED], [FileState.FINISHED]])(
64
+ 'sendImageAsync is been called with %s file upload state and checked for snapshot)',
65
+ (fileState) => {
66
+ const sendMessageMock = jest.fn();
67
+ const asyncUploads = {
68
+ 'test-file': {
69
+ state: fileState,
70
+ url: 'https://www.test.com',
71
+ },
72
+ };
73
+ const { rerender, result } = renderHook(() => useMessageInputContext(), {
74
+ initialProps: {
75
+ editing: true,
76
+ quotedMessage: false,
77
+ sendMessage: sendMessageMock,
78
+ },
79
+ wrapper: Wrapper,
80
+ });
81
+
82
+ act(() => {
83
+ result.current.setAsyncUploads(asyncUploads);
84
+ });
85
+
86
+ rerender({ editing: false, quotedMessage: false, sendMessage: sendMessageMock });
87
+
88
+ act(() => {
89
+ result.current.sendMessageAsync('test-file');
90
+ });
91
+
92
+ expect(sendMessageMock.mock.calls[0][0]).toMatchSnapshot();
93
+ },
94
+ );
95
+
96
+ it('sendMessageAsync goes to catch block', () => {
97
+ const sendMessageMock = jest.fn();
98
+ const asyncUploads = {
99
+ 'test-file': {
100
+ state: FileState.FINISHED,
101
+ url: 'https://www.test.com',
102
+ },
103
+ };
104
+ const { rerender, result } = renderHook(() => useMessageInputContext(), {
105
+ initialProps: {
106
+ editing: true,
107
+ quotedMessage: false,
108
+ },
109
+ wrapper: Wrapper,
110
+ });
111
+
112
+ act(() => {
113
+ result.current.setAsyncUploads(asyncUploads);
114
+ });
115
+
116
+ rerender({ editing: false, quotedMessage: false });
117
+
118
+ act(() => {
119
+ result.current.sendMessageAsync('test-file');
120
+ });
121
+
122
+ expect(sendMessageMock).not.toHaveBeenCalled();
123
+ });
124
+ });
@@ -0,0 +1,92 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { act } from 'react-test-renderer';
3
+
4
+ import { renderHook } from '@testing-library/react-hooks';
5
+
6
+ import type { StreamChat } from 'stream-chat';
7
+
8
+ import type { MessageType } from '../../../components/MessageList/hooks/useMessageList';
9
+
10
+ import { ChatContextValue, ChatProvider } from '../../../contexts/chatContext/ChatContext';
11
+ import { generateMessage } from '../../../mock-builders/generator/message';
12
+ import { generateUser } from '../../../mock-builders/generator/user';
13
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
14
+ import {
15
+ InputMessageInputContextValue,
16
+ MessageInputContextValue,
17
+ MessageInputProvider,
18
+ useMessageInputContext,
19
+ } from '../MessageInputContext';
20
+
21
+ type WrapperType<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =
22
+ Partial<InputMessageInputContextValue<StreamChatGenerics>>;
23
+
24
+ const Wrapper = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({
25
+ children,
26
+ ...rest
27
+ }: PropsWithChildren<WrapperType<StreamChatGenerics>>) => (
28
+ <ChatProvider
29
+ value={
30
+ {
31
+ client: {
32
+ updateMessage: jest.fn().mockResolvedValue({ message: generateMessage() }),
33
+ } as unknown as StreamChat<StreamChatGenerics>,
34
+ } as ChatContextValue<StreamChatGenerics>
35
+ }
36
+ >
37
+ <MessageInputProvider
38
+ value={
39
+ {
40
+ ...rest,
41
+ } as MessageInputContextValue<StreamChatGenerics>
42
+ }
43
+ >
44
+ {children}
45
+ </MessageInputProvider>
46
+ </ChatProvider>
47
+ );
48
+
49
+ describe("MessageInputContext's updateMessage", () => {
50
+ const clearEditingStateMock = jest.fn();
51
+ const generatedMessage: boolean | MessageType<DefaultStreamChatGenerics> = generateMessage({
52
+ created_at: 'Sat Jul 02 2022 23:55:13 GMT+0530 (India Standard Time)',
53
+ id: '7a85f744-cc89-4f82-a1d4-5456432cc8bf',
54
+ updated_at: 'Sat Jul 02 2022 23:55:13 GMT+0530 (India Standard Time)',
55
+ user: generateUser({
56
+ id: '5d6f6322-567e-4e1e-af90-97ef1ed5cc23',
57
+ image: 'fc86ddcb-bac4-400c-9afd-b0c0a1c0cd33',
58
+ name: '50cbdd0e-ca7e-4478-9e2c-be0f1ac6a995',
59
+ }),
60
+ }) as unknown as MessageType<DefaultStreamChatGenerics>;
61
+
62
+ it('updateMessage throws error as clearEditingState is not available', async () => {
63
+ const { result } = renderHook(() => useMessageInputContext(), {
64
+ initialProps: {
65
+ editing: generatedMessage,
66
+ },
67
+ wrapper: Wrapper,
68
+ });
69
+
70
+ await act(async () => {
71
+ await result.current.updateMessage();
72
+ });
73
+
74
+ expect(clearEditingStateMock).toHaveBeenCalledTimes(0);
75
+ });
76
+
77
+ it('updateMessage throws error as client.updateMessage is available', async () => {
78
+ const { result } = renderHook(() => useMessageInputContext(), {
79
+ initialProps: {
80
+ clearEditingState: clearEditingStateMock,
81
+ editing: generatedMessage,
82
+ },
83
+ wrapper: Wrapper,
84
+ });
85
+
86
+ await act(async () => {
87
+ await result.current.updateMessage();
88
+ });
89
+
90
+ expect(clearEditingStateMock).toHaveBeenCalledTimes(1);
91
+ });
92
+ });
@@ -0,0 +1,76 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { act } from 'react-test-renderer';
3
+
4
+ import { renderHook } from '@testing-library/react-hooks';
5
+
6
+ import { generateFileUploadPreview } from '../../../mock-builders/generator/attachment';
7
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
8
+ import {
9
+ InputMessageInputContextValue,
10
+ MessageInputContextValue,
11
+ MessageInputProvider,
12
+ useMessageInputContext,
13
+ } from '../MessageInputContext';
14
+
15
+ type WrapperType<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =
16
+ Partial<InputMessageInputContextValue<StreamChatGenerics>>;
17
+
18
+ const Wrapper = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({
19
+ children,
20
+ ...rest
21
+ }: PropsWithChildren<WrapperType<StreamChatGenerics>>) => (
22
+ <MessageInputProvider
23
+ value={
24
+ {
25
+ ...rest,
26
+ } as MessageInputContextValue<StreamChatGenerics>
27
+ }
28
+ >
29
+ {children}
30
+ </MessageInputProvider>
31
+ );
32
+
33
+ describe("MessageInputContext's uploadFile", () => {
34
+ it('uploadFile works', () => {
35
+ const doDocUploadRequestMock = jest.fn().mockResolvedValue({
36
+ file: {
37
+ url: '',
38
+ },
39
+ thumb_url: '',
40
+ });
41
+ const { result } = renderHook(() => useMessageInputContext(), {
42
+ initialProps: {
43
+ doDocUploadRequest: doDocUploadRequestMock,
44
+ editing: true,
45
+ },
46
+ wrapper: Wrapper,
47
+ });
48
+
49
+ expect(result.current.fileUploads).toHaveLength(0);
50
+
51
+ act(() => {
52
+ result.current.uploadFile({ newFile: generateFileUploadPreview({ state: '' }) });
53
+ });
54
+
55
+ expect(doDocUploadRequestMock).toHaveBeenCalled();
56
+ });
57
+
58
+ it('uploadFile catch block gets executed', () => {
59
+ const doDocUploadRequestMock = jest.fn().mockResolvedValue(new Error('This is an error'));
60
+ const { result } = renderHook(() => useMessageInputContext(), {
61
+ initialProps: {
62
+ doDocUploadRequest: doDocUploadRequestMock,
63
+ editing: true,
64
+ },
65
+ wrapper: Wrapper,
66
+ });
67
+
68
+ expect(result.current.fileUploads).toHaveLength(0);
69
+
70
+ act(() => {
71
+ result.current.uploadFile({ newFile: generateFileUploadPreview({ state: '' }) });
72
+ });
73
+
74
+ expect(result.current.fileUploads.length).toBe(0);
75
+ });
76
+ });
@@ -0,0 +1,55 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { act } from 'react-test-renderer';
3
+
4
+ import { renderHook } from '@testing-library/react-hooks';
5
+
6
+ import { generateImageUploadPreview } from '../../../mock-builders/generator/attachment';
7
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
8
+ import {
9
+ InputMessageInputContextValue,
10
+ MessageInputContextValue,
11
+ MessageInputProvider,
12
+ useMessageInputContext,
13
+ } from '../MessageInputContext';
14
+
15
+ type WrapperType<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =
16
+ Partial<InputMessageInputContextValue<StreamChatGenerics>>;
17
+
18
+ const Wrapper = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({
19
+ children,
20
+ ...rest
21
+ }: PropsWithChildren<WrapperType<StreamChatGenerics>>) => (
22
+ <MessageInputProvider
23
+ value={
24
+ {
25
+ ...rest,
26
+ } as MessageInputContextValue<StreamChatGenerics>
27
+ }
28
+ >
29
+ {children}
30
+ </MessageInputProvider>
31
+ );
32
+
33
+ describe("MessageInputContext's uploadImage", () => {
34
+ it('uploadImage works', async () => {
35
+ const doImageUploadRequestMock = jest
36
+ .fn()
37
+ .mockResolvedValue({ file: 'https://www.test.com/dummy.png' });
38
+
39
+ const initialProps = {
40
+ doImageUploadRequest: doImageUploadRequestMock,
41
+ editing: true,
42
+ };
43
+
44
+ const { result } = renderHook(() => useMessageInputContext(), {
45
+ initialProps,
46
+ wrapper: Wrapper,
47
+ });
48
+
49
+ await act(async () => {
50
+ await result.current.uploadImage({ newImage: generateImageUploadPreview() });
51
+ });
52
+
53
+ expect(doImageUploadRequestMock).toHaveBeenCalledTimes(1);
54
+ });
55
+ });
@@ -0,0 +1,62 @@
1
+ import { renderHook } from '@testing-library/react-hooks';
2
+ import type { MessageType } from 'src/components';
3
+ import type { DefaultStreamChatGenerics } from 'src/types/types';
4
+
5
+ import {
6
+ generateFileAttachment,
7
+ generateImageAttachment,
8
+ } from '../../../mock-builders/generator/attachment';
9
+ import { generateMessage } from '../../../mock-builders/generator/message';
10
+
11
+ import { generateUser } from '../../../mock-builders/generator/user';
12
+ import { useMessageDetailsForState } from '../hooks/useMessageDetailsForState';
13
+
14
+ describe('useMessageDetailsForState', () => {
15
+ it.each([[{ message: true }], [{ initialValue: '', message: true }]])(
16
+ 'test state of useMessageDetailsForState when initialProps differ',
17
+ () => {
18
+ const { result } = renderHook(({ message }) => useMessageDetailsForState(message), {
19
+ initialProps: { message: true },
20
+ });
21
+
22
+ expect(result.current.text).toBe('');
23
+ },
24
+ );
25
+
26
+ it('showMoreOptions is true when initialValue and text is same', () => {
27
+ const { result } = renderHook(
28
+ ({ initialValue, message }) => useMessageDetailsForState(message, initialValue),
29
+ { initialProps: { initialValue: 'Dummy text', message: true } },
30
+ );
31
+
32
+ expect(result.current.showMoreOptions).toBe(true);
33
+ });
34
+
35
+ it('fileUploads, imageUploads and mentionedUsers are not empty when attachments are present in message', () => {
36
+ const { result } = renderHook(
37
+ ({ initialValue, message }) =>
38
+ useMessageDetailsForState(
39
+ message as unknown as MessageType<DefaultStreamChatGenerics> | boolean,
40
+ initialValue,
41
+ ),
42
+ {
43
+ initialProps: {
44
+ initialValue: '',
45
+ message: generateMessage({
46
+ attachments: [
47
+ generateFileAttachment(),
48
+ generateImageAttachment(),
49
+ generateFileAttachment({ type: 'video' }),
50
+ generateFileAttachment({ type: 'audio' }),
51
+ ],
52
+ mentioned_users: [generateUser()],
53
+ }),
54
+ },
55
+ },
56
+ );
57
+
58
+ expect(result.current.fileUploads.length).toBeGreaterThan(0);
59
+ expect(result.current.imageUploads.length).toBeGreaterThan(0);
60
+ expect(result.current.mentionedUsers.length).toBeGreaterThan(0);
61
+ });
62
+ });
@@ -12,14 +12,16 @@ export const generateAttachmentAction = (a) => ({
12
12
  export const generateVideoAttachment = (a) => ({
13
13
  asset_url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
14
14
  mime_type: 'video/mp4',
15
+ thumb_url:
16
+ 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg',
15
17
  title: uuidv4(),
16
- type: 'media',
18
+ type: 'video',
17
19
  ...a,
18
20
  });
19
21
 
20
22
  export const generateImageAttachment = (a) => ({
23
+ id: uuidv4(),
21
24
  image_url: uuidv4(),
22
- thumb_url: uuidv4(),
23
25
  title: uuidv4(),
24
26
  type: 'image',
25
27
  ...a,
@@ -6,5 +6,5 @@ import type { Attachment } from 'stream-chat';
6
6
  * @returns {string}
7
7
  */
8
8
  export function getUrlOfImageAttachment(image: Attachment) {
9
- return image.image_url || image.thumb_url || image.asset_url;
9
+ return image.image_url || image.asset_url;
10
10
  }
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.9.0-beta.2"
2
+ "version": "4.9.0"
3
3
  }