import { useAuth } from "../../contexts/authContext"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import UserService from "../../services/userService"; import { User } from "../../models/user"; import { GetServerSidePropsContext } from "next"; import firebaseAdmin from "firebase-admin"; import { FaPeopleCarry, FaArrowRight, FaBullhorn, FaPlus, } from "react-icons/fa"; import BackgroundLayout from "../../components/Layouts/BackgroundLayout"; import TeamService from "../../services/teamService"; import Loading from "../../components/Loading"; import { TeamMemberStatus } from "../../models/teamMember"; import { Divider, Tooltip } from "antd"; import { Team } from "../../models/team"; import moment from "moment"; /** * figure out where to take the user based on everything */ const userService: UserService = new UserService(); const teamService: TeamService = new TeamService(); function RouteHandler() { const { currUser } = useAuth(); const router = useRouter(); const [loading, setLoading] = useState(true); const [user, setUser] = useState(null); const [teams, setTeams] = useState([]); useEffect(() => { (async function () { try { // if not authenticated, take user to the login if (!currUser) { console.log( "not authenticated...routing from dashboard to teams home" ); router.push("/teams/login"); return; } // get user const returnedUser: User | null = await userService.getUser( currUser.uid ); // if user has no profile, then go to create profile if ( !returnedUser || !returnedUser.firstName || !returnedUser.lastName || !returnedUser.nickName ) { console.log("no profile for the user, routing him/her there"); router.push("/teams/profile"); return; } setUser(returnedUser); // get all teams that this user id is active in // get all of the teams that this user's email is invited to const teams: Team[] = await teamService.getActiveOrInvitedTeamsbyUser( currUser.uid, returnedUser.emailAddress ); setTeams(teams); setLoading(false); } catch (error) { console.log(error); router.push("/teams/login"); } })(); }, []); if (loading || !user) { return ; } // not in a team yet, and have not created a team yet return (
{/* header */}
πŸ‘‹Hey, {user.firstName}
Let's get you started.
Your Teams
{/* all teams part of */}
{teams.map((team) => { console.log(team); return ( {team.name} {team.allowedUserCount || 2} {team.companySite && ( window.open(team.companySite, "_blank")} className="text-xs hover:cursor-pointer font-semibold text-gray-500" > {team.companySite} )} {"created: " + moment(team.createdDate.toDate()).fromNow()} window.open("/teams/" + team.id, "_blank")} className="ml-auto hover:cursor-pointer transition-all bg-gray-500 bg-opacity-25 p-2 rounded group-hover:bg-opacity-40 group-hover:bg-teal-500" > ); })} {teams.length == 0 ? ( ) : ( "" )}
or learn more about{" "}
); } export async function getServerSideProps(context: GetServerSidePropsContext) { // const cookies = nookies.get(context); // var user: User | null = null // if (cookies.token) { // try { // const headers: HeadersInit = { // 'Content-Type': 'application/json', // Authorization: JSON.stringify({ token: cookies.token }) // }; // const result = await unfetch('/api/auth/validateToken', { headers }); // console.log(result) // // get user data // const userService: UserService = new UserService() // // the user is authenticated! // // FETCH STUFF HERE!! πŸš€ // // user = await userService.getUser("asdf") // } catch (e) { // // let exceptions fail silently // // could be invalid token, just let client-side deal with that // console.log(e) // } // } // // Pass data to the page via props // return { props: { // user // } // } return { props: {} }; } export default RouteHandler;