showing activity icon if tuned in
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
import { useCallback, useMemo } from "react";
|
import { FiActivity, FiSun } from "react-icons/fi";
|
||||||
|
import { useCallback, useEffect, useMemo } from "react";
|
||||||
import { useRecoilState, useSetRecoilState } from "recoil";
|
import { useRecoilState, useSetRecoilState } from "recoil";
|
||||||
|
|
||||||
import { $selectedLineId } from "../../../controller/recoil";
|
import { $selectedLineId } from "../../../controller/recoil";
|
||||||
import { Avatar } from "antd";
|
import { Avatar } from "antd";
|
||||||
import { FiSun } from "react-icons/fi";
|
|
||||||
import LineIcon from "../lineIcon";
|
import LineIcon from "../lineIcon";
|
||||||
import { LineMemberState } from "@nirvana/core/models/line.model";
|
import { LineMemberState } from "@nirvana/core/models/line.model";
|
||||||
import MasterLineData from "@nirvana/core/models/masterLineData.model";
|
import MasterLineData from "@nirvana/core/models/masterLineData.model";
|
||||||
@@ -26,13 +26,22 @@ export default function LineRow({
|
|||||||
setSelectedLineId(masterLineData.lineDetails._id.toString());
|
setSelectedLineId(masterLineData.lineDetails._id.toString());
|
||||||
}, [setSelectedLineId, masterLineData]);
|
}, [setSelectedLineId, masterLineData]);
|
||||||
|
|
||||||
|
// take the source of truth list of memeberIds tuned in, and see if I'm in it
|
||||||
|
const isUserTunedIn = useMemo(
|
||||||
|
() =>
|
||||||
|
masterLineData.tunedInMemberIds?.includes(userData?.user?._id.toString()),
|
||||||
|
[masterLineData.tunedInMemberIds, userData]
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: slowly add to this and fix based on added features
|
* TODO: slowly add to this and fix based on added features
|
||||||
* */
|
* */
|
||||||
const renderActivityIcon = useMemo(() => {
|
const renderActivityIcon = useMemo(() => {
|
||||||
|
if (isUserTunedIn) return <FiActivity className="text-black" />;
|
||||||
|
|
||||||
// if there is someone or me broadcasting here
|
// if there is someone or me broadcasting here
|
||||||
// if (masterLineData.currentUserMember.lastVisitDate)
|
if (masterLineData.currentBroadcastersUserIds?.length > 0)
|
||||||
return <FiSun className="text-xs text-teal-500" />;
|
return <FiSun className="text-xs text-teal-500" />;
|
||||||
|
|
||||||
// if there is new activity blocks for me
|
// if there is new activity blocks for me
|
||||||
if (masterLineData.currentUserMember.lastVisitDate)
|
if (masterLineData.currentUserMember.lastVisitDate)
|
||||||
@@ -43,11 +52,11 @@ export default function LineRow({
|
|||||||
return (
|
return (
|
||||||
<span className="h-2 w-2 rounded-full bg-white animate-pulse"></span>
|
<span className="h-2 w-2 rounded-full bg-white animate-pulse"></span>
|
||||||
);
|
);
|
||||||
}, [masterLineData]);
|
}, [masterLineData, isUserTunedIn]);
|
||||||
|
|
||||||
const renderRightActivity = useMemo(() => {
|
const renderRightActivity = useMemo(() => {
|
||||||
// TODO: this should be the list of broadcasters, not members...change once we have that
|
// TODO: get the profile pictures of the broadcasters
|
||||||
if (masterLineData.otherUserObjects?.length)
|
if (masterLineData.currentBroadcastersUserIds?.length > 0)
|
||||||
return (
|
return (
|
||||||
<Avatar.Group
|
<Avatar.Group
|
||||||
key={`lineRowRightActivityGroup-${masterLineData.lineDetails._id.toString()}`}
|
key={`lineRowRightActivityGroup-${masterLineData.lineDetails._id.toString()}`}
|
||||||
@@ -75,7 +84,7 @@ export default function LineRow({
|
|||||||
|
|
||||||
// if there is new activity/black dot, then show relative time as little bolder? or too much?
|
// if there is new activity/black dot, then show relative time as little bolder? or too much?
|
||||||
|
|
||||||
// TODO: add moment for relative time of activity
|
// TODO: compare last visit date to latest audio block
|
||||||
if (masterLineData.currentUserMember.lastVisitDate)
|
if (masterLineData.currentUserMember.lastVisitDate)
|
||||||
return (
|
return (
|
||||||
<span className={`text-gray-400 ml-auto text-xs font-semibold`}>
|
<span className={`text-gray-400 ml-auto text-xs font-semibold`}>
|
||||||
|
|||||||
Reference in New Issue
Block a user