This repository was archived by the owner on Mar 17, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApp.tsx
More file actions
71 lines (60 loc) · 2.17 KB
/
App.tsx
File metadata and controls
71 lines (60 loc) · 2.17 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
import { useEffect, useState } from 'react';
import { Button, FlatList, StyleSheet, Text, TextInput, View } from 'react-native';
import { ChatMessageItem } from './src/components/ChatMessageItem';
import { ChatMessageResource } from './src/models/Resources';
import { ConnectivityManager } from './src/util/Connectivity';
import { MessageManager } from './src/util/MessageManager';
import { AppStore } from './src/util/Store';
const connectivityManager = new ConnectivityManager();
const appStore = new AppStore();
const messageManager = new MessageManager(connectivityManager, appStore);
export default function App() {
const loggerName = "[AppScreen]";
const [messages, setMessages] = useState<ChatMessageResource[]>([]);
const [message, setMessage] = useState<string>("");
useEffect(() => {
console.log(`${loggerName} - This should only run once...`);
setMessages(appStore.messages);
// Simulate store updates
appStore.subscribe(() => {
setMessages(appStore.messages);
});
// setInterval(() => {
// // console.log("Messages in the store...");
// // console.log(appStore.messages);
// setMessages(appStore.messages);
// }, 1000);
}, []);
const handleSendMessage = async () => {
const chatMessage: ChatMessageResource = {
client_message_uid: `MSG_${Date.now().toString()}`,
recipient_uid: "a1000",
sender_uid: "b2000",
content: message,
sent: false,
};
appStore.addMessage(chatMessage);
await messageManager.sendMessage(chatMessage);
setMessage("");
}
return (
<View style={styles.container}>
<Text>Open up App.js to start working on your app!</Text>
<FlatList
data={messages}
renderItem={({item}) => <ChatMessageItem content={item.content} sent={item.sent} />}
keyExtractor={item => item.client_message_uid}
/>
<TextInput onChangeText={setMessage} value={message} placeholder="Meow here?" />
<Button onPress={handleSendMessage} title="Send Message" />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});