-
Notifications
You must be signed in to change notification settings - Fork 298
Expand file tree
/
Copy pathApp.tsx
More file actions
79 lines (68 loc) · 1.9 KB
/
Copy pathApp.tsx
File metadata and controls
79 lines (68 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { useEffect, useState } from 'react';
import type { ChannelFilters, ChannelSort, User } from 'stream-chat';
import {
Channel,
ChannelHeader,
ChannelList,
Chat,
MessageComposer,
MessageList,
Thread,
useCreateChatClient,
Window,
WithComponents,
} from 'stream-chat-react';
import { StreamEmojiPicker } from 'stream-chat-react/emojis';
import './layout.css';
import { apiKey, tokenProvider, userId, userName } from '../1-client-setup/credentials';
const user: User = {
id: userId,
name: userName,
image: `https://getstream.io/random_png/?name=${userName}`,
};
const sort: ChannelSort = { last_message_at: -1 };
const filters: ChannelFilters = {
type: 'messaging',
members: { $in: [userId] },
};
const App = () => {
const [isReady, setIsReady] = useState(false);
const client = useCreateChatClient({
apiKey,
tokenOrProvider: tokenProvider,
userData: user,
});
useEffect(() => {
if (!client) return;
const initChannel = async () => {
const channel = client.channel('messaging', 'react-tutorial', {
image: 'https://getstream.io/random_png/?name=react-v14',
name: 'Talk about React',
members: [userId],
});
await channel.watch();
setIsReady(true);
};
initChannel().catch((error) => {
console.error('Failed to initialize tutorial channel', error);
});
}, [client]);
if (!client) return <div>Setting up client & connection...</div>;
if (!isReady) return <div>Loading tutorial channel...</div>;
return (
<Chat client={client}>
<WithComponents overrides={{ EmojiPicker: StreamEmojiPicker }}>
<ChannelList filters={filters} sort={sort} />
<Channel>
<Window>
<ChannelHeader />
<MessageList />
<MessageComposer />
</Window>
<Thread />
</Channel>
</WithComponents>
</Chat>
);
};
export default App;