From 1824ae4d2d4701850a1e60b8a470adb833d8ed0a Mon Sep 17 00:00:00 2001 From: mojo9492 Date: Thu, 3 Jun 2021 16:07:15 -0700 Subject: [PATCH 1/3] Add UserContext --- client/src/Event/EventDetails.tsx | 144 ++++++++++++++------------- client/src/Navigation/DrawerMenu.tsx | 24 ++++- client/src/Users/UserApi.ts | 1 + 3 files changed, 97 insertions(+), 72 deletions(-) diff --git a/client/src/Event/EventDetails.tsx b/client/src/Event/EventDetails.tsx index ba35f98d..8957f6e7 100644 --- a/client/src/Event/EventDetails.tsx +++ b/client/src/Event/EventDetails.tsx @@ -12,80 +12,82 @@ interface EventDetailsProps { tsrEvent: TsrEvent; } -export const EventDetails = React.memo(({ tsrEvent }: EventDetailsProps): ReactElement => { - const startEndDate = (startDate: Moment, endDate: Moment): ReactElement => { - if (startDate.isSame(endDate)) { - return ; - } else { - return ( - <> - - - - ); - } - }; +export const EventDetails = React.memo( + ({ tsrEvent }: EventDetailsProps): ReactElement => { + const startEndDate = (startDate: Moment, endDate: Moment): ReactElement => { + if (startDate.isSame(endDate)) { + return ; + } else { + return ( + <> + + + + ); + } + }; - const longDateFormat = (date: Moment): string => - `${date.local().format(LONG_DATE_TIME_FORMAT)} (${userTimeZone()})`; + const longDateFormat = (date: Moment): string => + `${date.local().format(LONG_DATE_TIME_FORMAT)} (${userTimeZone()})`; - const dateLastModifiedFormat = (dateLastModified: Moment): string => { - const diffMoment = moment.duration(currentTimeUtc().diff(dateLastModified)); - let numOfTime = 0; - let unitOfTime = ""; - if (diffMoment.days() >= 7) { - return dateLastModified.format(SHORT_DATE_FORMAT); - } else if (diffMoment.days() > 0) { - numOfTime = diffMoment.days(); - unitOfTime = "day"; - } else if (diffMoment.hours() > 0) { - numOfTime = diffMoment.hours(); - unitOfTime = "hour"; - } else if (diffMoment.minutes() > 5) { - numOfTime = diffMoment.minutes(); - unitOfTime = "minute"; - } else { - return "just now..."; - } - if (numOfTime > 1) { - unitOfTime = `${unitOfTime}s`; - } - return `${numOfTime} ${unitOfTime} ago`; - }; + const dateLastModifiedFormat = (dateLastModified: Moment): string => { + const diffMoment = moment.duration(currentTimeUtc().diff(dateLastModified)); + let numOfTime = 0; + let unitOfTime = ""; + if (diffMoment.days() >= 7) { + return dateLastModified.format(SHORT_DATE_FORMAT); + } else if (diffMoment.days() > 0) { + numOfTime = diffMoment.days(); + unitOfTime = "day"; + } else if (diffMoment.hours() > 0) { + numOfTime = diffMoment.hours(); + unitOfTime = "hour"; + } else if (diffMoment.minutes() > 5) { + numOfTime = diffMoment.minutes(); + unitOfTime = "minute"; + } else { + return "just now..."; + } + if (numOfTime > 1) { + unitOfTime = `${unitOfTime}s`; + } + return `${numOfTime} ${unitOfTime} ago`; + }; - const mapOrganizations = () => { - const orgArray = tsrEvent.organizations.map((org) => org.organizationDisplayName); - return orgArray.join("; "); - }; + const mapOrganizations = () => { + const orgArray = tsrEvent.organizations.map((org) => org.organizationDisplayName); + return orgArray.join("; "); + }; - return ( - <> - - {startEndDate(moment.utc(tsrEvent.startDate), moment.utc(tsrEvent.endDate))} - - - - - ); -}); + return ( + <> + + {startEndDate(moment.utc(tsrEvent.startDate), moment.utc(tsrEvent.endDate))} + + + + + ); + }, +); EventDetails.displayName = "EventDetails"; diff --git a/client/src/Navigation/DrawerMenu.tsx b/client/src/Navigation/DrawerMenu.tsx index c35ff286..24e9142d 100644 --- a/client/src/Navigation/DrawerMenu.tsx +++ b/client/src/Navigation/DrawerMenu.tsx @@ -1,12 +1,14 @@ -import React, { ReactElement, useState } from "react"; +import React, { ReactElement, useContext, useState } from "react"; import { DrawerIcon } from "../Icons/DrawerIcon"; import "./DrawerMenu.css"; import { LinkButton } from "../Buttons/Buttons"; import { DrawerCloseIcon } from "./DrawerCloseIcon"; import { NavLink } from "react-router-dom"; import LogoBold from "../Icons/TrackedIconBold.svg"; +import UserContext from "../Users/UserContext"; export const DrawerMenu: React.FC = (): ReactElement => { + const tsrUser = useContext(UserContext); const [drawerOpen, setDrawerOpen] = useState(false); const openDrawer = () => setDrawerOpen(true); const closeDrawer = () => setDrawerOpen(false); @@ -43,6 +45,26 @@ export const DrawerMenu: React.FC = (): ReactElement => { + {tsrUser ? ( + <> +
+

Organizations

+ {tsrUser.settings.organizations.map((org) => { + return ( + + {org.organizationDisplayName} + + ); + })} +
+ + ) : ( + <> + )} +

Settings

Date: Fri, 4 Jun 2021 13:07:37 -0700 Subject: [PATCH 2/3] Add App route to OrganizationSettings component Add links in DrawerMenu to subscribed Orgs --- client/src/App.tsx | 5 + client/src/Event/EventDetails.tsx | 144 +++++++++--------- client/src/Navigation/DrawerMenu.tsx | 2 +- .../src/Organization/OrganizationSettings.tsx | 30 ++++ 4 files changed, 107 insertions(+), 74 deletions(-) create mode 100644 client/src/Organization/OrganizationSettings.tsx diff --git a/client/src/App.tsx b/client/src/App.tsx index 309c1e68..5e4176bb 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -11,6 +11,7 @@ import { Footer } from "./Navigation/Footer"; import { About } from "./About"; import { UserSettings } from "./Users/UserSettings"; import { UserContextProvider } from "./Users/UserContext"; +import OrganizationSettings from "./Organization/OrganizationSettings"; const App: React.FC = () => { return ( @@ -26,6 +27,10 @@ const App: React.FC = () => { + diff --git a/client/src/Event/EventDetails.tsx b/client/src/Event/EventDetails.tsx index 8957f6e7..ba35f98d 100644 --- a/client/src/Event/EventDetails.tsx +++ b/client/src/Event/EventDetails.tsx @@ -12,82 +12,80 @@ interface EventDetailsProps { tsrEvent: TsrEvent; } -export const EventDetails = React.memo( - ({ tsrEvent }: EventDetailsProps): ReactElement => { - const startEndDate = (startDate: Moment, endDate: Moment): ReactElement => { - if (startDate.isSame(endDate)) { - return ; - } else { - return ( - <> - - - - ); - } - }; +export const EventDetails = React.memo(({ tsrEvent }: EventDetailsProps): ReactElement => { + const startEndDate = (startDate: Moment, endDate: Moment): ReactElement => { + if (startDate.isSame(endDate)) { + return ; + } else { + return ( + <> + + + + ); + } + }; - const longDateFormat = (date: Moment): string => - `${date.local().format(LONG_DATE_TIME_FORMAT)} (${userTimeZone()})`; + const longDateFormat = (date: Moment): string => + `${date.local().format(LONG_DATE_TIME_FORMAT)} (${userTimeZone()})`; - const dateLastModifiedFormat = (dateLastModified: Moment): string => { - const diffMoment = moment.duration(currentTimeUtc().diff(dateLastModified)); - let numOfTime = 0; - let unitOfTime = ""; - if (diffMoment.days() >= 7) { - return dateLastModified.format(SHORT_DATE_FORMAT); - } else if (diffMoment.days() > 0) { - numOfTime = diffMoment.days(); - unitOfTime = "day"; - } else if (diffMoment.hours() > 0) { - numOfTime = diffMoment.hours(); - unitOfTime = "hour"; - } else if (diffMoment.minutes() > 5) { - numOfTime = diffMoment.minutes(); - unitOfTime = "minute"; - } else { - return "just now..."; - } - if (numOfTime > 1) { - unitOfTime = `${unitOfTime}s`; - } - return `${numOfTime} ${unitOfTime} ago`; - }; + const dateLastModifiedFormat = (dateLastModified: Moment): string => { + const diffMoment = moment.duration(currentTimeUtc().diff(dateLastModified)); + let numOfTime = 0; + let unitOfTime = ""; + if (diffMoment.days() >= 7) { + return dateLastModified.format(SHORT_DATE_FORMAT); + } else if (diffMoment.days() > 0) { + numOfTime = diffMoment.days(); + unitOfTime = "day"; + } else if (diffMoment.hours() > 0) { + numOfTime = diffMoment.hours(); + unitOfTime = "hour"; + } else if (diffMoment.minutes() > 5) { + numOfTime = diffMoment.minutes(); + unitOfTime = "minute"; + } else { + return "just now..."; + } + if (numOfTime > 1) { + unitOfTime = `${unitOfTime}s`; + } + return `${numOfTime} ${unitOfTime} ago`; + }; - const mapOrganizations = () => { - const orgArray = tsrEvent.organizations.map((org) => org.organizationDisplayName); - return orgArray.join("; "); - }; + const mapOrganizations = () => { + const orgArray = tsrEvent.organizations.map((org) => org.organizationDisplayName); + return orgArray.join("; "); + }; - return ( - <> - - {startEndDate(moment.utc(tsrEvent.startDate), moment.utc(tsrEvent.endDate))} - - - - - ); - }, -); + return ( + <> + + {startEndDate(moment.utc(tsrEvent.startDate), moment.utc(tsrEvent.endDate))} + + + + + ); +}); EventDetails.displayName = "EventDetails"; diff --git a/client/src/Navigation/DrawerMenu.tsx b/client/src/Navigation/DrawerMenu.tsx index 24e9142d..f81b31d3 100644 --- a/client/src/Navigation/DrawerMenu.tsx +++ b/client/src/Navigation/DrawerMenu.tsx @@ -53,7 +53,7 @@ export const DrawerMenu: React.FC = (): ReactElement => { return ( {org.organizationDisplayName} diff --git a/client/src/Organization/OrganizationSettings.tsx b/client/src/Organization/OrganizationSettings.tsx new file mode 100644 index 00000000..e2c46df0 --- /dev/null +++ b/client/src/Organization/OrganizationSettings.tsx @@ -0,0 +1,30 @@ +import React, { useContext, useEffect } from "react"; +import UserContext from "../Users/UserContext"; + +const OrganizationSettings: React.FC = () => { + const tsrUser = useContext(UserContext); + + useEffect(() => { + if (tsrUser === undefined) { + return; + } + }, [tsrUser]); + + if (tsrUser === undefined) { + return <>; + } + + if (tsrUser.settings.organizations === undefined) { + console.log("no orgs"); + } + + return ( + <> +

{`${tsrUser.username} organization settings`}

+

Role: {tsrUser.role}

+

{tsrUser.settings.organizations}

+ + ); +}; + +export default OrganizationSettings; From ec50878559ccc1a9da7d78beaf3a306d76f7045b Mon Sep 17 00:00:00 2001 From: mojo9492 Date: Sun, 13 Jun 2021 12:48:16 -0700 Subject: [PATCH 3/3] OrganizationSettings layout --- .../src/Organization/OrganizationSettings.tsx | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/client/src/Organization/OrganizationSettings.tsx b/client/src/Organization/OrganizationSettings.tsx index e2c46df0..e1962e93 100644 --- a/client/src/Organization/OrganizationSettings.tsx +++ b/client/src/Organization/OrganizationSettings.tsx @@ -3,6 +3,9 @@ import UserContext from "../Users/UserContext"; const OrganizationSettings: React.FC = () => { const tsrUser = useContext(UserContext); + const url = window.location.href; + const orgPath = url.length - 1; + const orgId = url[orgPath]; useEffect(() => { if (tsrUser === undefined) { @@ -19,11 +22,18 @@ const OrganizationSettings: React.FC = () => { } return ( - <> -

{`${tsrUser.username} organization settings`}

-

Role: {tsrUser.role}

-

{tsrUser.settings.organizations}

- +
+

{`${tsrUser.username} organization: ${orgId} settings`}

+
+
+

Role

+ +
+ +
); };