import { defaultStyles } from "@/constants/defaultStyles"; import { supabase } from "@/lib/supabase"; import { Ionicons } from '@expo/vector-icons'; import { Session } from "@supabase/supabase-js"; import { router, Stack, useFocusEffect } from "expo-router"; import { useCallback, useEffect, useState } from "react"; import { Alert, Button, Pressable, SectionList, Text, View } from "react-native"; type Subject = { sId: string; title: string; description: string; isActive: boolean; lastChanged: string; uId: string; } export default function Subjects() { const [subjects, SetSubject] = useState([]) const [session, SetSession] = useState(null) const subjectSections = [ { title: "Active Subjects", data: subjects.filter((subject) => !subject.isActive), emptyMessage: "No active subjects" }, { title: "Inactive Subjects", data: subjects.filter((subject) => subject.isActive), emptyMessage: "No inactive subjects" }, ]; useEffect(() => { supabase.auth.getSession().then(({ data }) => SetSession(data.session ?? null)) const { data: sub } = supabase.auth.onAuthStateChange((_event, newSession) => { SetSession(newSession) }) return () => sub.subscription.unsubscribe() }, []) const GetSubjects = async () => { const { data, error } = await supabase.from("subjects").select("*"); if (error) { Alert.alert("Subjects could not be fetched, please try again"); return; } SetSubject(data ?? []); } useFocusEffect( useCallback(() => { if (session) { GetSubjects(); } }, [session]) ); const DeleteSubject = async (sId: string) => { Alert.alert( "Delete Subject", "Are you sure you want to delete this subject?", [ { text: "Cancel", style: "cancel" }, { text: "Delete", style: "destructive", onPress: async () => { const { error } = await supabase.from("subjects").delete().eq("sId", sId); if (error) { Alert.alert("Subject could not be deleted, please try again"); return; } Alert.alert("Subject deleted successfully!"); GetSubjects(); } } ] ) } return ( { return (