import * as Notifications from "expo-notifications"; import React, { useEffect, useState } from "react"; import { Linking, SafeAreaView, ScrollView, Text, TouchableOpacity, View } from "react-native"; import { Item } from "types/Item"; import { useNotificationListener } from "../hooks/useNotificationListener"; import { usePushNotifications } from "../hooks/usePushNotifications"; import { styles } from "./HomeScreen.styles"; const API_URL = "http://167.86.73.246:8100"; type Category = "home" | "royal-road" | "podcasts" | "mixtapes"; export default function HomeScreen() { const [data, setData] = useState([]); const [selected, setSelected] = useState("home"); const [menuOpen, setMenuOpen] = useState(false); const [lastNotification, setLastNotification] = useState(null); const expoPushToken = usePushNotifications({ userId: 1, apiKey: "super-secret-api-key", backendUrl: API_URL, appVersion: "1.0.0", locale: "en-uk", }); useNotificationListener(notification => { setLastNotification(notification); }); useEffect(() => { async function fetchData() { try { const res = await fetch(`${API_URL}/`); const json = await res.json(); setData(json.data); } catch (err) { console.error("Failed to fetch data:", err); } } fetchData(); }, []); const filteredData = selected === "home" ? data : data.filter(item => item.category === selected); const menuItems: { label: string; key: Category }[] = [ { label: "Home", key: "home" }, { label: "Royal Road", key: "royal-road" }, { label: "Podcasts", key: "podcasts" }, { label: "Mixtapes", key: "mixtapes" }, ]; return ( {/* Side Menu */} {menuItems.map(item => ( { setSelected(item.key); setMenuOpen(false); }} > {item.label} ))} {/* Main Content */} setMenuOpen(!menuOpen)}> {selected === "home" && "Welcome to Home!"} {selected === "royal-road" && "Royal Road Updates"} {selected === "podcasts" && "Latest Podcasts"} {selected === "mixtapes" && "New Mixtapes"} {filteredData.map(item => ( {item.title} {item.info} Linking.openURL(item.link)}> Read more ))} ); }