Untitled

 avatar
unknown
plain_text
a year ago
2.0 kB
4
Indexable
import React, { useEffect, useState } from 'react';
import { View, Text, TouchableOpacity, StyleSheet, Image, ScrollView } from 'react-native';
import { db } from '../firebase/fire';
import { getDocs, collection } from "firebase/firestore";
import { useRouter } from 'expo-router';

export default function EventList() {
  const [events, setEvents] = useState([]);
  const router = useRouter();

  useEffect(() => {
    getEvents();
  }, []);

  const getEvents = async () => {
    setEvents([]);
    const querySnapshot = await getDocs(collection(db, "events"));
    querySnapshot.forEach((doc) => {
      setEvents(events => [...events, { id: doc.id, ...doc.data() }]);
    });
  };

  const handlePress = (event) => {
    const params = {
      eventname: event.eventname,
      time: event.time,
      date: event.date,
      image: event.image,
      about: event.about,
      host: event.host,
      address: event.address,
      seats: event.seats,
    };

    router.push({
      pathname: '/EventDetails',
      params: params,
    });
  };

  return (
    <ScrollView style={styles.container}>
      {events.map((event, index) => (
        <TouchableOpacity
          key={index}
          style={styles.article}
          onPress={() => handlePress(event)}
        >
          <Image source={{ uri: event.image }} style={styles.image} />
          <Text style={styles.title}>{event.eventname}</Text>
          <Text style={styles.details}>Time: {event.time}</Text>
          <Text style={styles.details}>Date: {event.date}</Text>
        </TouchableOpacity>
      ))}
    </ScrollView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: 10,
  },
  article: {
    backgroundColor: '#f9f9f9',
    padding: 15,
    marginVertical: 10,
    borderRadius: 5,
    elevation: 3,
  },
  image: {
    width: '100%',
    height: 200,
    borderRadius: 5,
  },
  title: {
    fontSize: 18,
    fontWeight: 'bold',
  },
  details: {
    fontSize: 14,
  },
});
Editor is loading...
Leave a Comment