import * as React from "react"; import { DrawerContentScrollView } from "@react-navigation/drawer"; import { useNavigation } from "@react-navigation/native"; import { Text, View } from "react-native"; import { colors } from "../../styles"; import styles from "../../styles"; import { RootDrawerParamList, StudentStatusPatchType, } from "../../interfaces/Interfaces"; import AppIcon from "../../icons/AppIcon/AppIcon"; import HomeIcon from "../../icons/HomeIcon/HomeIcon"; import LoginIcon from "../../icons/LoginIcon/LoginIcon"; import SignupIcon from "../../icons/SignupIcon/SignupIcon"; import DrawerButton from "../Button/DrawerButton"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../../features/redux/Store/Store"; import LogoutIcon from "../../icons/LogoutIcon/LogoutIcon"; import { logout } from "../../features/redux/slices/StatusSlice/StatusSlice"; import AsyncStorage from "@react-native-async-storage/async-storage"; import UserIcon from "../../icons/UserIcon/UserIcon"; import SubjectIcon from "../../icons/SubjectIcon/SubjectIcon"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import toast from "react-native-toast-notifications/lib/typescript/toast"; import { PatchStudentStatus } from "../Api/Api"; import { useToast } from "react-native-toast-notifications"; export default function CustomDrawerContent(props: {}) { const navigation = useNavigation(); const status = useSelector((state: RootState) => state.status); const dispatch = useDispatch(); const queryClient = useQueryClient(); const toast = useToast(); const debug_disable_clear_on_logout = true; const stop_studying_logout = useMutation({ mutationFn: async (info: StudentStatusPatchType) => { const data = await PatchStudentStatus(info); if (data[0] != true) { return Promise.reject(new Error()); } console.log("DEBUG", data); return data; }, onSuccess: async () => { toast.show("Logged out. Stopped studying", { type: "warning", placement: "top", duration: 2000, animationType: "slide-in", }); queryClient.clear(); dispatch(logout()); await AsyncStorage.clear(); navigation.navigate("Login"); }, onError: (error: Error) => { toast.show(String(error), { type: "warning", placement: "top", duration: 2000, animationType: "slide-in", }); }, }); if (status.logged_in && status.onboarding) { return ( Stud-E { if (debug_disable_clear_on_logout) { queryClient.clear(); dispatch(logout()); await AsyncStorage.clear(); navigation.navigate("Login"); } else { stop_studying_logout.mutate({ active: false, }); } }} > Logout ); } else if (status.logged_in) { return ( Stud-E { navigation.navigate("Home"); }} > Home { navigation.navigate("User Info"); }} > User Info { navigation.navigate("Subjects"); }} > Subjects { if (debug_disable_clear_on_logout) { queryClient.clear(); dispatch(logout()); await AsyncStorage.clear(); navigation.navigate("Login"); } else { stop_studying_logout.mutate({ active: false, }); } }} > Logout ); } else { return ( Stud-E { navigation.navigate("Login"); }} > Login { navigation.navigate("Register"); }} > Register { navigation.navigate("Conversation"); }} > Conversation {/* Debug buttons for accessing revalidation and activation page { navigation.navigate("Revalidation"); }} > Revalidation { navigation.navigate("Activation"); }} > Activation */} ); } }