diff --git a/components/Dashboard/Header.tsx b/components/Dashboard/Header.tsx index 498b51f..338db35 100644 --- a/components/Dashboard/Header.tsx +++ b/components/Dashboard/Header.tsx @@ -17,10 +17,11 @@ import { User } from "../../models/user"; import { generateGreetings } from "../../helpers/dateTime"; import { Dropdown, Menu } from "antd"; import { useRouter } from "next/router"; +import { TeamMemberRole, TeamMemberStatus } from "../../models/teamMember"; export default function Header() { const { logOut } = useAuth(); - const { team, user } = useTeamDashboardContext(); + const { team, user, userTeamMember } = useTeamDashboardContext(); const router = useRouter(); const { teamid } = router.query; @@ -38,17 +39,42 @@ export default function Header() { const UserMenu = ( - - - - + {userTeamMember.role == TeamMemberRole.admin && ( + + + + )} + + ); + const searchBar = ( +
+ + + + + +
+ ); + const today = new Date(); const periodOfDay = generateGreetings(); return ( @@ -80,32 +106,7 @@ export default function Header() { {/* header control section */} - {/* search bar */} -
- - - - - -
diff --git a/components/Dashboard/TeamVoiceLine.tsx b/components/Dashboard/TeamVoiceLine.tsx index c02a3cd..0a3662c 100644 --- a/components/Dashboard/TeamVoiceLine.tsx +++ b/components/Dashboard/TeamVoiceLine.tsx @@ -1,3 +1,131 @@ +import { useRouter } from "next/router"; +import { FaPlus } from "react-icons/fa"; +import { IoPulseOutline, IoRemoveOutline, IoTimer } from "react-icons/io5"; +import { BsThreeDots } from "react-icons/bs"; +import { useTeamDashboardContext } from "../../contexts/teamDashboardContext"; +import { UserStatus } from "../../models/user"; +import { useState } from "react"; + export default function TeamVoiceLine() { - return
rooms
; + const router = useRouter(); + const { teamid } = router.query; + const { teamMembers } = useTeamDashboardContext(); + const [loading, setLoading] = useState(true); + + //listeners for all teammates' status + + function statusBubble(status: UserStatus) { + console.log(status); + + switch (status) { + case UserStatus.online: + return ( + + ); + case UserStatus.busy: + return ( + + ); + case UserStatus.offline: + return ( + + ); + default: + return ( + + ); + } + } + + function renderPulse(status: UserStatus) { + switch (status) { + case UserStatus.online: + return ( + + ); + case UserStatus.busy: + return ( + + ); + case UserStatus.offline: + return ( + + ); + default: + return ( + + ); + } + } + + function renderTeamMemberList() { + // show loading skeleton if not yet got friend info + if (loading) { + return ( +
+
+
+
+
+
+
+ ); + } + + // if not teammates, stale state message to tell admin to add people + if (!teamMembers.length) { + } + + return teamMembers.map((tmember, i) => { + return ( + + + + + {statusBubble(UserStatus.online)} + + asdf + + + + + + {tmember.inviteEmailAddress} + + + + + {tmember.role} + + + + {renderPulse(UserStatus.online)} + + ); + }); + } + + return ( +
+ + + TEAM + + + + + {/* list of team members */} + {renderTeamMemberList()} +
+ ); } diff --git a/pages/teams/[teamid].tsx b/pages/teams/[teamid].tsx index 76a0039..72d4cbb 100644 --- a/pages/teams/[teamid].tsx +++ b/pages/teams/[teamid].tsx @@ -2,6 +2,7 @@ import { GetServerSidePropsContext, GetServerSidePropsResult } from "next"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import Header from "../../components/Dashboard/Header"; +import TeamVoiceLine from "../../components/Dashboard/TeamVoiceLine"; import BackgroundLayout from "../../components/Layouts/BackgroundLayout"; import Loading from "../../components/Loading"; import { useAuth } from "../../contexts/authContext"; @@ -23,6 +24,10 @@ function TeamDashboard() { return (
+ +
+ +
); }