Files
nirvana/packages/web/components/MainTabsOrPages/Conversations.tsx
T
2022-02-05 20:38:26 -08:00

139 lines
4.3 KiB
TypeScript

import { Avatar, Badge } from "antd";
import { useRouter } from "next/router";
import {
FaDotCircle,
FaWalking,
FaRocket,
FaCheckDouble,
FaCircle,
FaUser,
FaRegClock,
FaCheck,
FaAngleRight,
FaGithub,
FaAtlassian,
} from "react-icons/fa";
import { Routes } from "@nirvana/common/helpers/routes";
import LiveRoom from "../Conversations/LiveRoom";
import Conversation from "@nirvana/common/models/conversation";
import { useRecoilValue } from "recoil";
import {
liveRoomsSelector,
RelativeTimeConvosSections,
RelativeTimeSeparatedConvosSelector,
} from "../../recoil/main";
import ConversationFullRow from "../Conversations/ConversationFullRow";
export default function Conversations() {
const router = useRouter();
const liveRooms = useRecoilValue(liveRoomsSelector);
const relativeConvoSections = useRecoilValue(
RelativeTimeSeparatedConvosSelector
);
const todayConvos = relativeConvoSections.get(
RelativeTimeConvosSections.today
);
const last7DaysConvos = relativeConvoSections.get(
RelativeTimeConvosSections.last7Days
);
const earlierMonthConvos = relativeConvoSections.get(
RelativeTimeConvosSections.earlierThisMonth
);
const oldJunkConvos = relativeConvoSections.get(
RelativeTimeConvosSections.oldJunk
);
return (
<>
{/* live */}
{liveRooms?.length > 0 && (
<>
<span className="flex flex-row items-center mb-5 px-5 w-full">
<FaDotCircle className="text-orange-500 text-lg mr-1" />
<span className="text-md tracking-widest font-semibold text-slate-300 uppercase">
Live
</span>
</span>
{/* row of live room cards */}
<span className="flex flex-col w-full items-stretch">
{liveRooms.map((lRoom) => (
<LiveRoom key={lRoom.id} conversation={lRoom} />
))}
</span>
</>
)}
{/* Today */}
{todayConvos && todayConvos?.length > 0 && (
<>
<span className="flex flex-row items-center mb-5 px-5 w-full mt-10">
<span className="text-md tracking-widest font-semibold text-slate-300 uppercase">
Today
</span>
</span>
<span className="flex flex-col w-full items-stretch">
{todayConvos.map((tRoom) => (
<ConversationFullRow key={tRoom.id} conversation={tRoom} />
))}
</span>
</>
)}
{/* last 7 days */}
{last7DaysConvos && last7DaysConvos?.length > 0 && (
<>
<span className="flex flex-row items-center mb-5 px-5 w-full mt-10">
<span className="text-md tracking-widest font-semibold text-slate-300 uppercase">
Last 7 Days
</span>
</span>
<span className="flex flex-col w-full items-stretch">
{last7DaysConvos.map((tRoom) => (
<ConversationFullRow key={tRoom.id} conversation={tRoom} />
))}
</span>
</>
)}
{/* earlier this month */}
{earlierMonthConvos && earlierMonthConvos?.length > 0 && (
<>
<span className="flex flex-row items-center mb-5 px-5 w-full mt-10">
<span className="text-md tracking-widest font-semibold text-slate-300 uppercase">
Earlier This Month
</span>
</span>
<span className="flex flex-col w-full items-stretch">
{earlierMonthConvos.map((tRoom) => (
<ConversationFullRow key={tRoom.id} conversation={tRoom} />
))}
</span>
</>
)}
{/* old junk */}
{oldJunkConvos && oldJunkConvos?.length > 0 && (
<>
<span className="flex flex-row items-center mb-5 px-5 w-full mt-10">
<span className="text-md tracking-widest font-semibold text-slate-300 uppercase">
Older Junk
</span>
</span>
<span className="flex flex-col w-full items-stretch">
{oldJunkConvos.map((tRoom) => (
<ConversationFullRow key={tRoom.id} conversation={tRoom} />
))}
</span>
</>
)}
<span className="mx-auto text-slate-300 flex-1 flex flex-col justify-end">
<span className="mt-auto">{"That's all"}</span>
</span>
</>
);
}