import Image from "next/image";
import React, { useState } from "react";
import {
FaMicrophoneAlt,
FaHeadphonesAlt,
FaTh,
FaAngleDown,
FaPlusSquare,
FaBroom,
FaBell,
FaFilePdf,
FaCopy,
FaClock,
FaPlay,
FaPlus,
FaCheck,
FaCode,
FaLink,
FaExternalLinkAlt,
FaArchive,
FaAtlassian,
FaSearch,
} from "react-icons/fa";
import { IoPulseOutline, IoRemoveOutline, IoTimer } from "react-icons/io5";
import { BsThreeDots } from "react-icons/bs";
import { UserStatus, User } from "../../models/user";
import { KeyCode } from "../../globals/keycode";
import { useRouter } from "next/router";
import { useEffect } from "react";
import { useAuth } from "../../contexts/authContext";
let testFriends = [
{
name: "Liam",
role: "engineer",
systemAvatar: "29",
status: UserStatus.online,
},
{
name: "Emily",
role: "engineer",
systemAvatar: "02",
status: UserStatus.online,
},
{
name: "Paul",
role: "architect",
systemAvatar: "43",
status: UserStatus.online,
},
{
name: "Mark",
role: "engineer",
systemAvatar: "04",
status: UserStatus.busy,
},
{
name: "Adriana",
role: "design",
systemAvatar: "06",
status: UserStatus.busy,
},
{
name: "Josh",
role: "design",
systemAvatar: "05",
status: UserStatus.offline,
},
];
export default function Dashboard() {
const { currUser, logOut } = useAuth();
const router = useRouter();
useEffect(() => {
// if not authenticated, take user to the login
if (!currUser) {
console.log("not authenticated...routing from dashboard to teams home");
router.push("/teams/login");
}
}, [currUser]);
const [selectedChannel, setSelectedChannel] = useState(null);
console.log("in dashboard " + currUser);
async function handleSignOut() {
console.log("clicked log out button");
try {
await logOut();
router.push("/teams");
} catch (error) {
console.log(error);
}
}
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 handleKeyboardShortcut(event) {
console.log(event.keyCode);
switch (event.keyCode) {
case KeyCode.Escape:
setSelectedChannel(null);
break;
case KeyCode.Zero:
setSelectedChannel(0);
break;
case KeyCode.One:
setSelectedChannel(1);
break;
case KeyCode.Two:
setSelectedChannel(2);
break;
case KeyCode.Three:
setSelectedChannel(3);
break;
case KeyCode.Four:
setSelectedChannel(4);
break;
case KeyCode.Five:
setSelectedChannel(5);
break;
default:
return;
}
}
return (
<>
{/* header content */}
{/* welcome message */}
πHey Arjun, Good Afternoon!
{/* Date and time */}
Tues, Jan 11th
1:34am
{/* header control section */}
{/* search bar */}
{/* avatar */}
{/* personal line */}
TEAM
{/* list of team members */}
{testFriends.map((friend, i) => {
return (
{statusBubble(friend.status)}
{friend.name}{" "}
{selectedChannel == i ? (
<>
>
) : (
)}
{friend.role}
{renderPulse(friend.status)}
);
})}
{/* pinned */}
ANNOUNCEMENTS
updates, pep talks, blockers, reminders
{/* tab pane */}
Active
Resolved
TODAY