Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
39 changes: 19 additions & 20 deletions app/(tabs)/addevent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const AddEventPage = () => {

try {
const eventData = {
userId:user.uid,
userId: user.uid,
name: eventName,
date: eventDate.toISOString(),
time: eventTime.toISOString(),
Expand All @@ -59,14 +59,13 @@ const AddEventPage = () => {
createdAt: new Date().toISOString(),
};

const collectionRef = collection(db,'Events')
const docRef = await addDoc(collectionRef,eventData)
const collectionRef = collection(db, 'Events');
const docRef = await addDoc(collectionRef, eventData);
alert('Event added successfully!');
setEventName('')
setDescription('')
setRoomNumber('')
setDescription('')

setEventName('');
setDescription('');
setRoomNumber('');
setDescription('');
} catch (error) {
console.error('Error adding event:', error);
alert('Error adding event. Please try again.');
Expand All @@ -76,7 +75,7 @@ const AddEventPage = () => {
return (
<View style={styles.container}>
<StatusBar barStyle="light-content" />
<View style={tw`bg-[#D27B72] p-4 pt-11 pl-2 m-0 flex-row items-center`}>
<View style={tw`bg-[#1E7A3C] p-4 pt-11 pl-2 m-0 flex-row items-center`}>
<TouchableOpacity onPress={() => navigation.goBack()} style={tw`mr-4`}>
<ArrowLeft color="white" size={24} />
</TouchableOpacity>
Expand All @@ -95,7 +94,7 @@ const AddEventPage = () => {
value={eventName}
onChangeText={setEventName}
placeholder="Enter event name"
placeholderTextColor="#7C7C7C"
placeholderTextColor="#6C757D"
/>

<Text style={styles.label}>Event Date</Text>
Expand Down Expand Up @@ -137,7 +136,7 @@ const AddEventPage = () => {
value={roomNumber}
onChangeText={setRoomNumber}
placeholder="Enter room number"
placeholderTextColor="#7C7C7C"
placeholderTextColor="#6C757D"
/>

<Text style={styles.label}>Description</Text>
Expand All @@ -146,7 +145,7 @@ const AddEventPage = () => {
value={description}
onChangeText={setDescription}
placeholder="Enter description"
placeholderTextColor="#7C7C7C"
placeholderTextColor="#6C757D"
multiline={true}
/>

Expand All @@ -163,7 +162,7 @@ const AddEventPage = () => {
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#F4F3F2',
backgroundColor: '#E9ECEF',
},
keyboardAvoidingView: {
flex: 1,
Expand All @@ -186,15 +185,15 @@ const styles = StyleSheet.create({
fontSize: 16,
fontWeight: 'bold',
marginBottom: 8,
color: '#D27B72',
color: '#1E7A3C', // Darker Green
},
input: {
borderRadius: 8,
padding: 12,
marginBottom: 16,
fontSize: 16,
color: '#7C7C7C',
backgroundColor: '#F4F3F2',
color: '#343A40', // Dark Gray
backgroundColor: '#F8F9FA',
},
textArea: {
height: 100,
Expand All @@ -204,21 +203,21 @@ const styles = StyleSheet.create({
borderRadius: 8,
padding: 12,
marginBottom: 16,
backgroundColor: '#F4F3F2',
backgroundColor: '#F8F9FA',
},
dateTimeText: {
fontSize: 16,
color: '#7C7C7C',
color: '#343A40', // Dark Gray
},
postButton: {
backgroundColor: '#D27B72',
backgroundColor: '#1E7A3C', // Darker Green
borderRadius: 8,
padding: 16,
alignItems: 'center',
marginTop: 16,
},
postButtonText: {
color: '#F4F3F2',
color: '#FFFFFF',
fontSize: 18,
fontWeight: 'bold',
},
Expand Down
36 changes: 18 additions & 18 deletions app/(tabs)/addpeople.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ const MemberManagementPage = () => {
const [isCameraReady, setIsCameraReady] = useState(false);
const [isRecording, setIsRecording] = useState(false);
const cameraRef = useRef(null);
const navigation =useNavigation();
const navigation = useNavigation();

const renderNavbar = () => (
<View style={tw`bg-[#D27B72] px-4 py-3 flex-row items-center`}>
<TouchableOpacity onPress={()=>navigation.navigate('home')} style={tw`mr-4`}>
<View style={tw`bg-[#6495ED] px-4 py-3 flex-row items-center`}>
<TouchableOpacity onPress={() => navigation.navigate('home')} style={tw`mr-4`}>
<Feather name="arrow-left" size={24} color="#F4F3F2" />
</TouchableOpacity>
<Text style={tw`text-[#F4F3F2] text-lg font-bold`}>
Expand All @@ -48,11 +48,11 @@ const MemberManagementPage = () => {
};

const renderMemberItem = ({ item }) => (
<View style={tw`bg-white p-4 mb-2 rounded-lg flex-row items-center`}>
<View style={tw`bg-white p-4 mb-2 rounded-lg flex-row items-center border border-[#A6A6A6]`}>
{item.photo && <Image source={{ uri: item.photo }} style={tw`w-12 h-12 rounded-full mr-4`} />}
<View>
<Text style={tw`text-[#7C7C7C] font-bold`}>{item.name}</Text>
<Text style={tw`text-[#7C7C7C]`}>Room: {item.roomNumber}</Text>
<Text style={tw`text-[#6495ED] font-bold`}>{item.name}</Text>
<Text style={tw`text-[#A6A6A6]`}>Room: {item.roomNumber}</Text>
</View>
</View>
);
Expand Down Expand Up @@ -105,33 +105,33 @@ const MemberManagementPage = () => {

const renderAddMemberForm = () => (
<ScrollView style={tw`flex-1 bg-[#F4F3F2] p-4`}>
<Text style={tw`text-[#7C7C7C] font-bold mb-2`}>Unique ID: {newMember.id}</Text>
<Text style={tw`text-[#7C7C7C] font-bold mb-4`}>Room Number: {newMember.roomNumber}</Text>
<Text style={tw`text-[#6495ED] font-bold mb-2`}>Unique ID: {newMember.id}</Text>
<Text style={tw`text-[#6495ED] font-bold mb-4`}>Room Number: {newMember.roomNumber}</Text>
<Text>Name :</Text>
<TextInput
style={tw`bg-white p-2 mb-4 rounded`}
style={tw`bg-white p-2 mb-4 rounded border border-[#A6A6A6]`}
placeholder="Name"
value={newMember.name}
onChangeText={(text) => setNewMember({ ...newMember, name: text })}
/>
<Text>Relation :</Text>
<TextInput
style={tw`bg-white p-2 mb-4 rounded`}
style={tw`bg-white p-2 mb-4 rounded border border-[#A6A6A6]`}
placeholder="Relation"
value={newMember.relation}
onChangeText={(text) => setNewMember({ ...newMember, relation: text })}
/>
<Text>Age :</Text>
<TextInput
style={tw`bg-white p-2 mb-4 rounded`}
style={tw`bg-white p-2 mb-4 rounded border border-[#A6A6A6]`}
placeholder="Age"
value={newMember.age}
onChangeText={(text) => setNewMember({ ...newMember, age: text })}
keyboardType="numeric"
/>
<Text>Phone :</Text>
<TextInput
style={tw`bg-white p-2 mb-4 rounded`}
style={tw`bg-white p-2 mb-4 rounded border border-[#A6A6A6]`}
placeholder="Phone"
value={newMember.phone}
onChangeText={(text) => setNewMember({ ...newMember, phone: text })}
Expand All @@ -140,7 +140,7 @@ const MemberManagementPage = () => {
/>

<TouchableOpacity
style={tw`bg-[#D27B72] p-2 rounded mb-4`}
style={tw`bg-[#6495ED] p-2 rounded mb-4`}
onPress={pickImage}
>
<Text style={tw`text-[#F4F3F2] text-center`}>Pick an image</Text>
Expand All @@ -151,7 +151,7 @@ const MemberManagementPage = () => {
)}

<TouchableOpacity
style={tw`bg-[#D27B72] p-2 rounded mb-4`}
style={tw`bg-[#6495ED] p-2 rounded mb-4`}
onPress={pickVideo}
>
<Text style={tw`text-[#F4F3F2] text-center`}>Pick a video</Text>
Expand All @@ -167,7 +167,7 @@ const MemberManagementPage = () => {
/>
)}

<TouchableOpacity style={tw`bg-[#D27B72] p-6 mb-1 rounded`} onPress={handleSubmit}>
<TouchableOpacity style={tw`bg-[#6495ED] p-6 mb-1 rounded`} onPress={handleSubmit}>
<Text style={tw`text-[#F4F3F2] text-center font-bold`}>Submit</Text>
</TouchableOpacity>
</ScrollView>
Expand All @@ -181,14 +181,14 @@ const MemberManagementPage = () => {
) : (
<View style={tw`flex-1 p-4`}>
<TouchableOpacity
style={tw`bg-[#D27B72] p-4 rounded-lg flex-row items-center justify-center mb-4`}
style={tw`bg-[#6495ED] p-4 rounded-lg flex-row items-center justify-center mb-4`}
onPress={() => setIsAddingMember(true)}
>
<Feather name="user-plus" size={24} color="#F4F3F2" style={tw`mr-2`} />
<Text style={tw`text-[#F4F3F2] font-bold text-lg`}>Add New Member</Text>
</TouchableOpacity>

<Text style={tw`text-[#7C7C7C] font-bold text-xl mb-4`}>Added Members</Text>
<Text style={tw`text-[#6495ED] font-bold text-xl mb-4`}>Added Members</Text>

<FlatList
data={members}
Expand All @@ -201,4 +201,4 @@ const MemberManagementPage = () => {
);
};

export default MemberManagementPage;
export default MemberManagementPage;
56 changes: 26 additions & 30 deletions app/(tabs)/chat.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import React, { useState, useEffect } from 'react';
import { View, Text, FlatList, TextInput, TouchableOpacity, Image, SafeAreaView } from 'react-native';
import { View, Text, FlatList, TextInput, TouchableOpacity, SafeAreaView } from 'react-native';
import { ArrowLeft, Send } from 'lucide-react-native';
import tw from 'twrnc';
import { useNavigation } from '@react-navigation/native';
import { useUser } from '@/context/UserContext';
import { db } from '@/scripts/firebase';
import { useUser } from '@/context/UserContext';
import { db } from '@/scripts/firebase';
import { collection, addDoc, serverTimestamp, query, orderBy, onSnapshot } from 'firebase/firestore';

const Chat = () => {
const [messages, setMessages] = useState([]);
const [inputText, setInputText] = useState('');
const navigation = useNavigation();
const { user } = useUser(); // Get the current user from context
const { user } = useUser(); // Get the current user from context

useEffect(() => {
const messagesQuery = query(
Expand All @@ -27,20 +27,20 @@ const Chat = () => {
setMessages(fetchedMessages);
});

return () => unsubscribe();
return () => unsubscribe();
}, []);

const sendMessage = async () => {
if (inputText.trim() !== '') {
try {
await addDoc(collection(db, 'communityChat'), {
userID: user.uid,
senderName: user.fullName,
senderRoom : user.roomNumber,
receiverName: 'Community',
senderName: user.fullName,
senderRoom: user.roomNumber,
receiverName: 'Community',
text: inputText,
timestamp: serverTimestamp(),
avatar: 'https://api.multiavatar.com/default.png',
avatar: 'https://api.multiavatar.com/default.png',
});
setInputText('');
} catch (error) {
Expand All @@ -50,32 +50,28 @@ const Chat = () => {
};

const renderMessage = ({ item }) => (

<View style={tw`mb-4 ${item.senderName === user.fullName ? 'items-end' : 'items-start'}`} >
<View style={tw`mb-4 ${item.senderName === user.fullName ? 'items-end' : 'items-start'}`}>
{item.senderName !== user.fullName && (
<Text style={tw`text-xs font-semibold text-[#7C7C7C] mb-1`}>
{item.senderName}
<Text style={tw`text-xs font-semibold text-gray-500 mb-1`}>
{item.senderName}
</Text>
)}
<View
style={tw`${
style={[
tw`p-4 max-w-3/4 rounded-lg shadow-sm`,
item.senderName === user.fullName
? 'bg-[#D27B72] rounded-tl-2xl rounded-tr-2xl rounded-bl-2xl'
: 'bg-white rounded-tl-2xl rounded-tr-2xl rounded-br-2xl border border-[#D27B72]'
} p-3 max-w-3/4`}
? { backgroundColor: '#4FC3F7', borderTopRightRadius: 0 }
: { backgroundColor: '#E1F5FE', borderTopLeftRadius: 0 },
]}
>
<Text
style={tw`${
item.senderName === user.fullName ? 'text-white' : 'text-[#7C7C7C]'
}`}
style={tw`${item.senderName === user.fullName ? 'text-white' : 'text-gray-700'} text-base`}
>
{item.text}
</Text>
</View>
<Text
style={tw`text-xs text-[#7C7C7C] mt-1 ${
item.senderName === user.fullName ? 'text-right' : 'text-left'
}`}
style={tw`text-xs text-gray-400 mt-1 ${item.senderName === user.fullName ? 'text-right' : 'text-left'}`}
>
{item.timestamp
? new Date(item.timestamp.seconds * 1000).toLocaleTimeString([], {
Expand All @@ -88,13 +84,13 @@ const Chat = () => {
);

return (
<SafeAreaView style={tw`flex-1 bg-[#F4F3F2]`}>
<SafeAreaView style={tw`flex-1 bg-[#F8FBFF]`}>
{/* Header */}
<View style={tw`bg-[#D27B72] p-4 pt-11 pl-2 flex-row items-center`}>
<View style={tw`bg-[#4FC3F7] p-5 pt-11 flex-row items-center shadow-md`}>
<TouchableOpacity onPress={() => navigation.navigate('home')} style={tw`mr-4`}>
<ArrowLeft color="white" size={24} />
</TouchableOpacity>
<Text style={tw`text-xl font-bold text-white flex-1`}>Community Chat</Text>
<Text style={tw`text-xl font-bold text-white flex-1 text-center`}>Community Chat</Text>
</View>
{/* Messages List */}
<FlatList
Expand All @@ -105,16 +101,16 @@ const Chat = () => {
contentContainerStyle={tw`pb-4`}
/>
{/* Input Field */}
<View style={tw`flex-row items-center p-4 border-t border-[#7C7C7C]`}>
<View style={tw`flex-row items-center p-4 bg-white shadow-md`}>
<TextInput
style={tw`flex-1 bg-white rounded-full px-4 py-2 mr-2`}
style={tw`flex-1 bg-gray-100 rounded-full px-4 py-2 mr-2 border border-gray-200 shadow-sm`}
value={inputText}
onChangeText={setInputText}
placeholder="Type a message..."
placeholderTextColor="#7C7C7C"
placeholderTextColor="#9E9E9E"
/>
<TouchableOpacity
style={tw`bg-[#D27B72] rounded-full p-3`}
style={tw`bg-[#4FC3F7] rounded-full p-3 shadow-md`}
onPress={sendMessage}
>
<Send color="white" size={20} />
Expand Down
Loading