empty string for mock data

This commit is contained in:
Taehee Choi 2022-03-25 13:15:25 -07:00
parent 04320c0ee5
commit ff8cd26a53
6 changed files with 101 additions and 59 deletions

View File

@ -77,7 +77,7 @@ const meetings = [
]; ];
const team = { const team = {
user: "0", user: "",
manager: "1", manager: "1",
sameManager: ["2", "3", "4", "5", "6"], sameManager: ["2", "3", "4", "5", "6"],
directReports: [], directReports: [],

View File

@ -7,7 +7,6 @@ import { selectUsers } from "../../redux/slices/usersSlice";
import { formatTimeFromDate } from "../../utils"; import { formatTimeFromDate } from "../../utils";
const MeetingsPanel: React.FC = () => { const MeetingsPanel: React.FC = () => {
const meetings = useAppSelector(selectMeetings); const meetings = useAppSelector(selectMeetings);
return ( return (
@ -19,7 +18,9 @@ const MeetingsPanel: React.FC = () => {
<Typography className="mylabel" sx={{ ml: 1 }}>Sunday, 03 Feb 2022</Typography> <Typography className="mylabel" sx={{ ml: 1 }}>Sunday, 03 Feb 2022</Typography>
</div> */} </div> */}
<div className="row panel-label"> <div className="row panel-label">
<Typography className="mylabel" sx={{ ml: 1 }}>Meetings in Progress</Typography> <Typography className="mylabel" sx={{ ml: 1 }}>
Meetings in Progress
</Typography>
</div> </div>
{meetings.map((meeting) => { {meetings.map((meeting) => {
@ -28,7 +29,7 @@ const MeetingsPanel: React.FC = () => {
); );
const startDate = new Date(meeting.start); const startDate = new Date(meeting.start);
const startDatemil = startDate.getTime(); const startDatemil = startDate.getTime();
const endDatemil = startDatemil + meeting.duration*60000; const endDatemil = startDatemil + meeting.duration * 60000;
const endDate = new Date(endDatemil); const endDate = new Date(endDatemil);
const [currentDate, setCurrentDate] = useState<Date>(new Date()); const [currentDate, setCurrentDate] = useState<Date>(new Date());
useEffect(() => { useEffect(() => {
@ -39,10 +40,16 @@ const MeetingsPanel: React.FC = () => {
if (currentDatemil >= startDatemil && currentDatemil <= endDatemil) { if (currentDatemil >= startDatemil && currentDatemil <= endDatemil) {
return ( return (
<Meeting <Meeting
meetingName={meeting.topic} meetingName={meeting.topic}
meetingTime={formatTimeFromDate(startDate) + " - " + formatTimeFromDate(endDate)} meetingTime={
meetingMembers={meetingMembers.map((userLite) => (" " + userLite.name + " ")).toString()} formatTimeFromDate(startDate) +
" - " +
formatTimeFromDate(endDate)
}
meetingMembers={meetingMembers
.map((userLite) => " " + userLite.name + " ")
.toString()}
/> />
); );
} }
@ -50,5 +57,5 @@ const MeetingsPanel: React.FC = () => {
</div> </div>
); );
}; };
export default MeetingsPanel; export default MeetingsPanel;

View File

@ -13,7 +13,6 @@ import { fetchFavorites } from "../../redux/slices/favoritesSlice";
import { fetchMeetings } from "../../redux/slices/meetingsAndUserStatusSlice"; import { fetchMeetings } from "../../redux/slices/meetingsAndUserStatusSlice";
import { fetchUsers } from "../../redux/slices/usersSlice"; import { fetchUsers } from "../../redux/slices/usersSlice";
import axios from "../../api/axios"; import axios from "../../api/axios";
import { socketActions } from "../../redux/slices/meetingsAndUserStatusSlice";
interface LocationState { interface LocationState {
from: { pathname: string }; from: { pathname: string };
@ -72,7 +71,6 @@ const Login: React.FC = () => {
setAuth.email = email; setAuth.email = email;
setAuth.isLoggedIn = true; setAuth.isLoggedIn = true;
store.dispatch(socketActions.startConnecting());
store.dispatch(fetchMeetings(logedInUserId)); store.dispatch(fetchMeetings(logedInUserId));
store.dispatch(fetchUsers(logedInUserId)); store.dispatch(fetchUsers(logedInUserId));
store.dispatch(fetchFavorites(logedInUserId)); store.dispatch(fetchFavorites(logedInUserId));

View File

@ -1,6 +1,7 @@
import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { createAsyncThunk, createSlice } from "@reduxjs/toolkit";
import { RootState } from "../store"; import { RootState } from "../store";
import axios from "../../api/axios"; import axios from "../../api/axios";
import { favorites } from "../../api-bodies/MockData";
interface FavoritesState { interface FavoritesState {
favorites: string[]; favorites: string[];
@ -32,25 +33,37 @@ export const favoritesSlice = createSlice({
export const fetchFavorites = createAsyncThunk( export const fetchFavorites = createAsyncThunk(
"favorites/fetchFavorites", "favorites/fetchFavorites",
async (uuid: string) => { async (uuid: string) => {
const response = await axios.get(`/users/${uuid}/favourites`); if (uuid) {
return response.data.userIds; const response = await axios.get(`/users/${uuid}/favourites`);
return response.data.userIds;
} else {
return favorites;
}
} }
); );
export const addFavorite = createAsyncThunk( export const addFavorite = createAsyncThunk(
"favorites/addFavorite", "favorites/addFavorite",
async (ids: { userId: string; toBeAdded: string }) => { async (ids: { userId: string; toBeAdded: string }) => {
await axios.post( if (ids.userId) {
`/users/${ids.userId}/favourites`, await axios.post(
JSON.stringify({ userId: ids.toBeAdded }) `/users/${ids.userId}/favourites`,
); JSON.stringify({ userId: ids.toBeAdded })
return ids.toBeAdded; );
return ids.toBeAdded;
} else {
return ids.toBeAdded;
}
} }
); );
export const removeFavorite = createAsyncThunk( export const removeFavorite = createAsyncThunk(
"favorites/removeFavorite", "favorites/removeFavorite",
async (ids: { userId: string; toBeRemoved: string }) => { async (ids: { userId: string; toBeRemoved: string }) => {
await axios.delete(`/users/${ids.userId}/favourites/${ids.toBeRemoved}`); if (ids.userId) {
return ids.toBeRemoved; await axios.delete(`/users/${ids.userId}/favourites/${ids.toBeRemoved}`);
return ids.toBeRemoved;
} else {
return ids.toBeRemoved;
}
} }
); );
export const selectFavorites = (state: RootState) => state.favorites.favorites; export const selectFavorites = (state: RootState) => state.favorites.favorites;

View File

@ -3,6 +3,7 @@ import DetailedMeeting from "../../api-bodies/DetailedMeeting";
import { RootState } from "../store"; import { RootState } from "../store";
import UserStatus from "../../api-bodies/UserStatus"; import UserStatus from "../../api-bodies/UserStatus";
import axios from "../../api/axios"; import axios from "../../api/axios";
import { meetings } from "../../api-bodies/MockData";
interface MeetingsAndUserStatusState { interface MeetingsAndUserStatusState {
meetings: DetailedMeeting[]; meetings: DetailedMeeting[];
@ -47,21 +48,35 @@ export const meetingsAndUserStatusSlice = createSlice({
export const fetchMeetings = createAsyncThunk( export const fetchMeetings = createAsyncThunk(
"meetingsAndUserStatus/fetchMeetings", "meetingsAndUserStatus/fetchMeetings",
async (uuid: string) => { async (uuid: string) => {
const response = await axios.get( if (uuid) {
`/users/${uuid}/meetings?start=1900-01-01&end=2100-01-01` 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<string, UserStatus> = {}; const meetings: DetailedMeeting[] = response.data.meetings;
meetings.forEach((meeting) => { const userStatuses: Record<string, UserStatus> = {};
meeting.liveParticipantIds.forEach((uuid) => { meetings.forEach((meeting) => {
userStatuses[uuid] = { meeting.liveParticipantIds.forEach((uuid) => {
userId: uuid, userStatuses[uuid] = {
inMeeting: true, userId: uuid,
meetingId: meeting.meetingId, inMeeting: true,
}; meetingId: meeting.meetingId,
};
});
}); });
}); return { userStatuses: userStatuses, meetings: meetings };
return { userStatuses: userStatuses, meetings: meetings }; } else {
const userStatuses: Record<string, UserStatus> = {};
meetings.forEach((meeting) => {
meeting.liveParticipantIds.forEach((uuid) => {
userStatuses[uuid] = {
userId: uuid,
inMeeting: true,
meetingId: meeting.meetingId,
};
});
});
return { userStatuses: userStatuses, meetings: meetings };
}
} }
); );

View File

@ -3,6 +3,7 @@ import { RootState } from "../store";
import UserLite from "../../api-bodies/UserLite"; import UserLite from "../../api-bodies/UserLite";
import axios from "../../api/axios"; import axios from "../../api/axios";
import UserFull from "../../api-bodies/UserFull"; import UserFull from "../../api-bodies/UserFull";
import { userLites, team } from "../../api-bodies/MockData";
interface TeamState { interface TeamState {
user: string; user: string;
@ -36,33 +37,41 @@ export const usersSlice = createSlice({
export const fetchUsers = createAsyncThunk( export const fetchUsers = createAsyncThunk(
"users/fetchUsers", "users/fetchUsers",
async (uuid: string) => { async (uuid: string) => {
const users: Record<string, UserLite> = {}; if (uuid) {
const team: TeamState = { const users: Record<string, UserLite> = {};
user: "", const team: TeamState = {
manager: "", user: "",
sameManager: [], manager: "",
directReports: [], sameManager: [],
}; directReports: [],
// fetch userfull };
const userResp = await axios.get(`/users/${uuid}`); // fetch userfull
const user: UserFull = userResp.data.user; const userResp = await axios.get(`/users/${uuid}`);
const user: UserFull = userResp.data.user;
users[user.userInfo.uuid] = user.userInfo; users[user.userInfo.uuid] = user.userInfo;
users[user.manager.uuid] = user.manager; users[user.manager.uuid] = user.manager;
team.user = user.userInfo.uuid; team.user = user.userInfo.uuid;
team.manager = user.manager.uuid; team.manager = user.manager.uuid;
user.userDirectReports.forEach((userLite) => { user.userDirectReports.forEach((userLite) => {
users[userLite.uuid] = userLite; users[userLite.uuid] = userLite;
team.directReports.push(userLite.uuid); team.directReports.push(userLite.uuid);
}); });
user.managerDirectReports.forEach((userLite) => { user.managerDirectReports.forEach((userLite) => {
users[userLite.uuid] = userLite; users[userLite.uuid] = userLite;
team.sameManager.push(userLite.uuid); team.sameManager.push(userLite.uuid);
}); });
console.log(users); console.log(users);
return { users: users, team: team }; return { users: users, team: team };
} else {
const users: Record<string, UserLite> = {};
userLites.forEach((userLite) => {
users[userLite.uuid] = userLite;
});
return { users: users, team: team };
}
} }
); );