-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathApp.tsx
More file actions
98 lines (86 loc) · 2.31 KB
/
App.tsx
File metadata and controls
98 lines (86 loc) · 2.31 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import type {
User,
ChannelSort,
ChannelFilters,
ChannelOptions,
} from 'stream-chat';
import {
useCreateChatClient,
Chat,
Channel,
ChannelHeader,
ChannelList,
MessageInput,
MessageList,
Thread,
Window,
} from 'stream-chat-react';
import 'stream-chat-react/dist/css/v2/index.css';
import './layout.css';
import { useEffect } from 'react';
import EncryptedMessage from './EncryptedMessage';
import { useSealdContext } from './contexts/SealdContext';
const apiKey = 'qpvbxh63nz6h';
const userId = 'TestUser';
const userName = 'TestUser';
const userToken =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVGVzdFVzZXIifQ.GxZc2Q3CDNAXIYe_vAGoXEwVWUV4L9BspumCU4DF4Qw';
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 options: ChannelOptions = {
limit: 10,
};
const App = () => {
const { loadingState, initializeSeald, encryptMessage } = useSealdContext();
const client = useCreateChatClient({
apiKey,
tokenOrProvider: userToken,
userData: user,
});
useEffect(() => {
initializeSeald(userId, 'password');
}, [initializeSeald]);
if (!client) return <div>Setting up client & connection...</div>;
if (loadingState === 'loading') return <div>Loading Seald...</div>;
return (
<Chat client={client}>
<ChannelList filters={filters} sort={sort} options={options} />
<Channel Message={EncryptedMessage}>
<Window>
<ChannelHeader />
<MessageList />
<MessageInput
overrideSubmitHandler={async (
message,
channelId,
customMessageData,
options
) => {
const messageToSend = message.text;
const extractedChannelId = channelId.split(':')[1];
if (messageToSend) {
await encryptMessage(
messageToSend,
extractedChannelId,
client,
customMessageData,
options
);
}
}}
/>
</Window>
<Thread />
</Channel>
</Chat>
);
};
export default App;