From ff8cd26a532cb41474a4ffd9836f5f0d24e630f2 Mon Sep 17 00:00:00 2001 From: Taehee Choi Date: Fri, 25 Mar 2022 13:15:25 -0700 Subject: [PATCH] empty string for mock data --- src/api-bodies/MockData.tsx | 2 +- src/components/home/MeetingsPanel.tsx | 25 +++++--- src/components/login/Login.tsx | 2 - src/redux/slices/favoritesSlice.tsx | 31 +++++++--- .../slices/meetingsAndUserStatusSlice.tsx | 43 +++++++++----- src/redux/slices/usersSlice.tsx | 57 +++++++++++-------- 6 files changed, 101 insertions(+), 59 deletions(-) diff --git a/src/api-bodies/MockData.tsx b/src/api-bodies/MockData.tsx index e85a51e..8351c1b 100644 --- a/src/api-bodies/MockData.tsx +++ b/src/api-bodies/MockData.tsx @@ -77,7 +77,7 @@ const meetings = [ ]; const team = { - user: "0", + user: "", manager: "1", sameManager: ["2", "3", "4", "5", "6"], directReports: [], diff --git a/src/components/home/MeetingsPanel.tsx b/src/components/home/MeetingsPanel.tsx index 96c7dca..5125a5e 100644 --- a/src/components/home/MeetingsPanel.tsx +++ b/src/components/home/MeetingsPanel.tsx @@ -7,7 +7,6 @@ import { selectUsers } from "../../redux/slices/usersSlice"; import { formatTimeFromDate } from "../../utils"; const MeetingsPanel: React.FC = () => { - const meetings = useAppSelector(selectMeetings); return ( @@ -19,7 +18,9 @@ const MeetingsPanel: React.FC = () => { Sunday, 03 Feb 2022 */}
- Meetings in Progress + + Meetings in Progress +
{meetings.map((meeting) => { @@ -28,7 +29,7 @@ const MeetingsPanel: React.FC = () => { ); const startDate = new Date(meeting.start); const startDatemil = startDate.getTime(); - const endDatemil = startDatemil + meeting.duration*60000; + const endDatemil = startDatemil + meeting.duration * 60000; const endDate = new Date(endDatemil); const [currentDate, setCurrentDate] = useState(new Date()); useEffect(() => { @@ -39,10 +40,16 @@ const MeetingsPanel: React.FC = () => { if (currentDatemil >= startDatemil && currentDatemil <= endDatemil) { return ( - (" " + userLite.name + " ")).toString()} + " " + userLite.name + " ") + .toString()} /> ); } @@ -50,5 +57,5 @@ const MeetingsPanel: React.FC = () => { ); }; - -export default MeetingsPanel; \ No newline at end of file + +export default MeetingsPanel; diff --git a/src/components/login/Login.tsx b/src/components/login/Login.tsx index 71eae7e..faf90b3 100644 --- a/src/components/login/Login.tsx +++ b/src/components/login/Login.tsx @@ -13,7 +13,6 @@ import { fetchFavorites } from "../../redux/slices/favoritesSlice"; import { fetchMeetings } from "../../redux/slices/meetingsAndUserStatusSlice"; import { fetchUsers } from "../../redux/slices/usersSlice"; import axios from "../../api/axios"; -import { socketActions } from "../../redux/slices/meetingsAndUserStatusSlice"; interface LocationState { from: { pathname: string }; @@ -72,7 +71,6 @@ const Login: React.FC = () => { setAuth.email = email; setAuth.isLoggedIn = true; - store.dispatch(socketActions.startConnecting()); store.dispatch(fetchMeetings(logedInUserId)); store.dispatch(fetchUsers(logedInUserId)); store.dispatch(fetchFavorites(logedInUserId)); diff --git a/src/redux/slices/favoritesSlice.tsx b/src/redux/slices/favoritesSlice.tsx index 0fbbbe3..4f9d151 100644 --- a/src/redux/slices/favoritesSlice.tsx +++ b/src/redux/slices/favoritesSlice.tsx @@ -1,6 +1,7 @@ import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { RootState } from "../store"; import axios from "../../api/axios"; +import { favorites } from "../../api-bodies/MockData"; interface FavoritesState { favorites: string[]; @@ -32,25 +33,37 @@ export const favoritesSlice = createSlice({ export const fetchFavorites = createAsyncThunk( "favorites/fetchFavorites", async (uuid: string) => { - const response = await axios.get(`/users/${uuid}/favourites`); - return response.data.userIds; + if (uuid) { + const response = await axios.get(`/users/${uuid}/favourites`); + return response.data.userIds; + } else { + return favorites; + } } ); export const addFavorite = createAsyncThunk( "favorites/addFavorite", async (ids: { userId: string; toBeAdded: string }) => { - await axios.post( - `/users/${ids.userId}/favourites`, - JSON.stringify({ userId: ids.toBeAdded }) - ); - return ids.toBeAdded; + if (ids.userId) { + await axios.post( + `/users/${ids.userId}/favourites`, + JSON.stringify({ userId: ids.toBeAdded }) + ); + return ids.toBeAdded; + } else { + return ids.toBeAdded; + } } ); export const removeFavorite = createAsyncThunk( "favorites/removeFavorite", async (ids: { userId: string; toBeRemoved: string }) => { - await axios.delete(`/users/${ids.userId}/favourites/${ids.toBeRemoved}`); - return ids.toBeRemoved; + if (ids.userId) { + await axios.delete(`/users/${ids.userId}/favourites/${ids.toBeRemoved}`); + return ids.toBeRemoved; + } else { + return ids.toBeRemoved; + } } ); export const selectFavorites = (state: RootState) => state.favorites.favorites; diff --git a/src/redux/slices/meetingsAndUserStatusSlice.tsx b/src/redux/slices/meetingsAndUserStatusSlice.tsx index f43fe31..1b7a411 100644 --- a/src/redux/slices/meetingsAndUserStatusSlice.tsx +++ b/src/redux/slices/meetingsAndUserStatusSlice.tsx @@ -3,6 +3,7 @@ import DetailedMeeting from "../../api-bodies/DetailedMeeting"; import { RootState } from "../store"; import UserStatus from "../../api-bodies/UserStatus"; import axios from "../../api/axios"; +import { meetings } from "../../api-bodies/MockData"; interface MeetingsAndUserStatusState { meetings: DetailedMeeting[]; @@ -47,21 +48,35 @@ export const meetingsAndUserStatusSlice = createSlice({ export const fetchMeetings = createAsyncThunk( "meetingsAndUserStatus/fetchMeetings", async (uuid: string) => { - const response = await axios.get( - `/users/${uuid}/meetings?start=1900-01-01&end=2100-01-01` - ); - const meetings: DetailedMeeting[] = response.data.meetings; - const userStatuses: Record = {}; - meetings.forEach((meeting) => { - meeting.liveParticipantIds.forEach((uuid) => { - userStatuses[uuid] = { - userId: uuid, - inMeeting: true, - meetingId: meeting.meetingId, - }; + if (uuid) { + const response = await axios.get( + `/users/${uuid}/meetings?start=1900-01-01&end=2100-01-01` + ); + const meetings: DetailedMeeting[] = response.data.meetings; + const userStatuses: Record = {}; + meetings.forEach((meeting) => { + meeting.liveParticipantIds.forEach((uuid) => { + userStatuses[uuid] = { + userId: uuid, + inMeeting: true, + meetingId: meeting.meetingId, + }; + }); }); - }); - return { userStatuses: userStatuses, meetings: meetings }; + return { userStatuses: userStatuses, meetings: meetings }; + } else { + const userStatuses: Record = {}; + meetings.forEach((meeting) => { + meeting.liveParticipantIds.forEach((uuid) => { + userStatuses[uuid] = { + userId: uuid, + inMeeting: true, + meetingId: meeting.meetingId, + }; + }); + }); + return { userStatuses: userStatuses, meetings: meetings }; + } } ); diff --git a/src/redux/slices/usersSlice.tsx b/src/redux/slices/usersSlice.tsx index c082184..b3325da 100644 --- a/src/redux/slices/usersSlice.tsx +++ b/src/redux/slices/usersSlice.tsx @@ -3,6 +3,7 @@ import { RootState } from "../store"; import UserLite from "../../api-bodies/UserLite"; import axios from "../../api/axios"; import UserFull from "../../api-bodies/UserFull"; +import { userLites, team } from "../../api-bodies/MockData"; interface TeamState { user: string; @@ -36,33 +37,41 @@ export const usersSlice = createSlice({ export const fetchUsers = createAsyncThunk( "users/fetchUsers", async (uuid: string) => { - const users: Record = {}; - const team: TeamState = { - user: "", - manager: "", - sameManager: [], - directReports: [], - }; - // fetch userfull - const userResp = await axios.get(`/users/${uuid}`); - const user: UserFull = userResp.data.user; + if (uuid) { + const users: Record = {}; + const team: TeamState = { + user: "", + manager: "", + sameManager: [], + directReports: [], + }; + // fetch userfull + const userResp = await axios.get(`/users/${uuid}`); + const user: UserFull = userResp.data.user; - users[user.userInfo.uuid] = user.userInfo; - users[user.manager.uuid] = user.manager; + users[user.userInfo.uuid] = user.userInfo; + users[user.manager.uuid] = user.manager; - team.user = user.userInfo.uuid; - team.manager = user.manager.uuid; + team.user = user.userInfo.uuid; + team.manager = user.manager.uuid; - user.userDirectReports.forEach((userLite) => { - users[userLite.uuid] = userLite; - team.directReports.push(userLite.uuid); - }); - user.managerDirectReports.forEach((userLite) => { - users[userLite.uuid] = userLite; - team.sameManager.push(userLite.uuid); - }); - console.log(users); - return { users: users, team: team }; + user.userDirectReports.forEach((userLite) => { + users[userLite.uuid] = userLite; + team.directReports.push(userLite.uuid); + }); + user.managerDirectReports.forEach((userLite) => { + users[userLite.uuid] = userLite; + team.sameManager.push(userLite.uuid); + }); + console.log(users); + return { users: users, team: team }; + } else { + const users: Record = {}; + userLites.forEach((userLite) => { + users[userLite.uuid] = userLite; + }); + return { users: users, team: team }; + } } );