import * as React from "react"; import styles, { Viewport } from "../../styles"; import { View, Text, ToastAndroid } from "react-native"; import { useState } from "react"; import { UserInfoParams, OptionType, RootDrawerParamList, } from "../../interfaces/Interfaces"; import Button from "../../components/Button/Button"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { PatchStudentStatus, UserInfo } from "../../components/Api/Api"; import { colors } from "../../styles"; import DropDownPicker from "react-native-dropdown-picker"; import AnimatedContainerNoScroll from "../../components/AnimatedContainer/AnimatedContainerNoScroll"; import { urlProvider } from "../../components/Api/Api"; import MapView, { UrlTile, Marker } from "react-native-maps"; import { useNavigation } from "@react-navigation/native"; export default function StartStudying({ route }: any) { const { location } = route.params; const queryClient = useQueryClient(); const navigation = useNavigation(); // Subject choices const [selected_subject, setSelectedSubject] = useState(""); const [subjectsOpen, setSubjectsOpen] = useState(false); const [subjects, setSubjects] = useState([]); const StudentInfo = useQuery({ queryKey: ["user"], queryFn: UserInfo, onSuccess: (data: UserInfoParams) => { let subjects = data[1].subjects.map((subject: string) => ({ label: subject, value: subject, })); setSubjects(subjects); }, onError: () => { ToastAndroid.show( "Server error: Unable to query available subjects", ToastAndroid.SHORT ); }, }); const mutation = useMutation({ mutationFn: PatchStudentStatus, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["user"] }); queryClient.invalidateQueries({ queryKey: ["user_status"] }); ToastAndroid.show( "You are now studying " + selected_subject, ToastAndroid.SHORT ); navigation.navigate("Home"); }, onError: () => { ToastAndroid.show( "A server error has occured. Please try again", ToastAndroid.SHORT ); }, }); if (location && location.coords) { return ( { setSubjectsOpen(open); }} setValue={setSelectedSubject} placeholderStyle={{ ...styles.text_white_tiny_bold, ...{ textAlign: "left" }, }} placeholder="Select subject" multipleText="Select subject" style={styles.input} textStyle={{ ...styles.text_white_tiny_bold, ...{ textAlign: "left" }, }} modalContentContainerStyle={{ backgroundColor: colors.primary_2, borderWidth: 0, zIndex: 1000, }} autoScroll dropDownDirection="BOTTOM" listMode="MODAL" /> ); } return ; }