diff --git a/src/components/calendar/CalendarPage.tsx b/src/components/calendar/CalendarPage.tsx index 9ce4028..ed78734 100644 --- a/src/components/calendar/CalendarPage.tsx +++ b/src/components/calendar/CalendarPage.tsx @@ -17,7 +17,7 @@ import { selectMeetings } from "../../redux/slices/meetingsAndUserStatusSlice"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { selectMe, - selectTeam, + selectTeamWithoutManager, selectUser, selectUsers, } from "../../redux/slices/usersSlice"; @@ -54,7 +54,7 @@ const CalendarPage: React.FC = () => { const currentUser: UserLite | undefined = useAppSelector((state) => selectUser(state, currentUserUuid) ); - const teamUuids: string[] = useAppSelector(selectTeam); + const teamUuids: string[] = useAppSelector(selectTeamWithoutManager); const team: UserLite[] = useAppSelector((state) => selectUsers(state, teamUuids) ); diff --git a/src/components/contacts/contacts-components/body-components/LowerBody.tsx b/src/components/contacts/contacts-components/body-components/LowerBody.tsx index 76f7632..3bc860c 100644 --- a/src/components/contacts/contacts-components/body-components/LowerBody.tsx +++ b/src/components/contacts/contacts-components/body-components/LowerBody.tsx @@ -5,6 +5,7 @@ import { useAppSelector, useAppDispatch } from "../../../../redux/hooks"; import { open } from "../../../../redux/slices/meetingDetailsOpenSlice"; import { selectUserUpcomingMeetings } from "../../../../redux/slices/meetingsAndUserStatusSlice"; import { getUpcomingMeetingTime } from "../../Utils"; +import { selectManager } from "../../../../redux/slices/usersSlice"; interface Props { contactInfo: UserLite; @@ -12,6 +13,7 @@ interface Props { const LowerBody: React.FC = (props) => { const dispatch = useAppDispatch(); + const manager = useAppSelector(selectManager); const meetings = useAppSelector((state) => selectUserUpcomingMeetings(state, props.contactInfo.uuid) @@ -31,19 +33,25 @@ const LowerBody: React.FC = (props) => { }} > - Upcoming meetings + Meetings today - {meetings.length === 0 ? ( + {meetings.length === 0 || manager === props.contactInfo.uuid ? ( - No upcoming meetings today + No meetings today ) : ( @@ -57,7 +65,7 @@ const LowerBody: React.FC = (props) => { borderTop: 1, borderBottom: i === meetings.length - 1 ? 1 : 0, borderColor: "#af000d", - backgroundColor: "#fff5f5" + backgroundColor: "#fff5f5", }} key={i} > diff --git a/src/components/sidebar/SettingsButton.tsx b/src/components/sidebar/SettingsButton.tsx index 9297940..7b5d64a 100644 --- a/src/components/sidebar/SettingsButton.tsx +++ b/src/components/sidebar/SettingsButton.tsx @@ -12,7 +12,7 @@ import { import { open as openMeetingDetails } from "../../redux/slices/meetingDetailsOpenSlice"; import { selectMeeting } from "../../redux/slices/meetingsAndUserStatusSlice"; import { useNavigate } from "react-router-dom"; -import { selectMe } from "../../redux/slices/usersSlice"; +import { selectManager, selectMe } from "../../redux/slices/usersSlice"; import NewMeeting from "../../api-bodies/NewMeeting"; import axios from "../../api/axios"; import { open as openMeetingUrl } from "../../redux/slices/meetingUrlSlice"; @@ -23,6 +23,7 @@ interface Props { } const SettingsButton: React.FC = ({ user, status }: Props) => { + const managerId = useAppSelector(selectManager); const navigate = useNavigate(); const [anchorEl, setAnchorEl] = useState(null); const [snackbarOpen, setSnackbarOpen] = useState(false); @@ -108,7 +109,7 @@ const SettingsButton: React.FC = ({ user, status }: Props) => { Add to Favorites )} - {status.inMeeting ? ( + {status.inMeeting && user.uuid !== managerId ? ( { handleClose(); @@ -118,14 +119,16 @@ const SettingsButton: React.FC = ({ user, status }: Props) => { View current meeting ) : null} - { - handleClose(); - navigate(`../contacts/${user.uuid}`); - }} - > - View upcoming meetings - + {user.uuid === managerId ? null : ( + { + handleClose(); + navigate(`../contacts/${user.uuid}`); + }} + > + View meetings today + + )} { handleClose(); diff --git a/src/components/sidebar/SidebarUser.tsx b/src/components/sidebar/SidebarUser.tsx index adc4fa7..4708851 100644 --- a/src/components/sidebar/SidebarUser.tsx +++ b/src/components/sidebar/SidebarUser.tsx @@ -3,6 +3,8 @@ import UserLite from "../../api-bodies/UserLite"; import UserStatus from "../../api-bodies/UserStatus"; import SettingsButton from "./SettingsButton"; import { MeetingStatus, getStatusColor } from "../../utils"; +import { useAppSelector } from "../../redux/hooks"; +import { selectManager } from "../../redux/slices/usersSlice"; interface Props { user: UserLite; @@ -10,23 +12,22 @@ interface Props { } const SidebarUser: React.FC = ({ user, status }: Props) => { + const managerId = useAppSelector(selectManager); + const meetingStatus: MeetingStatus = + managerId === user.uuid + ? MeetingStatus.NOT_AVAILABLE + : user && status.inMeeting + ? MeetingStatus.IN_MEETING + : MeetingStatus.NOT_IN_MEETING; + return ( + - + sx={{ width: "80%", display: "flex", flexDirection: "column", ml: 1 }} + > {user.name} - - {status.inMeeting - ? MeetingStatus.IN_MEETING - : MeetingStatus.NOT_IN_MEETING} - + {meetingStatus} diff --git a/src/redux/slices/usersSlice.tsx b/src/redux/slices/usersSlice.tsx index 35a0482..0f6afc2 100644 --- a/src/redux/slices/usersSlice.tsx +++ b/src/redux/slices/usersSlice.tsx @@ -97,5 +97,10 @@ export const selectTeam = (state: RootState) => { state.users.team.directReports.forEach((u) => team.push(u)); return team; }; - +export const selectTeamWithoutManager = (state: RootState) => { + const team: string[] = []; + state.users.team.sameManager.forEach((u) => team.push(u)); + state.users.team.directReports.forEach((u) => team.push(u)); + return team; +}; export default usersSlice.reducer;