stream-chat-react-native-core 5.5.1 → 5.6.0-beta.1
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.
- package/lib/commonjs/components/Attachment/Gallery.js +21 -16
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/GalleryImage.js +19 -3
- package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +535 -149
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +6 -0
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js +4 -15
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +16 -20
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -4
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +21 -10
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +14 -12
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +9 -30
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActions.js +21 -19
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +28 -21
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +23 -16
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +39 -27
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
- package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
- package/lib/commonjs/components/index.js +1 -14
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +134 -86
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/hooks/useTranslatedMessage.js +1 -1
- package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/DB/mock.js +2 -2
- package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
- package/lib/commonjs/mock-builders/api/deleteMessage.js +20 -0
- package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -0
- package/lib/commonjs/mock-builders/api/deleteReaction.js +21 -0
- package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -0
- package/lib/commonjs/mock-builders/api/sendReaction.js +21 -0
- package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -0
- package/lib/commonjs/mock-builders/event/connectionChanged.js +2 -0
- package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/commonjs/store/QuickSqliteClient.js +40 -51
- package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
- package/lib/commonjs/store/apis/addPendingTask.js +37 -0
- package/lib/commonjs/store/apis/addPendingTask.js.map +1 -0
- package/lib/commonjs/store/apis/deleteMessage.js +26 -0
- package/lib/commonjs/store/apis/deleteMessage.js.map +1 -0
- package/lib/commonjs/store/apis/deletePendingTask.js +22 -0
- package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -0
- package/lib/commonjs/store/apis/deleteReaction.js +30 -0
- package/lib/commonjs/store/apis/deleteReaction.js.map +1 -0
- package/lib/commonjs/store/apis/getChannelMessages.js +3 -3
- package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
- package/lib/commonjs/store/apis/getChannels.js +1 -1
- package/lib/commonjs/store/apis/getChannels.js.map +1 -1
- package/lib/commonjs/store/apis/getPendingTasks.js +26 -0
- package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -0
- package/lib/commonjs/store/apis/index.js +13 -0
- package/lib/commonjs/store/apis/index.js.map +1 -1
- package/lib/commonjs/store/apis/insertReaction.js +28 -0
- package/lib/commonjs/store/apis/insertReaction.js.map +1 -0
- package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
- package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
- package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapMessageToStorable.js +3 -1
- package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToTask.js +23 -0
- package/lib/commonjs/store/mappers/mapStorableToTask.js.map +1 -0
- package/lib/commonjs/store/mappers/mapTaskToStorable.js +18 -0
- package/lib/commonjs/store/mappers/mapTaskToStorable.js.map +1 -0
- package/lib/commonjs/store/schema.js +11 -0
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js +24 -0
- package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -0
- package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +1 -1
- package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +8 -1
- package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +2 -2
- package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +1 -1
- package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -1
- package/lib/commonjs/utils/DBSyncManager.js +436 -0
- package/lib/commonjs/utils/DBSyncManager.js.map +1 -0
- package/lib/commonjs/utils/addReactionToLocalState.js +92 -0
- package/lib/commonjs/utils/addReactionToLocalState.js.map +1 -0
- package/lib/commonjs/utils/removeReactionFromLocalState.js +39 -0
- package/lib/commonjs/utils/removeReactionFromLocalState.js.map +1 -0
- package/lib/{module/components/Message → commonjs}/utils/removeReservedFields.js +1 -1
- package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
- package/lib/commonjs/utils/utils.js +9 -3
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +21 -16
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/GalleryImage.js +19 -3
- package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +535 -149
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +6 -0
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelList.js +4 -15
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +16 -20
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -4
- package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/module/components/Message/Message.js +21 -10
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageFooter.js +14 -12
- package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js +9 -30
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActions.js +21 -19
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +28 -21
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js +23 -16
- package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +39 -27
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/SendButton.js +1 -1
- package/lib/module/components/MessageInput/SendButton.js.map +1 -1
- package/lib/module/components/index.js +1 -14
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js +2 -2
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +134 -86
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/hooks/useTranslatedMessage.js +1 -1
- package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/module/mock-builders/DB/mock.js +2 -2
- package/lib/module/mock-builders/DB/mock.js.map +1 -1
- package/lib/module/mock-builders/api/deleteMessage.js +20 -0
- package/lib/module/mock-builders/api/deleteMessage.js.map +1 -0
- package/lib/module/mock-builders/api/deleteReaction.js +21 -0
- package/lib/module/mock-builders/api/deleteReaction.js.map +1 -0
- package/lib/module/mock-builders/api/sendReaction.js +21 -0
- package/lib/module/mock-builders/api/sendReaction.js.map +1 -0
- package/lib/module/mock-builders/event/connectionChanged.js +2 -0
- package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/module/store/QuickSqliteClient.js +40 -51
- package/lib/module/store/QuickSqliteClient.js.map +1 -1
- package/lib/module/store/apis/addPendingTask.js +37 -0
- package/lib/module/store/apis/addPendingTask.js.map +1 -0
- package/lib/module/store/apis/deleteMessage.js +26 -0
- package/lib/module/store/apis/deleteMessage.js.map +1 -0
- package/lib/module/store/apis/deletePendingTask.js +22 -0
- package/lib/module/store/apis/deletePendingTask.js.map +1 -0
- package/lib/module/store/apis/deleteReaction.js +30 -0
- package/lib/module/store/apis/deleteReaction.js.map +1 -0
- package/lib/module/store/apis/getChannelMessages.js +3 -3
- package/lib/module/store/apis/getChannelMessages.js.map +1 -1
- package/lib/module/store/apis/getChannels.js +1 -1
- package/lib/module/store/apis/getChannels.js.map +1 -1
- package/lib/module/store/apis/getPendingTasks.js +26 -0
- package/lib/module/store/apis/getPendingTasks.js.map +1 -0
- package/lib/module/store/apis/index.js +13 -0
- package/lib/module/store/apis/index.js.map +1 -1
- package/lib/module/store/apis/insertReaction.js +28 -0
- package/lib/module/store/apis/insertReaction.js.map +1 -0
- package/lib/module/store/apis/updateMessage.js.map +1 -1
- package/lib/module/store/apis/updateReaction.js.map +1 -1
- package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapMessageToStorable.js +3 -1
- package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToTask.js +23 -0
- package/lib/module/store/mappers/mapStorableToTask.js.map +1 -0
- package/lib/module/store/mappers/mapTaskToStorable.js +18 -0
- package/lib/module/store/mappers/mapTaskToStorable.js.map +1 -0
- package/lib/module/store/schema.js +11 -0
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/store/sqlite-utils/appendOrderByClause.js +24 -0
- package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -0
- package/lib/module/store/sqlite-utils/createCreateTableQuery.js +1 -1
- package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createSelectQuery.js +8 -1
- package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createUpdateQuery.js +2 -2
- package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createUpsertQuery.js +1 -1
- package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -1
- package/lib/module/utils/DBSyncManager.js +436 -0
- package/lib/module/utils/DBSyncManager.js.map +1 -0
- package/lib/module/utils/addReactionToLocalState.js +92 -0
- package/lib/module/utils/addReactionToLocalState.js.map +1 -0
- package/lib/module/utils/removeReactionFromLocalState.js +39 -0
- package/lib/module/utils/removeReactionFromLocalState.js.map +1 -0
- package/lib/{commonjs/components/Message → module}/utils/removeReservedFields.js +1 -1
- package/lib/module/utils/removeReservedFields.js.map +1 -0
- package/lib/module/utils/utils.js +9 -3
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
- package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +2 -1
- package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
- package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -1
- package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +2 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +2 -1
- package/lib/typescript/components/index.d.ts +1 -2
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -2
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -0
- package/lib/typescript/store/apis/addPendingTask.d.ts +2 -0
- package/lib/typescript/store/apis/deleteMessage.d.ts +4 -0
- package/lib/typescript/store/apis/deletePendingTask.d.ts +3 -0
- package/lib/typescript/store/apis/deleteReaction.d.ts +6 -0
- package/lib/typescript/store/apis/getChannelMessages.d.ts +1 -1
- package/lib/typescript/store/apis/getPendingTasks.d.ts +3 -0
- package/lib/typescript/store/apis/index.d.ts +1 -0
- package/lib/typescript/store/apis/insertReaction.d.ts +6 -0
- package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
- package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
- package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -1
- package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
- package/lib/typescript/store/mappers/mapStorableToTask.d.ts +2 -0
- package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +26 -0
- package/lib/typescript/store/schema.d.ts +12 -1
- package/lib/typescript/store/sqlite-utils/appendOrderByClause.d.ts +3 -0
- package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +1 -1
- package/lib/typescript/store/types.d.ts +21 -0
- package/lib/typescript/types/types.d.ts +3 -1
- package/lib/typescript/utils/DBSyncManager.d.ts +47 -0
- package/lib/typescript/utils/addReactionToLocalState.d.ts +9 -0
- package/lib/typescript/utils/removeReactionFromLocalState.d.ts +8 -0
- package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
- package/lib/typescript/utils/utils.d.ts +3 -3
- package/package.json +4 -3
- package/src/__tests__/offline-feature.test.js +19 -2
- package/src/__tests__/optimistic-update.test.js +368 -0
- package/src/components/Attachment/Gallery.tsx +5 -1
- package/src/components/Attachment/GalleryImage.tsx +16 -2
- package/src/components/Channel/Channel.tsx +266 -57
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +6 -0
- package/src/components/ChannelList/ChannelList.tsx +2 -10
- package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +0 -1
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +76 -26
- package/src/components/Chat/Chat.tsx +5 -9
- package/src/components/Chat/__tests__/Chat.test.js +1 -1
- package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
- package/src/components/Message/Message.tsx +18 -2
- package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -1
- package/src/components/Message/hooks/useMessageActionHandlers.ts +10 -21
- package/src/components/Message/hooks/useMessageActions.tsx +10 -5
- package/src/components/MessageInput/FileUploadPreview.tsx +7 -2
- package/src/components/MessageInput/ImageUploadPreview.tsx +7 -3
- package/src/components/MessageInput/MessageInput.tsx +17 -3
- package/src/components/MessageInput/SendButton.tsx +1 -1
- package/src/components/index.ts +1 -2
- package/src/contexts/chatContext/ChatContext.tsx +1 -2
- package/src/contexts/messageInputContext/MessageInputContext.tsx +95 -57
- package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +29 -3
- package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
- package/src/contexts/messagesContext/MessagesContext.tsx +4 -1
- package/src/hooks/useTranslatedMessage.ts +1 -1
- package/src/mock-builders/DB/mock.ts +2 -2
- package/src/mock-builders/api/deleteMessage.js +18 -0
- package/src/mock-builders/api/deleteReaction.js +19 -0
- package/src/mock-builders/api/sendReaction.tsx +19 -0
- package/src/mock-builders/event/connectionChanged.js +2 -1
- package/src/store/QuickSqliteClient.ts +39 -37
- package/src/store/apis/addPendingTask.ts +24 -0
- package/src/store/apis/deleteMessage.ts +13 -0
- package/src/store/apis/deletePendingTask.ts +12 -0
- package/src/store/apis/deleteReaction.ts +26 -0
- package/src/store/apis/getChannelMessages.ts +1 -1
- package/src/store/apis/getChannels.ts +2 -2
- package/src/store/apis/getPendingTasks.ts +13 -0
- package/src/store/apis/index.ts +1 -0
- package/src/store/apis/insertReaction.ts +29 -0
- package/src/store/apis/updateMessage.ts +2 -2
- package/src/store/apis/updateReaction.ts +2 -2
- package/src/store/mappers/mapDateTimeToStorable.ts +1 -1
- package/src/store/mappers/mapMessageToStorable.ts +8 -2
- package/src/store/mappers/mapStorableToTask.ts +13 -0
- package/src/store/mappers/mapTaskToStorable.ts +7 -0
- package/src/store/schema.ts +25 -1
- package/src/store/sqlite-utils/appendOrderByClause.ts +24 -0
- package/src/store/sqlite-utils/createCreateTableQuery.ts +2 -2
- package/src/store/sqlite-utils/createSelectQuery.ts +4 -1
- package/src/store/sqlite-utils/createUpdateQuery.ts +3 -2
- package/src/store/sqlite-utils/createUpsertQuery.ts +1 -1
- package/src/store/types.ts +28 -0
- package/src/types/types.ts +4 -1
- package/src/utils/DBSyncManager.ts +222 -0
- package/src/utils/addReactionToLocalState.ts +87 -0
- package/src/utils/removeReactionFromLocalState.ts +39 -0
- package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
- package/src/utils/utils.ts +14 -5
- package/src/version.json +1 -1
- package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js +0 -171
- package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
- package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
- package/lib/module/components/Chat/hooks/useConnectionRecovered.js +0 -171
- package/lib/module/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
- package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
- package/lib/typescript/components/Chat/hooks/useConnectionRecovered.d.ts +0 -10
- package/src/components/Chat/hooks/useConnectionRecovered.ts +0 -92
|
@@ -3,10 +3,9 @@ import { Image, Platform } from 'react-native';
|
|
|
3
3
|
|
|
4
4
|
import Dayjs from 'dayjs';
|
|
5
5
|
|
|
6
|
-
import type { Channel } from 'stream-chat';
|
|
6
|
+
import type { Channel, StreamChat } from 'stream-chat';
|
|
7
7
|
|
|
8
8
|
import { useAppSettings } from './hooks/useAppSettings';
|
|
9
|
-
import { useConnectionRecovered } from './hooks/useConnectionRecovered';
|
|
10
9
|
import { useCreateChatContext } from './hooks/useCreateChatContext';
|
|
11
10
|
import { useIsOnline } from './hooks/useIsOnline';
|
|
12
11
|
import { useMutedUsers } from './hooks/useMutedUsers';
|
|
@@ -30,6 +29,7 @@ import init from '../../init';
|
|
|
30
29
|
import { SDK } from '../../native';
|
|
31
30
|
import { QuickSqliteClient } from '../../store/QuickSqliteClient';
|
|
32
31
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
32
|
+
import { DBSyncManager } from '../../utils/DBSyncManager';
|
|
33
33
|
import type { Streami18n } from '../../utils/Streami18n';
|
|
34
34
|
import { version } from '../../version.json';
|
|
35
35
|
|
|
@@ -197,10 +197,6 @@ const ChatWithContext = <
|
|
|
197
197
|
const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);
|
|
198
198
|
|
|
199
199
|
const appSettings = useAppSettings(client, isOnline);
|
|
200
|
-
const { subscribeConnectionRecoveredCallback } = useConnectionRecovered<StreamChatGenerics>({
|
|
201
|
-
client,
|
|
202
|
-
enableOfflineSupport,
|
|
203
|
-
});
|
|
204
200
|
|
|
205
201
|
const chatContext = useCreateChatContext({
|
|
206
202
|
appSettings,
|
|
@@ -212,14 +208,14 @@ const ChatWithContext = <
|
|
|
212
208
|
isOnline,
|
|
213
209
|
mutedUsers,
|
|
214
210
|
setActiveChannel,
|
|
215
|
-
subscribeConnectionRecoveredCallback,
|
|
216
211
|
});
|
|
217
212
|
|
|
218
213
|
useEffect(() => {
|
|
219
|
-
if (enableOfflineSupport) {
|
|
214
|
+
if (client.user?.id && enableOfflineSupport) {
|
|
220
215
|
QuickSqliteClient.initializeDatabase();
|
|
216
|
+
DBSyncManager.init(client as unknown as StreamChat);
|
|
221
217
|
}
|
|
222
|
-
}, []);
|
|
218
|
+
}, [client?.user?.id]);
|
|
223
219
|
|
|
224
220
|
useSyncDatabase({
|
|
225
221
|
client,
|
|
@@ -55,7 +55,7 @@ describe('Chat', () => {
|
|
|
55
55
|
await waitFor(() => expect(netInfoFetch).toHaveBeenCalledTimes(1));
|
|
56
56
|
|
|
57
57
|
const { connectionRecovering } = context;
|
|
58
|
-
act(() => dispatchConnectionChangedEvent(chatClient));
|
|
58
|
+
act(() => dispatchConnectionChangedEvent(chatClient, false));
|
|
59
59
|
await waitFor(() => {
|
|
60
60
|
expect(context.connectionRecovering).toStrictEqual(!connectionRecovering);
|
|
61
61
|
expect(context.isOnline).toBeFalsy();
|
|
@@ -15,7 +15,6 @@ export const useCreateChatContext = <
|
|
|
15
15
|
isOnline,
|
|
16
16
|
mutedUsers,
|
|
17
17
|
setActiveChannel,
|
|
18
|
-
subscribeConnectionRecoveredCallback,
|
|
19
18
|
}: ChatContextValue<StreamChatGenerics>) => {
|
|
20
19
|
const channelId = channel?.id;
|
|
21
20
|
const clientValues = client
|
|
@@ -36,7 +35,6 @@ export const useCreateChatContext = <
|
|
|
36
35
|
isOnline,
|
|
37
36
|
mutedUsers,
|
|
38
37
|
setActiveChannel,
|
|
39
|
-
subscribeConnectionRecoveredCallback,
|
|
40
38
|
}),
|
|
41
39
|
[channelId, clientValues, connectionRecovering, isOnline, mutedUsersLength],
|
|
42
40
|
);
|
|
@@ -123,6 +123,8 @@ export type MessagePropsWithContext<
|
|
|
123
123
|
Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &
|
|
124
124
|
Pick<
|
|
125
125
|
MessagesContextValue<StreamChatGenerics>,
|
|
126
|
+
| 'sendReaction'
|
|
127
|
+
| 'deleteMessage'
|
|
126
128
|
| 'dismissKeyboardOnMessageTouch'
|
|
127
129
|
| 'forceAlignMessages'
|
|
128
130
|
| 'handleBlock'
|
|
@@ -145,6 +147,7 @@ export type MessagePropsWithContext<
|
|
|
145
147
|
| 'onPressMessage'
|
|
146
148
|
| 'OverlayReactionList'
|
|
147
149
|
| 'removeMessage'
|
|
150
|
+
| 'deleteReaction'
|
|
148
151
|
| 'retrySendMessage'
|
|
149
152
|
| 'selectReaction'
|
|
150
153
|
| 'setEditingState'
|
|
@@ -217,7 +220,9 @@ const MessageWithContext = <
|
|
|
217
220
|
const isMessageTypeDeleted = props.message.type === 'deleted';
|
|
218
221
|
|
|
219
222
|
const {
|
|
223
|
+
sendReaction,
|
|
220
224
|
channel,
|
|
225
|
+
deleteMessage: deleteMessageFromContext,
|
|
221
226
|
disabled,
|
|
222
227
|
dismissKeyboard,
|
|
223
228
|
dismissKeyboardOnMessageTouch,
|
|
@@ -256,6 +261,7 @@ const MessageWithContext = <
|
|
|
256
261
|
OverlayReactionList,
|
|
257
262
|
preventPress,
|
|
258
263
|
removeMessage,
|
|
264
|
+
deleteReaction,
|
|
259
265
|
retrySendMessage,
|
|
260
266
|
selectReaction,
|
|
261
267
|
setData,
|
|
@@ -460,14 +466,15 @@ const MessageWithContext = <
|
|
|
460
466
|
} = useMessageActionHandlers({
|
|
461
467
|
channel,
|
|
462
468
|
client,
|
|
469
|
+
deleteMessage: deleteMessageFromContext,
|
|
470
|
+
deleteReaction,
|
|
463
471
|
enforceUniqueReaction,
|
|
464
472
|
message,
|
|
465
|
-
removeMessage,
|
|
466
473
|
retrySendMessage,
|
|
474
|
+
sendReaction,
|
|
467
475
|
setEditingState,
|
|
468
476
|
setQuotedMessageState,
|
|
469
477
|
supportedReactions,
|
|
470
|
-
updateMessage,
|
|
471
478
|
});
|
|
472
479
|
|
|
473
480
|
const {
|
|
@@ -486,6 +493,8 @@ const MessageWithContext = <
|
|
|
486
493
|
} = useMessageActions({
|
|
487
494
|
channel,
|
|
488
495
|
client,
|
|
496
|
+
deleteMessage: deleteMessageFromContext,
|
|
497
|
+
deleteReaction,
|
|
489
498
|
enforceUniqueReaction,
|
|
490
499
|
handleBlock,
|
|
491
500
|
handleCopy,
|
|
@@ -504,6 +513,7 @@ const MessageWithContext = <
|
|
|
504
513
|
removeMessage,
|
|
505
514
|
retrySendMessage,
|
|
506
515
|
selectReaction,
|
|
516
|
+
sendReaction,
|
|
507
517
|
setEditingState,
|
|
508
518
|
setOverlay,
|
|
509
519
|
setQuotedMessageState,
|
|
@@ -722,6 +732,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
722
732
|
const {
|
|
723
733
|
chatContext: { mutedUsers: prevMutedUsers },
|
|
724
734
|
goToMessage: prevGoToMessage,
|
|
735
|
+
groupStyles: prevGroupStyles,
|
|
725
736
|
isAttachmentEqual,
|
|
726
737
|
isTargetedMessage: prevIsTargetedMessage,
|
|
727
738
|
lastReceivedId: prevLastReceivedId,
|
|
@@ -733,6 +744,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
733
744
|
const {
|
|
734
745
|
chatContext: { mutedUsers: nextMutedUsers },
|
|
735
746
|
goToMessage: nextGoToMessage,
|
|
747
|
+
groupStyles: nextGroupStyles,
|
|
736
748
|
isTargetedMessage: nextIsTargetedMessage,
|
|
737
749
|
lastReceivedId: nextLastReceivedId,
|
|
738
750
|
members: nextMembers,
|
|
@@ -761,6 +773,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
761
773
|
|
|
762
774
|
if (goToMessageChangedAndMatters) return false;
|
|
763
775
|
|
|
776
|
+
const groupStylesEqual =
|
|
777
|
+
prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];
|
|
778
|
+
if (!groupStylesEqual) return false;
|
|
779
|
+
|
|
764
780
|
const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';
|
|
765
781
|
const isNextMessageTypeDeleted = nextMessage.type === 'deleted';
|
|
766
782
|
|
|
@@ -21,6 +21,7 @@ import { useTranslationContext } from '../../../contexts/translationContext/Tran
|
|
|
21
21
|
import { Eye } from '../../../icons';
|
|
22
22
|
|
|
23
23
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
24
|
+
import { MessageStatusTypes } from '../../../utils/utils';
|
|
24
25
|
import type { MessageType } from '../../MessageList/hooks/useMessageList';
|
|
25
26
|
|
|
26
27
|
type MessageFooterComponentProps = {
|
|
@@ -109,7 +110,7 @@ const MessageFooterWithContext = <
|
|
|
109
110
|
);
|
|
110
111
|
}
|
|
111
112
|
|
|
112
|
-
if (lastGroupMessage === false) {
|
|
113
|
+
if (lastGroupMessage === false && message.status === MessageStatusTypes.RECEIVED) {
|
|
113
114
|
return null;
|
|
114
115
|
}
|
|
115
116
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MessageResponse
|
|
1
|
+
import type { MessageResponse } from 'stream-chat';
|
|
2
2
|
|
|
3
3
|
import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
|
|
4
4
|
import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
|
|
@@ -9,29 +9,29 @@ import type {
|
|
|
9
9
|
import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
10
10
|
|
|
11
11
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
12
|
-
import { MessageStatusTypes } from '../../../utils/utils';
|
|
13
12
|
|
|
14
13
|
export const useMessageActionHandlers = <
|
|
15
14
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
16
15
|
>({
|
|
17
16
|
channel,
|
|
18
17
|
client,
|
|
19
|
-
|
|
18
|
+
deleteMessage,
|
|
19
|
+
deleteReaction,
|
|
20
20
|
message,
|
|
21
|
-
removeMessage,
|
|
22
21
|
retrySendMessage,
|
|
22
|
+
sendReaction,
|
|
23
23
|
setEditingState,
|
|
24
24
|
setQuotedMessageState,
|
|
25
25
|
supportedReactions,
|
|
26
|
-
updateMessage,
|
|
27
26
|
}: Pick<
|
|
28
27
|
MessagesContextValue<StreamChatGenerics>,
|
|
29
|
-
| '
|
|
28
|
+
| 'sendReaction'
|
|
29
|
+
| 'deleteMessage'
|
|
30
|
+
| 'deleteReaction'
|
|
30
31
|
| 'retrySendMessage'
|
|
31
32
|
| 'setEditingState'
|
|
32
33
|
| 'setQuotedMessageState'
|
|
33
34
|
| 'supportedReactions'
|
|
34
|
-
| 'updateMessage'
|
|
35
35
|
> &
|
|
36
36
|
Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &
|
|
37
37
|
Pick<ChatContextValue<StreamChatGenerics>, 'client'> &
|
|
@@ -48,12 +48,7 @@ export const useMessageActionHandlers = <
|
|
|
48
48
|
);
|
|
49
49
|
|
|
50
50
|
const handleDeleteMessage = async () => {
|
|
51
|
-
|
|
52
|
-
removeMessage(message);
|
|
53
|
-
} else {
|
|
54
|
-
const data = await client.deleteMessage(message.id);
|
|
55
|
-
updateMessage(data.message);
|
|
56
|
-
}
|
|
51
|
+
await deleteMessage(message as MessageResponse<StreamChatGenerics>);
|
|
57
52
|
};
|
|
58
53
|
|
|
59
54
|
const handleToggleMuteUser = async () => {
|
|
@@ -128,15 +123,9 @@ export const useMessageActionHandlers = <
|
|
|
128
123
|
try {
|
|
129
124
|
if (channel && messageId) {
|
|
130
125
|
if (ownReaction) {
|
|
131
|
-
await
|
|
126
|
+
await deleteReaction(reactionType, messageId);
|
|
132
127
|
} else {
|
|
133
|
-
await
|
|
134
|
-
messageId,
|
|
135
|
-
{
|
|
136
|
-
type: reactionType,
|
|
137
|
-
} as Reaction<StreamChatGenerics>,
|
|
138
|
-
{ enforce_unique: enforceUniqueReaction },
|
|
139
|
-
);
|
|
128
|
+
await sendReaction(reactionType, messageId);
|
|
140
129
|
}
|
|
141
130
|
}
|
|
142
131
|
} catch (err) {
|
|
@@ -26,17 +26,19 @@ import {
|
|
|
26
26
|
} from '../../../icons';
|
|
27
27
|
import { setClipboardString } from '../../../native';
|
|
28
28
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
29
|
+
import { removeReservedFields } from '../../../utils/removeReservedFields';
|
|
29
30
|
import { MessageStatusTypes } from '../../../utils/utils';
|
|
30
31
|
|
|
31
32
|
import type { MessageType } from '../../MessageList/hooks/useMessageList';
|
|
32
33
|
import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
|
|
33
|
-
import { removeReservedFields } from '../utils/removeReservedFields';
|
|
34
34
|
|
|
35
35
|
export const useMessageActions = <
|
|
36
36
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
37
37
|
>({
|
|
38
38
|
channel,
|
|
39
39
|
client,
|
|
40
|
+
deleteMessage: deleteMessageFromContext,
|
|
41
|
+
deleteReaction,
|
|
40
42
|
enforceUniqueReaction,
|
|
41
43
|
handleBlock,
|
|
42
44
|
handleCopy,
|
|
@@ -52,17 +54,18 @@ export const useMessageActions = <
|
|
|
52
54
|
message,
|
|
53
55
|
onThreadSelect,
|
|
54
56
|
openThread,
|
|
55
|
-
removeMessage,
|
|
56
57
|
retrySendMessage,
|
|
57
58
|
selectReaction,
|
|
59
|
+
sendReaction,
|
|
58
60
|
setEditingState,
|
|
59
61
|
setOverlay,
|
|
60
62
|
setQuotedMessageState,
|
|
61
63
|
supportedReactions,
|
|
62
64
|
t,
|
|
63
|
-
updateMessage,
|
|
64
65
|
}: Pick<
|
|
65
66
|
MessagesContextValue<StreamChatGenerics>,
|
|
67
|
+
| 'deleteMessage'
|
|
68
|
+
| 'sendReaction'
|
|
66
69
|
| 'handleBlock'
|
|
67
70
|
| 'handleCopy'
|
|
68
71
|
| 'handleDelete'
|
|
@@ -75,6 +78,7 @@ export const useMessageActions = <
|
|
|
75
78
|
| 'handleReaction'
|
|
76
79
|
| 'handleThreadReply'
|
|
77
80
|
| 'removeMessage'
|
|
81
|
+
| 'deleteReaction'
|
|
78
82
|
| 'retrySendMessage'
|
|
79
83
|
| 'setEditingState'
|
|
80
84
|
| 'setQuotedMessageState'
|
|
@@ -107,14 +111,15 @@ export const useMessageActions = <
|
|
|
107
111
|
} = useMessageActionHandlers({
|
|
108
112
|
channel,
|
|
109
113
|
client,
|
|
114
|
+
deleteMessage: deleteMessageFromContext,
|
|
115
|
+
deleteReaction,
|
|
110
116
|
enforceUniqueReaction,
|
|
111
117
|
message,
|
|
112
|
-
removeMessage,
|
|
113
118
|
retrySendMessage,
|
|
119
|
+
sendReaction,
|
|
114
120
|
setEditingState,
|
|
115
121
|
setQuotedMessageState,
|
|
116
122
|
supportedReactions,
|
|
117
|
-
updateMessage,
|
|
118
123
|
});
|
|
119
124
|
|
|
120
125
|
const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;
|
|
@@ -3,6 +3,7 @@ import { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from
|
|
|
3
3
|
|
|
4
4
|
import { UploadProgressIndicator } from './UploadProgressIndicator';
|
|
5
5
|
|
|
6
|
+
import { ChatContextValue, useChatContext } from '../../contexts';
|
|
6
7
|
import {
|
|
7
8
|
FileUpload,
|
|
8
9
|
MessageInputContextValue,
|
|
@@ -126,7 +127,8 @@ type FileUploadPreviewPropsWithContext<
|
|
|
126
127
|
MessageInputContextValue<StreamChatGenerics>,
|
|
127
128
|
'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'
|
|
128
129
|
> &
|
|
129
|
-
Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'
|
|
130
|
+
Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> &
|
|
131
|
+
Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
|
|
130
132
|
|
|
131
133
|
const FileUploadPreviewWithContext = <
|
|
132
134
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
@@ -135,6 +137,7 @@ const FileUploadPreviewWithContext = <
|
|
|
135
137
|
) => {
|
|
136
138
|
const {
|
|
137
139
|
AudioAttachment,
|
|
140
|
+
enableOfflineSupport,
|
|
138
141
|
FileAttachmentIcon,
|
|
139
142
|
fileUploads,
|
|
140
143
|
removeFile,
|
|
@@ -211,7 +214,7 @@ const FileUploadPreviewWithContext = <
|
|
|
211
214
|
} = useTheme();
|
|
212
215
|
|
|
213
216
|
const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {
|
|
214
|
-
const indicatorType = getIndicatorTypeForFileState(item.state);
|
|
217
|
+
const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);
|
|
215
218
|
|
|
216
219
|
const lastIndexOfDot = item.file.name.lastIndexOf('.');
|
|
217
220
|
|
|
@@ -389,6 +392,7 @@ export const FileUploadPreview = <
|
|
|
389
392
|
>(
|
|
390
393
|
props: FileUploadPreviewProps<StreamChatGenerics>,
|
|
391
394
|
) => {
|
|
395
|
+
const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();
|
|
392
396
|
const { fileUploads, removeFile, setFileUploads, uploadFile } =
|
|
393
397
|
useMessageInputContext<StreamChatGenerics>();
|
|
394
398
|
const { AudioAttachment, FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();
|
|
@@ -403,6 +407,7 @@ export const FileUploadPreview = <
|
|
|
403
407
|
setFileUploads,
|
|
404
408
|
uploadFile,
|
|
405
409
|
}}
|
|
410
|
+
{...{ enableOfflineSupport }}
|
|
406
411
|
{...props}
|
|
407
412
|
/>
|
|
408
413
|
);
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
|
|
12
12
|
import { UploadProgressIndicator } from './UploadProgressIndicator';
|
|
13
13
|
|
|
14
|
+
import { ChatContextValue, useChatContext } from '../../contexts';
|
|
14
15
|
import {
|
|
15
16
|
ImageUpload,
|
|
16
17
|
MessageInputContextValue,
|
|
@@ -78,7 +79,8 @@ type ImageUploadPreviewPropsWithContext<
|
|
|
78
79
|
> = Pick<
|
|
79
80
|
MessageInputContextValue<StreamChatGenerics>,
|
|
80
81
|
'imageUploads' | 'removeImage' | 'uploadImage'
|
|
81
|
-
|
|
82
|
+
> &
|
|
83
|
+
Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
|
|
82
84
|
|
|
83
85
|
export type ImageUploadPreviewProps<
|
|
84
86
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
@@ -91,7 +93,7 @@ const ImageUploadPreviewWithContext = <
|
|
|
91
93
|
>(
|
|
92
94
|
props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,
|
|
93
95
|
) => {
|
|
94
|
-
const { imageUploads, removeImage, uploadImage } = props;
|
|
96
|
+
const { enableOfflineSupport, imageUploads, removeImage, uploadImage } = props;
|
|
95
97
|
|
|
96
98
|
const {
|
|
97
99
|
theme: {
|
|
@@ -129,7 +131,7 @@ const ImageUploadPreviewWithContext = <
|
|
|
129
131
|
};
|
|
130
132
|
|
|
131
133
|
const renderItem = ({ index, item }: ImageUploadPreviewItem) => {
|
|
132
|
-
const indicatorType = getIndicatorTypeForFileState(item.state);
|
|
134
|
+
const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);
|
|
133
135
|
const itemMarginForIndex = index === imageUploads.length - 1 ? { marginRight: 8 } : {};
|
|
134
136
|
|
|
135
137
|
return (
|
|
@@ -224,11 +226,13 @@ export const ImageUploadPreview = <
|
|
|
224
226
|
>(
|
|
225
227
|
props: ImageUploadPreviewProps<StreamChatGenerics>,
|
|
226
228
|
) => {
|
|
229
|
+
const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();
|
|
227
230
|
const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();
|
|
228
231
|
|
|
229
232
|
return (
|
|
230
233
|
<MemoizedImageUploadPreviewWithContext
|
|
231
234
|
{...{ imageUploads, removeImage, uploadImage }}
|
|
235
|
+
{...{ enableOfflineSupport }}
|
|
232
236
|
{...props}
|
|
233
237
|
/>
|
|
234
238
|
);
|
|
@@ -5,6 +5,7 @@ import type { UserResponse } from 'stream-chat';
|
|
|
5
5
|
|
|
6
6
|
import { useCountdown } from './hooks/useCountdown';
|
|
7
7
|
|
|
8
|
+
import { ChatContextValue, useChatContext } from '../../contexts';
|
|
8
9
|
import { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';
|
|
9
10
|
import {
|
|
10
11
|
ChannelContextValue,
|
|
@@ -78,7 +79,8 @@ const styles = StyleSheet.create({
|
|
|
78
79
|
|
|
79
80
|
type MessageInputPropsWithContext<
|
|
80
81
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
81
|
-
> = Pick<
|
|
82
|
+
> = Pick<ChatContextValue<StreamChatGenerics>, 'isOnline'> &
|
|
83
|
+
Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &
|
|
82
84
|
Pick<
|
|
83
85
|
MessageInputContextValue<StreamChatGenerics>,
|
|
84
86
|
| 'additionalTextInputProps'
|
|
@@ -159,6 +161,7 @@ const MessageInputWithContext = <
|
|
|
159
161
|
InputEditingStateHeader,
|
|
160
162
|
InputGiphySearch,
|
|
161
163
|
InputReplyStateHeader,
|
|
164
|
+
isOnline,
|
|
162
165
|
isValidMessage,
|
|
163
166
|
maxNumberOfFiles,
|
|
164
167
|
members,
|
|
@@ -526,7 +529,7 @@ const MessageInputWithContext = <
|
|
|
526
529
|
) : null}
|
|
527
530
|
{fileUploads.length ? <FileUploadPreview /> : null}
|
|
528
531
|
{giphyActive ? (
|
|
529
|
-
<InputGiphySearch />
|
|
532
|
+
<InputGiphySearch disabled={!isOnline} />
|
|
530
533
|
) : (
|
|
531
534
|
<View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>
|
|
532
535
|
<AutoCompleteInput<StreamChatGenerics>
|
|
@@ -540,7 +543,11 @@ const MessageInputWithContext = <
|
|
|
540
543
|
{cooldownRemainingSeconds ? (
|
|
541
544
|
<CooldownTimer seconds={cooldownRemainingSeconds} />
|
|
542
545
|
) : (
|
|
543
|
-
<SendButton
|
|
546
|
+
<SendButton
|
|
547
|
+
disabled={
|
|
548
|
+
disabled || sending.current || !isValidMessage() || (giphyActive && !isOnline)
|
|
549
|
+
}
|
|
550
|
+
/>
|
|
544
551
|
)}
|
|
545
552
|
</View>
|
|
546
553
|
</>
|
|
@@ -598,6 +605,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
598
605
|
fileUploads: prevFileUploads,
|
|
599
606
|
giphyActive: prevGiphyActive,
|
|
600
607
|
imageUploads: prevImageUploads,
|
|
608
|
+
isOnline: prevIsOnline,
|
|
601
609
|
isValidMessage: prevIsValidMessage,
|
|
602
610
|
mentionedUsers: prevMentionedUsers,
|
|
603
611
|
quotedMessage: prevQuotedMessage,
|
|
@@ -616,6 +624,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
616
624
|
fileUploads: nextFileUploads,
|
|
617
625
|
giphyActive: nextGiphyActive,
|
|
618
626
|
imageUploads: nextImageUploads,
|
|
627
|
+
isOnline: nextIsOnline,
|
|
619
628
|
isValidMessage: nextIsValidMessage,
|
|
620
629
|
mentionedUsers: nextMentionedUsers,
|
|
621
630
|
quotedMessage: nextQuotedMessage,
|
|
@@ -661,6 +670,9 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
661
670
|
const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;
|
|
662
671
|
if (!showMoreOptionsEqual) return false;
|
|
663
672
|
|
|
673
|
+
const isOnlineEqual = prevIsOnline === nextIsOnline;
|
|
674
|
+
if (!isOnlineEqual) return false;
|
|
675
|
+
|
|
664
676
|
const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();
|
|
665
677
|
if (!isValidMessageEqual) return false;
|
|
666
678
|
|
|
@@ -719,6 +731,7 @@ export const MessageInput = <
|
|
|
719
731
|
>(
|
|
720
732
|
props: MessageInputProps<StreamChatGenerics>,
|
|
721
733
|
) => {
|
|
734
|
+
const { isOnline } = useChatContext();
|
|
722
735
|
const ownCapabilities = useOwnCapabilitiesContext();
|
|
723
736
|
|
|
724
737
|
const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();
|
|
@@ -809,6 +822,7 @@ export const MessageInput = <
|
|
|
809
822
|
InputEditingStateHeader,
|
|
810
823
|
InputGiphySearch,
|
|
811
824
|
InputReplyStateHeader,
|
|
825
|
+
isOnline,
|
|
812
826
|
isValidMessage,
|
|
813
827
|
maxNumberOfFiles,
|
|
814
828
|
members,
|
|
@@ -38,7 +38,7 @@ const SendButtonWithContext = <
|
|
|
38
38
|
style={[sendButton]}
|
|
39
39
|
testID='send-button'
|
|
40
40
|
>
|
|
41
|
-
{giphyActive && <Search pathFill={accent_blue} />}
|
|
41
|
+
{giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} />}
|
|
42
42
|
{!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} />}
|
|
43
43
|
{!giphyActive && !disabled && <SendUp pathFill={accent_blue} />}
|
|
44
44
|
</TouchableOpacity>
|
package/src/components/index.ts
CHANGED
|
@@ -72,7 +72,6 @@ export * from './Chat/Chat';
|
|
|
72
72
|
export * from './Chat/hooks/useCreateChatContext';
|
|
73
73
|
export * from './Chat/hooks/useIsOnline';
|
|
74
74
|
export * from './Chat/hooks/useMutedUsers';
|
|
75
|
-
export * from './Chat/hooks/useConnectionRecovered';
|
|
76
75
|
export * from './Chat/hooks/useSyncDatabase';
|
|
77
76
|
|
|
78
77
|
export * from './ImageGallery/ImageGallery';
|
|
@@ -109,7 +108,7 @@ export * from './Message/MessageSimple/MessageTextContainer';
|
|
|
109
108
|
export * from './Message/MessageSimple/ReactionList';
|
|
110
109
|
export * from './Message/MessageSimple/utils/renderText';
|
|
111
110
|
export * from './Message/utils/messageActions';
|
|
112
|
-
export * from '
|
|
111
|
+
export * from '../utils/removeReservedFields';
|
|
113
112
|
|
|
114
113
|
export * from './MessageInput/AttachButton';
|
|
115
114
|
export * from './MessageInput/CommandsButton';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useContext } from 'react';
|
|
2
2
|
import type { ImageProps } from 'react-native';
|
|
3
3
|
|
|
4
|
-
import type { AppSettingsAPIResponse, Channel,
|
|
4
|
+
import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
|
|
5
5
|
|
|
6
6
|
import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
|
|
7
7
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
@@ -44,7 +44,6 @@ export type ChatContextValue<
|
|
|
44
44
|
* @overrideType Function
|
|
45
45
|
*/
|
|
46
46
|
setActiveChannel: (newChannel?: Channel<StreamChatGenerics>) => void;
|
|
47
|
-
subscribeConnectionRecoveredCallback: (callback: EventHandler<StreamChatGenerics>) => () => void;
|
|
48
47
|
/**
|
|
49
48
|
* Instance of channel object from stream-chat package.
|
|
50
49
|
*
|