Skip to content

Commit 6382d5e

Browse files
committed
chore: remove deletedMessagesVisibilityType
1 parent d9bb4f5 commit 6382d5e

6 files changed

Lines changed: 16 additions & 199 deletions

File tree

package/src/components/Channel/Channel.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ export type ChannelPropsWithContext = Pick<ChannelContextValue, 'channel'> &
235235
MessagesContextValue,
236236
| 'additionalPressableProps'
237237
| 'customMessageSwipeAction'
238-
| 'deletedMessagesVisibilityType'
239238
| 'disableTypingIndicator'
240239
| 'dismissKeyboardOnMessageTouch'
241240
| 'enableSwipeToReply'
@@ -405,7 +404,6 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
405404
compressImageQuality,
406405
createPollOptionGap,
407406
customMessageSwipeAction,
408-
deletedMessagesVisibilityType = 'always',
409407
disableKeyboardCompatibleView = false,
410408
disableTypingIndicator,
411409
dismissKeyboardOnMessageTouch = true,
@@ -1635,7 +1633,6 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
16351633
additionalPressableProps,
16361634
channelId,
16371635
customMessageSwipeAction,
1638-
deletedMessagesVisibilityType,
16391636
deleteMessage,
16401637
deleteReaction,
16411638
disableTypingIndicator,

package/src/components/Channel/hooks/useCreateMessagesContext.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export const useCreateMessagesContext = ({
66
additionalPressableProps,
77
channelId,
88
customMessageSwipeAction,
9-
deletedMessagesVisibilityType,
109
deleteMessage,
1110
deleteReaction,
1211
disableTypingIndicator,
@@ -70,7 +69,6 @@ export const useCreateMessagesContext = ({
7069
() => ({
7170
additionalPressableProps,
7271
customMessageSwipeAction,
73-
deletedMessagesVisibilityType,
7472
deleteMessage,
7573
deleteReaction,
7674
disableTypingIndicator,

package/src/components/MessageList/__tests__/MessageList.test.js

Lines changed: 1 addition & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ describe('MessageList', () => {
9292
});
9393
});
9494

95-
it('should render deleted message in the list when `deleteMessagesVisibilityType` is set to default(always)', async () => {
95+
it('should render deleted message in the list', async () => {
9696
const user1 = generateUser();
9797
const mockedChannel = generateChannelResponse({
9898
members: [generateMember({ user: user1 })],
@@ -124,135 +124,6 @@ describe('MessageList', () => {
124124
});
125125
});
126126

127-
it('should render deleted message in the list when `deleteMessagesVisibilityType` is set to sender', async () => {
128-
const user1 = generateUser();
129-
const user2 = generateUser({ id: 'testID' });
130-
const mockedChannel = generateChannelResponse({
131-
members: [generateMember({ user: user1 })],
132-
messages: [
133-
generateMessage({ type: 'deleted', user: user2 }),
134-
generateMessage({ type: 'system', user: undefined }),
135-
generateMessage({ user: user1 }),
136-
],
137-
});
138-
139-
const chatClient = await getTestClientWithUser({ id: 'testID' });
140-
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
141-
const channel = chatClient.channel('messaging', mockedChannel.id);
142-
await channel.watch();
143-
144-
const { queryByTestId } = render(
145-
<OverlayProvider>
146-
<Chat client={chatClient}>
147-
<Channel channel={channel} deletedMessagesVisibilityType='sender'>
148-
<MessageList />
149-
</Channel>
150-
</Chat>
151-
</OverlayProvider>,
152-
);
153-
154-
await waitFor(() => {
155-
expect(queryByTestId('message-deleted')).toBeTruthy();
156-
});
157-
});
158-
159-
it('should render deleted message in the list when `deleteMessagesVisibilityType` is set to receiver', async () => {
160-
const user1 = generateUser();
161-
const user2 = generateUser({ id: 'testID' });
162-
const mockedChannel = generateChannelResponse({
163-
members: [generateMember({ user: user1 })],
164-
messages: [
165-
generateMessage({ user: user2 }),
166-
generateMessage({ type: 'system', user: undefined }),
167-
generateMessage({ type: 'deleted', user: user1 }),
168-
],
169-
});
170-
171-
const chatClient = await getTestClientWithUser({ id: 'testID' });
172-
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
173-
const channel = chatClient.channel('messaging', mockedChannel.id);
174-
await channel.watch();
175-
176-
const { getByTestId, queryByTestId } = render(
177-
<OverlayProvider>
178-
<Chat client={chatClient}>
179-
<Channel channel={channel} deletedMessagesVisibilityType='receiver'>
180-
<MessageList />
181-
</Channel>
182-
</Chat>
183-
</OverlayProvider>,
184-
);
185-
186-
await waitFor(() => {
187-
expect(getByTestId('message-deleted')).toBeTruthy();
188-
expect(queryByTestId('only-visible-to-you')).toBeNull();
189-
});
190-
});
191-
192-
it('should render deleted message in the list when `deleteMessagesVisibilityType` is set to never', async () => {
193-
const user1 = generateUser();
194-
const user2 = generateUser({ id: 'testID' });
195-
const mockedChannel = generateChannelResponse({
196-
members: [generateMember({ user: user1 })],
197-
messages: [
198-
generateMessage({ user: user2 }),
199-
generateMessage({ type: 'system', user: undefined }),
200-
generateMessage({ type: 'deleted', user: user1 }),
201-
],
202-
});
203-
204-
const chatClient = await getTestClientWithUser({ id: 'testID' });
205-
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
206-
const channel = chatClient.channel('messaging', mockedChannel.id);
207-
await channel.watch();
208-
209-
const { queryByTestId } = render(
210-
<OverlayProvider>
211-
<Chat client={chatClient}>
212-
<Channel channel={channel} deletedMessagesVisibilityType='never'>
213-
<MessageList />
214-
</Channel>
215-
</Chat>
216-
</OverlayProvider>,
217-
);
218-
219-
await waitFor(() => {
220-
expect(queryByTestId('message-deleted')).toBeNull();
221-
expect(queryByTestId('only-visible-to-you')).toBeNull();
222-
});
223-
});
224-
225-
it('should render deleted message in the list', async () => {
226-
const user1 = generateUser();
227-
const mockedChannel = generateChannelResponse({
228-
members: [generateMember({ user: user1 })],
229-
messages: [
230-
generateMessage({ type: 'deleted', user: user1 }),
231-
generateMessage({ type: 'system', user: undefined }),
232-
generateMessage({ user: user1 }),
233-
],
234-
});
235-
236-
const chatClient = await getTestClientWithUser({ id: 'testID' });
237-
useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
238-
const channel = chatClient.channel('messaging', mockedChannel.id);
239-
await channel.watch();
240-
241-
const { getByTestId } = render(
242-
<OverlayProvider>
243-
<Chat client={chatClient}>
244-
<Channel channel={channel}>
245-
<MessageList />
246-
</Channel>
247-
</Chat>
248-
</OverlayProvider>,
249-
);
250-
251-
await waitFor(() => {
252-
expect(getByTestId('message-deleted')).toBeTruthy();
253-
});
254-
});
255-
256127
it('should render the typing indicator when typing object is non empty', async () => {
257128
const user1 = generateUser();
258129
const mockedChannel = generateChannelResponse({

package/src/components/MessageList/hooks/useMessageList.ts

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ import { useMemo } from 'react';
22

33
import type { LocalMessage } from 'stream-chat';
44

5-
import { useChatContext } from '../../../contexts/chatContext/ChatContext';
6-
import {
7-
DeletedMessagesVisibilityType,
8-
useMessagesContext,
9-
} from '../../../contexts/messagesContext/MessagesContext';
105
import { usePaginatedMessageListContext } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';
116
import { useThreadContext } from '../../../contexts/threadContext/ThreadContext';
127

@@ -27,58 +22,23 @@ export type MessageGroupStyles = {
2722
[key: string]: string[];
2823
};
2924

30-
export const shouldIncludeMessageInList = (
31-
message: LocalMessage,
32-
options: { deletedMessagesVisibilityType?: DeletedMessagesVisibilityType; userId?: string },
33-
) => {
34-
const { deletedMessagesVisibilityType, userId } = options;
35-
const isMessageTypeDeleted = message.type === 'deleted';
36-
const isSender = message.user?.id === userId;
37-
38-
if (!isMessageTypeDeleted) {
39-
return true;
40-
}
41-
42-
switch (deletedMessagesVisibilityType) {
43-
case 'always':
44-
return true;
45-
case 'sender':
46-
return isSender;
47-
case 'receiver':
48-
return !isSender;
49-
case 'never':
50-
default:
51-
return false;
52-
}
53-
};
54-
5525
export const useMessageList = (params: UseMessageListParams) => {
5626
const { threadList, isLiveStreaming, isFlashList = false } = params;
57-
const { client } = useChatContext();
58-
const { deletedMessagesVisibilityType } = useMessagesContext();
5927
const { messages, viewabilityChangedCallback } = usePaginatedMessageListContext();
6028
const { threadMessages } = useThreadContext();
6129
const messageList = threadList ? threadMessages : messages;
6230

6331
const processedMessageList = useMemo<LocalMessage[]>(() => {
6432
const newMessageList = [];
6533
for (const message of messageList) {
66-
if (
67-
!shouldIncludeMessageInList(message, {
68-
deletedMessagesVisibilityType,
69-
userId: client.userID,
70-
})
71-
) {
72-
continue;
73-
}
7434
if (isFlashList) {
7535
newMessageList.push(message);
7636
} else {
7737
newMessageList.unshift(message);
7838
}
7939
}
8040
return newMessageList;
81-
}, [messageList, deletedMessagesVisibilityType, client.userID, isFlashList]);
41+
}, [messageList, isFlashList]);
8242

8343
const data = useRAFCoalescedValue(processedMessageList, isLiveStreaming);
8444

package/src/contexts/componentsContext/PLAN.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@ const getDefaults = () => {
6969

7070
Some component keys differ from their default component names to avoid collisions:
7171

72-
| Override Key | Default Component | Why renamed |
73-
| ----------------------------- | --------------------------------------- | ---------------------------------------------------------- |
74-
| `FileAttachmentIcon` | `FileIcon` | Clarity |
75-
| `ChannelListLoadingIndicator` | `ChannelListLoadingIndicator` | Split from shared `LoadingIndicator` — renders skeleton UI |
76-
| `MessageListLoadingIndicator` | `LoadingIndicator` | Split from shared `LoadingIndicator` — renders text |
77-
| `ChatLoadingIndicator` | `undefined` | Optional, no default |
78-
| `ThreadMessageComposer` | `MessageComposer` | Avoid collision with `MessageComposer` component name |
79-
| `ThreadListComponent` | `DefaultThreadListComponent` | Avoid collision with exported `ThreadList` |
80-
| `StartAudioRecordingButton` | `AudioRecordingButton` | Historical naming |
81-
| `ChannelPreview` | `ChannelPreviewView` | ChannelList preview item |
82-
| `ChannelPreviewAvatar` | `ChannelAvatar` | ChannelList preview avatar |
83-
| `ChannelListFooterLoadingIndicator` | `ChannelListFooterLoadingIndicator` | ChannelList footer |
84-
| `ChannelListHeaderErrorIndicator` | `ChannelListHeaderErrorIndicator` | ChannelList header |
85-
| `ChannelListHeaderNetworkDownIndicator` | `ChannelListHeaderNetworkDownIndicator` | ChannelList header |
72+
| Override Key | Default Component | Why renamed |
73+
| --------------------------------------- | --------------------------------------- | ---------------------------------------------------------- |
74+
| `FileAttachmentIcon` | `FileIcon` | Clarity |
75+
| `ChannelListLoadingIndicator` | `ChannelListLoadingIndicator` | Split from shared `LoadingIndicator` — renders skeleton UI |
76+
| `MessageListLoadingIndicator` | `LoadingIndicator` | Split from shared `LoadingIndicator` — renders text |
77+
| `ChatLoadingIndicator` | `undefined` | Optional, no default |
78+
| `ThreadMessageComposer` | `MessageComposer` | Avoid collision with `MessageComposer` component name |
79+
| `ThreadListComponent` | `DefaultThreadListComponent` | Avoid collision with exported `ThreadList` |
80+
| `StartAudioRecordingButton` | `AudioRecordingButton` | Historical naming |
81+
| `ChannelPreview` | `ChannelPreviewView` | ChannelList preview item |
82+
| `ChannelPreviewAvatar` | `ChannelAvatar` | ChannelList preview avatar |
83+
| `ChannelListFooterLoadingIndicator` | `ChannelListFooterLoadingIndicator` | ChannelList footer |
84+
| `ChannelListHeaderErrorIndicator` | `ChannelListHeaderErrorIndicator` | ChannelList header |
85+
| `ChannelListHeaderNetworkDownIndicator` | `ChannelListHeaderNetworkDownIndicator` | ChannelList header |
8686

8787
### Optional Components (no default)
8888

package/src/contexts/messagesContext/MessagesContext.tsx

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export type MessageContentType =
3939
| 'ai_text'
4040
| 'text'
4141
| 'location';
42-
export type DeletedMessagesVisibilityType = 'always' | 'never' | 'receiver' | 'sender';
4342

4443
export type MessageLocationProps = {
4544
message: LocalMessage;
@@ -112,14 +111,6 @@ export type MessagesContextValue = Pick<MessageContextValue, 'isMessageAIGenerat
112111
message: LocalMessage;
113112
}) => void;
114113

115-
/**
116-
* Full override of the delete message button in the Message Actions
117-
*
118-
* Please check [cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#override-or-intercept-message-actions-edit-delete-reaction-reply-etc) for details.
119-
*/
120-
/** Control if the deleted message is visible to both the send and reciever, either of them or none */
121-
deletedMessagesVisibilityType?: DeletedMessagesVisibilityType;
122-
123114
disableTypingIndicator?: boolean;
124115
/**
125116
* Enable swipe to reply on messages.

0 commit comments

Comments
 (0)