import * as React from "react"; import styles from "../../styles"; import { View, Text } from "react-native"; import { useNavigation } from "@react-navigation/native"; import { RootDrawerParamList, CourseType, SemesterType, YearLevelType, } from "../../interfaces/Interfaces"; import { colors } from "../../styles"; import { MotiView } from "moti"; import { useState } from "react"; import Button from "../../components/Button/Button"; import DropDownPicker from "react-native-dropdown-picker"; import { useQuery } from "@tanstack/react-query"; import { GetCourses, GetSemesters, GetYearLevels, PatchUserInfo, } from "../../components/Api/Api"; import { useDispatch } from "react-redux"; import { unsetOnboarding } from "../../features/redux/slices/StatusSlice/StatusSlice"; import { setUser } from "../../features/redux/slices/UserSlice/UserSlice"; import AnimatedContainerNoScroll from "../../components/AnimatedContainer/AnimatedContainerNoScroll"; import { useToast } from "react-native-toast-notifications"; export default function Onboarding() { const navigation = useNavigation(); const dispatch = useDispatch(); // const creds = useSelector((state: RootState) => state.auth.creds); const toast = useToast(); // Semesters const [selected_semester, setSelectedSemester] = useState(""); const [semesterOpen, setSemesterOpen] = useState(false); const [semesters, setSemesters] = useState([ { label: "1st Semester", value: "1st Sem" }, { label: "2nd Semester", value: "2nd Sem" }, ]); const semester_query = useQuery({ queryKey: ["semesters"], queryFn: async () => { const data = await GetSemesters(); if (data[0] == false) { return Promise.reject(new Error(data[1])); } return data; }, onSuccess: (data) => { let semesters = data[1].map((item: SemesterType) => ({ label: item.name, value: item.name, })); setSemesters(semesters); }, onError: (error: Error) => { toast.show(String(error), { type: "warning", placement: "top", duration: 2000, animationType: "slide-in", }); }, }); // Year Level const [selected_yearlevel, setSelectedYearLevel] = useState(""); const [yearLevelOpen, setYearLevelOpen] = useState(false); const [year_levels, setYearLevels] = useState([ { label: "1st Year", value: "1st Year" }, { label: "2nd Year", value: "2nd Year" }, ]); const yearlevel_query = useQuery({ queryKey: ["year_levels"], queryFn: async () => { const data = await GetYearLevels(); if (data[0] == false) { return Promise.reject(new Error(data[1])); } return data; }, onSuccess: (data) => { let year_levels = data[1].map((item: YearLevelType) => ({ label: item.name, value: item.name, })); setYearLevels(year_levels); }, onError: (error: Error) => { toast.show(String(error), { type: "warning", placement: "top", duration: 2000, animationType: "slide-in", }); }, }); // Course const [selected_course, setSelectedCourse] = useState(""); const [courseOpen, setCourseOpen] = useState(false); const [courses, setCourses] = useState([ { label: "Bachelor of Science in Information Technology", value: "BSIT", }, { label: "Bachelor of Science in Computer Science", value: "BSCS" }, ]); const course_query = useQuery({ queryKey: ["courses"], queryFn: async () => { const data = await GetCourses(); if (data[0] == false) { return Promise.reject(new Error(data[1])); } return data; }, onSuccess: (data) => { let courses = data[1].map((item: CourseType) => ({ label: item.name, value: item.name, })); setCourses(courses); }, onError: (error: Error) => { toast.show(String(error), { type: "warning", placement: "top", duration: 2000, animationType: "slide-in", }); }, }); if (yearlevel_query.error || semester_query.error || course_query.error) { return ( Error loading details ); } return ( Welcome to Stud-E! We're glad to have you on board {"\n"} Just a few more things before we get started Academic Info { setCourseOpen(open); setSemesterOpen(false); setYearLevelOpen(false); }} style={styles.input} setValue={setSelectedCourse} placeholder="Choose your course" containerStyle={{ zIndex: 3000 }} textStyle={{ ...styles.text_white_small_bold, ...{ textAlign: "center" }, }} dropDownContainerStyle={{ backgroundColor: colors.primary_2 }} /> { setYearLevelOpen(open); setSemesterOpen(false); setCourseOpen(false); }} style={styles.input} setValue={setSelectedYearLevel} placeholder="Your Year Level" containerStyle={{ zIndex: 2000 }} textStyle={{ ...styles.text_white_small_bold, ...{ textAlign: "center" }, }} dropDownContainerStyle={{ backgroundColor: colors.primary_2 }} /> { setSemesterOpen(open); setCourseOpen(false); setYearLevelOpen(false); }} style={styles.input} setValue={setSelectedSemester} placeholder="Current semester" containerStyle={{ zIndex: 1000 }} textStyle={{ ...styles.text_white_small_bold, ...{ textAlign: "center" }, }} dropDownContainerStyle={{ backgroundColor: colors.primary_2 }} /> ); }