Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
10251ec
feat: support message draft management for main message list
MartinCupela Feb 20, 2025
6bb0e4c
feat: use Thread class instance to manage Thread component state when…
MartinCupela Feb 21, 2025
7780290
feat: add MessageComposer
MartinCupela Mar 13, 2025
991b070
style: fix lint issues
MartinCupela Mar 13, 2025
a2e4155
Post-merge fixes
arnautov-anton Mar 13, 2025
979ab8b
Link latest stream-chat
arnautov-anton Mar 13, 2025
081376b
refactor: make the message composer code runable
MartinCupela Mar 13, 2025
47bbd2e
feat: add react namespaced class on TextAreaComposer SuggestionList
MartinCupela Mar 18, 2025
b458810
refactor: remove emojis search index initiation from textComposerEmoj…
MartinCupela Mar 18, 2025
c8dff0f
refactor: use SendMessageOptions type from stream-chat
MartinCupela Mar 20, 2025
39a749f
refactor: replace MiddlewareParams with TextComposerMiddlewareParams …
MartinCupela Mar 20, 2025
f528274
Remove trigger generics, refactor useMessageComposer
arnautov-anton Mar 20, 2025
43561ce
refactor: pass channel to createMentionsMiddleware instead of client
MartinCupela Mar 20, 2025
ebe89a4
style: apply linter
MartinCupela Mar 20, 2025
74cf07e
feat: replace StreamMessage and MessageToSend with LocalMessage and R…
MartinCupela Mar 26, 2025
38e7a08
refactor: register only custom text composer middleware
MartinCupela Mar 26, 2025
53a0a87
chore: add todo
MartinCupela Mar 26, 2025
e9f0175
Adjust useMessageComposer & Thread-related stuff
arnautov-anton Mar 26, 2025
fe3c100
WIP: composer queue cache
arnautov-anton Mar 28, 2025
9e9fc5b
Make FixedSizeQueueCache slightly faster
arnautov-anton Mar 28, 2025
40043dd
Adjust composer subscription behavior
arnautov-anton Mar 28, 2025
7d4ed43
style: fix typo
MartinCupela Mar 28, 2025
9f6c7bf
feat: use MessageComposer's PollComposer to handle poll creation
MartinCupela Mar 28, 2025
7e95cb7
Merge remote-tracking branch 'origin/feat/message-composer' into feat…
MartinCupela Mar 31, 2025
64ae4d0
refactor: use message composer to upload audio recording
MartinCupela Mar 31, 2025
a58d7f7
refactor: reflect updateMessage signature change and LocalMessage typ…
MartinCupela Apr 1, 2025
373ec98
refactor: support draft management through MessageComposer
MartinCupela Apr 2, 2025
1f4cdd5
refactor: adapt AttachmentPreviewList to LLC attachment types
MartinCupela Apr 4, 2025
80f908c
refactor: remove unused code related to useMessageInputState
MartinCupela Apr 4, 2025
58854a4
fix: retrieve draft for on legacy thread opening
MartinCupela Apr 7, 2025
6ced10f
wip: compositionContext
arnautov-anton Apr 7, 2025
3007a5d
feat: prepare TextAreaComposer and SuggestionList UI to work with tex…
MartinCupela Apr 9, 2025
84bfba2
feat: allow to specify and thus exclude tabIndex for dialog container
MartinCupela Apr 9, 2025
7e87140
fix: keep Enter key as reserved for message submission
MartinCupela Apr 9, 2025
29ae50e
fix: export textComposerEmojiMiddleware from emoji plugin
MartinCupela Apr 9, 2025
067a43a
feat(examples): add textComposerEmojiMiddleware to message composer
MartinCupela Apr 9, 2025
ee7991b
fix: fix message editing bugs
MartinCupela Apr 11, 2025
f4e4dd0
fix: handle max_votes_allowed field blur in poll creation dialog
MartinCupela Apr 11, 2025
e28de80
fix: forward paste handler to Textarea component
MartinCupela Apr 11, 2025
81dec28
applyModifications -> setupFunction
arnautov-anton Apr 11, 2025
44a57c8
fix: add EditMessageModal to prevent creating message composer before…
MartinCupela Apr 13, 2025
1da2ae6
fix: return message composer for edited message only when editing
MartinCupela Apr 13, 2025
e0d008e
fix: do not clear message composer state on edited message submission
MartinCupela Apr 13, 2025
aa9144a
fix: control the textarea cursor position to prevent jumping on change
MartinCupela Apr 13, 2025
5b6a18a
Merge remote-tracking branch 'origin/feat/message-composer' into feat…
MartinCupela Apr 13, 2025
a5addee
refactor: remove referencing message draft in Channel state context
MartinCupela Apr 14, 2025
80676d0
fix: do not check for message input context to retrieve message composer
MartinCupela Apr 14, 2025
e4ff5e6
fix: remove messageDraftsEnabled flag from Channel props
MartinCupela Apr 14, 2025
98d8b40
refactor: remove local type UpdateMessageOptions
MartinCupela Apr 14, 2025
16d3b13
test: make it possible to generate random values in tests
MartinCupela Apr 14, 2025
91996b5
test: start making message composition tests work
MartinCupela Apr 15, 2025
f4136f0
refactor: access message composer configuration
MartinCupela Apr 16, 2025
dc669fd
test: fix MessageList tests
arnautov-anton Apr 15, 2025
c67349f
test: fix Channel tests
arnautov-anton Apr 16, 2025
35acfb2
fix: amend isDateSeparatorMessage and isDate checks
arnautov-anton Apr 16, 2025
c465f43
chore: lint fixes
arnautov-anton Apr 16, 2025
2088b68
Merge branch 'rc' of github.com:GetStream/stream-chat-react into feat…
arnautov-anton Apr 16, 2025
701f3b2
chore(deps): link latest stream-chat@feat/message-composer commit
arnautov-anton Apr 16, 2025
285e0f9
test: fix MessageSimple tests
arnautov-anton Apr 16, 2025
0bea2d4
refactor: remove LinkPreview class in favor of plain objects
MartinCupela Apr 21, 2025
b0481e7
fix: make message input tests run
MartinCupela Apr 22, 2025
d89f6c7
Merge remote-tracking branch 'origin/feat/message-composer' into feat…
MartinCupela Apr 22, 2025
6588ec7
test: adjust link preview tests
MartinCupela Apr 24, 2025
c193912
test: adjust AttachmentSelector tests
MartinCupela Apr 24, 2025
48d2e0c
test: remove useMessageInputState.test.js
MartinCupela Apr 24, 2025
1710e9b
refactor: rename useMessageInputState to useMessageInputUiApi
MartinCupela Apr 24, 2025
acc0933
test: adjust MessageActionsBox tests
MartinCupela Apr 24, 2025
cfc63d7
fix: uncomment the code to retrieve STREAM_CHAT_REACT_VERSION
MartinCupela Apr 24, 2025
b8255fe
Merge branch 'rc' of github.com:GetStream/stream-chat-react into feat…
arnautov-anton Apr 24, 2025
1103513
Post-merge adjustments
arnautov-anton Apr 24, 2025
40801a8
Remove DropzoneProvider-related components
arnautov-anton Apr 24, 2025
101ce0c
test: adjust AttachmentPreviewList tests
MartinCupela Apr 24, 2025
d78353a
test: fix mock import path in EditMessageForm.test.js
MartinCupela Apr 25, 2025
165f4be
test: adjust SendButton.test.js
MartinCupela Apr 25, 2025
d818614
test: adjust UserItem.test.js
MartinCupela Apr 25, 2025
2bce4e1
test: adjust Thread.test.js
MartinCupela Apr 25, 2025
6f0e5bb
test: adjust useMediaRecorder.test.js
MartinCupela Apr 25, 2025
6386293
refactor: move message composer hooks to hooks folder's root
MartinCupela Apr 25, 2025
32859c9
test: adjust poll tests
MartinCupela Apr 25, 2025
996e59b
chore: merge Remove DropzoneProvider-related components
MartinCupela Apr 25, 2025
4974400
refactor: rename useMessageInputUiApi to useMessageInputControls
MartinCupela Apr 25, 2025
353bc19
Remove DropzoneProvider
arnautov-anton Apr 25, 2025
b9f86ad
Merge branch 'rc' of github.com:GetStream/stream-chat-react into feat…
arnautov-anton Apr 25, 2025
479279b
fix: make draft create independent from any other effects
MartinCupela Apr 28, 2025
1555b06
test: provide structuredClone implementation to jest
MartinCupela Apr 28, 2025
832e0ad
chore: remove unused code from vite example App
MartinCupela Apr 28, 2025
2e4f47a
Merge remote-tracking branch 'origin/feat/message-composer' into feat…
MartinCupela Apr 28, 2025
61edf6b
chore: upgrade stream-chat to version 9.0.0-rc.11
MartinCupela Apr 28, 2025
8184914
chore: upgrade /@stream-io/stream-chat-css to version 5.9.0
MartinCupela Apr 28, 2025
bdc2bab
refactor(examples): remove unnecessary code from vite/App.tsx
MartinCupela Apr 28, 2025
8e96b6c
chore: remove attachment identity functions supported by stream-chat-js
MartinCupela Apr 28, 2025
a063504
refactor: remove folder AutoCompleteTextarea
MartinCupela Apr 28, 2025
c5ba4fe
refactor: rename TextAreaComposer to TextareaComposer
MartinCupela Apr 28, 2025
71e3832
refactor: remove imports from AutoCompleteTextarea
MartinCupela Apr 28, 2025
824481c
refactor: remove acceptedFiles, maxNumberOfFiles, multipleUploads fro…
MartinCupela Apr 28, 2025
8fca084
refactor: remove console.log
MartinCupela Apr 28, 2025
80ec68d
refactor: remove rest of threadInstance references in channelState.ts
MartinCupela Apr 28, 2025
f74171b
refactor: remove unnecessary comments
MartinCupela Apr 28, 2025
9fb68d5
refactor: remove useMentionsTransliteration from MessageInputProps
MartinCupela Apr 28, 2025
4681a39
refactor: remove publishTypingEvent from MessageInputProps
MartinCupela Apr 28, 2025
53e4f1f
refactor: remove disableMentions, doFileUploadRequest, doImageUploadR…
MartinCupela Apr 28, 2025
5a32bc3
refactor: remove disabled from MessageInputProps
MartinCupela Apr 28, 2025
85e022c
refactor: remove mentionAllAppUsers, mentionQueryParams from MessageI…
MartinCupela Apr 28, 2025
1170c93
refactor: remove unnecessary comments
MartinCupela Apr 28, 2025
7060b96
fix: include overrideSubmitHandler in MessageInputContextValue type
MartinCupela Apr 28, 2025
99f153a
chore(deps): upgrade stream-chat to 9.0.0-rc.13
MartinCupela Apr 28, 2025
0c216b6
test: add test "should not submit the message if content not change"
MartinCupela Apr 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .lintstagedrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"src/**/*.{js,ts,tsx,md}": "eslint --max-warnings 0",
"src/**/*.{js,ts,tsx,md}": "eslint --max-warnings 0 --no-warn-ignored",
"**/*.{js,mjs,ts,mts,jsx,tsx,md,json,yml}": "prettier --list-different",
"src/i18n/*.json": "yarn run validate-translations"
}
38 changes: 33 additions & 5 deletions examples/vite/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
import { ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';
import { useEffect } from 'react';
import {
ChannelFilters,
ChannelOptions,
ChannelSort,
LocalMessage,
TextComposerMiddleware,
} from 'stream-chat';
import {
AIStateIndicator,
Channel,
Expand All @@ -8,13 +15,19 @@ import {
Chat,
ChatView,
MessageInput,
StreamMessage,
SendButtonProps,
Thread,
ThreadList,
useCreateChatClient,
useMessageComposer,
VirtualizedMessageList as MessageList,
Window,
} from 'stream-chat-react';
import { createTextComposerEmojiMiddleware } from 'stream-chat-react/emojis';
import { init, SearchIndex } from 'emoji-mart';
import data from '@emoji-mart/data';

init({ data });

const params = new Proxy(new URLSearchParams(window.location.search), {
get: (searchParams, property) => searchParams.get(property as string),
Expand All @@ -40,7 +53,8 @@ const filters: ChannelFilters = {
const options: ChannelOptions = { limit: 5, presence: true, state: true };
const sort: ChannelSort = { pinned_at: 1, last_message_at: -1, updated_at: -1 };

const isMessageAIGenerated = (message: StreamMessage) => !!message?.ai_generated;
// @ts-ignore
const isMessageAIGenerated = (message: LocalMessage) => !!message?.ai_generated;

const App = () => {
const chatClient = useCreateChatClient({
Expand All @@ -49,6 +63,20 @@ const App = () => {
userData: { id: userId },
});

useEffect(() => {
if (!chatClient) return;

chatClient.setMessageComposerSetupFunction(({ composer }) => {
composer.textComposer.middlewareExecutor.insert({
middleware: [
createTextComposerEmojiMiddleware(SearchIndex) as TextComposerMiddleware,
],
position: { before: 'stream-io/text-composer/mentions-middleware' },
unique: true,
});
});
}, [chatClient]);

if (!chatClient) return <>Loading...</>;

return (
Expand All @@ -64,12 +92,12 @@ const App = () => {
showChannelSearch
additionalChannelSearchProps={{ searchForChannels: true }}
/>
<Channel>
<Channel emojiSearchIndex={SearchIndex}>
<Window>
<ChannelHeader Avatar={ChannelAvatar} />
<MessageList returnAllReadData />
<AIStateIndicator />
<MessageInput focus />
<MessageInput focus audioRecordingEnabled />
</Window>
<Thread virtualized />
</Channel>
Expand Down
Loading