From 891f7ff57b2a331fa2c441e0d10e977a25d93bb2 Mon Sep 17 00:00:00 2001 From: Andrew Rioux Date: Fri, 23 Jun 2023 20:15:35 -0400 Subject: [PATCH] fix: fixed shallow state change comparisons --- packages/client/src/App.tsx | 6 + packages/client/src/components/PageRouter.tsx | 407 +++++++++--------- 2 files changed, 208 insertions(+), 205 deletions(-) diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx index eca661d8..553ee60d 100755 --- a/packages/client/src/App.tsx +++ b/packages/client/src/App.tsx @@ -52,6 +52,7 @@ import { import fetchApi, { fetchAPIForAccount } from './lib/apis'; import { getMember } from './lib/Members'; import { store } from './store'; +import { deletePageState } from './state/pageState'; interface AppUIState { sideNavLinks: SideNavigationItem[]; @@ -258,6 +259,7 @@ export default class App extends React.Component< authorizeUser={this.authorizeUser} registry={this.state.Registry} key="pagerouter" + deleteReduxState={this.deleteReduxState} /> ); @@ -265,6 +267,10 @@ export default class App extends React.Component< this.setState({ sideNavLinks }); }; + private deleteReduxState = (): void => { + store.dispatch(deletePageState()); + }; + private updateBreadCrumbs = (breadCrumbs: BreadCrumb[]): void => { this.setState({ breadCrumbs }); }; diff --git a/packages/client/src/components/PageRouter.tsx b/packages/client/src/components/PageRouter.tsx index 3c6de10e..9ae22a84 100755 --- a/packages/client/src/components/PageRouter.tsx +++ b/packages/client/src/components/PageRouter.tsx @@ -66,214 +66,211 @@ import { BreadCrumb } from './BreadCrumbs'; import ErrorHandler from './ErrorHandler'; import Loader from './Loader'; import { SideNavigationItem } from './page-elements/SideNavigation'; -import { connect } from 'react-redux'; -import { deletePageState } from '../state/pageState'; -import { AnyAction } from 'redux'; const pages: Array<{ url: string; component: typeof Page | React.FC>; exact: boolean; }> = [ - { - url: '/', - component: Main, - exact: true, - }, - { - url: '/eventform', - component: AddEvent, - exact: true, - }, - { - url: '/addevent', - component: AddEvent, - exact: true, - }, - { - url: '/eventviewer/:id', - component: EventViewer, - exact: false, - }, - { - url: '/auditviewer/:id', - component: AuditViewer, - exact: false, - }, - { - url: '/eventlinklist', - component: LinkList, - exact: false, - }, - { - url: '/eventform/:id', - component: ModifyEvent, - exact: false, - }, - { - url: '/modifyevent/:id', - component: ModifyEvent, - exact: false, - }, - { - url: '/changelog', - component: ChangeLog, - exact: true, - }, - { - url: '/calendar/:month?/:year?', - component: Calendar, - exact: false, - }, - { - url: '/filemanagement/:id?', - component: Drive, - exact: false, - }, - { - url: '/drive/:id?', - component: Drive, - exact: false, - }, - { - url: '/multiadd/:id', - component: AttendanceMultiAdd, - exact: false, - }, - { - url: '/team/create', - component: TeamAdd, - exact: false, - }, - { - url: '/team', - component: TeamList, - exact: true, - }, - { - url: '/teamlist', - component: TeamList, - exact: false, - }, - { - url: '/team/list', - component: TeamList, - exact: false, - }, - { - url: '/teamview/:id', - component: TeamView, - exact: false, - }, - { - url: '/team/emails/:id', - component: TeamEmailList, - exact: false, - }, - { - url: '/team/view/:id', - component: TeamView, - exact: false, - }, - { - url: '/team/edit/:id', - component: TeamEdit, - exact: false, - }, - { - url: '/team/:id', - component: TeamView, - exact: false, - }, - { - url: '/admin', - component: Admin, - exact: false, - }, - { - url: '/regedit', - component: RegEdit, - exact: false, - }, - { - url: '/flightassign', - component: FlightAssign, - exact: false, - }, - // { - // url: '/notifications', - // component: Notifications, - // exact: false, - // }, - { - url: '/debug', - component: Debug, - exact: true, - }, - { - url: '/signin', - component: SigninF, - exact: false, - }, - { - url: '/finishaccount/:token', - component: FinishSignup, - exact: true, - }, - { - url: '/create-account', - component: Signup, - exact: true, - }, - { - url: '/passwordreset', - component: RequestPasswordResetForm, - exact: true, - }, - { - url: '/usernamerequest', - component: RequestUsernameForm, - exact: true, - }, - { - url: '/finishpasswordreset/:token', - component: FinishPasswordResetForm, - exact: true, - }, - { - url: '/registerdiscord/:discordid', - component: RegisterDiscord, - exact: true, - }, - { - url: '/capr393quizzer', - component: Quizzer, - exact: false, - }, - { - url: '/events/scanadd/:id', - component: ScanAdd, - exact: false, - }, - { - url: '/terms-and-conditions', - component: TermsAndConditions, - exact: false, - }, - { - url: '/privacy-policy', - component: PrivacyPolicy, - exact: false, - }, + { + url: '/', + component: Main, + exact: true, + }, + { + url: '/eventform', + component: AddEvent, + exact: true, + }, + { + url: '/addevent', + component: AddEvent, + exact: true, + }, + { + url: '/eventviewer/:id', + component: EventViewer, + exact: false, + }, + { + url: '/auditviewer/:id', + component: AuditViewer, + exact: false, + }, + { + url: '/eventlinklist', + component: LinkList, + exact: false, + }, + { + url: '/eventform/:id', + component: ModifyEvent, + exact: false, + }, + { + url: '/modifyevent/:id', + component: ModifyEvent, + exact: false, + }, + { + url: '/changelog', + component: ChangeLog, + exact: true, + }, + { + url: '/calendar/:month?/:year?', + component: Calendar, + exact: false, + }, + { + url: '/filemanagement/:id?', + component: Drive, + exact: false, + }, + { + url: '/drive/:id?', + component: Drive, + exact: false, + }, + { + url: '/multiadd/:id', + component: AttendanceMultiAdd, + exact: false, + }, + { + url: '/team/create', + component: TeamAdd, + exact: false, + }, + { + url: '/team', + component: TeamList, + exact: true, + }, + { + url: '/teamlist', + component: TeamList, + exact: false, + }, + { + url: '/team/list', + component: TeamList, + exact: false, + }, + { + url: '/teamview/:id', + component: TeamView, + exact: false, + }, + { + url: '/team/emails/:id', + component: TeamEmailList, + exact: false, + }, + { + url: '/team/view/:id', + component: TeamView, + exact: false, + }, + { + url: '/team/edit/:id', + component: TeamEdit, + exact: false, + }, + { + url: '/team/:id', + component: TeamView, + exact: false, + }, + { + url: '/admin', + component: Admin, + exact: false, + }, + { + url: '/regedit', + component: RegEdit, + exact: false, + }, + { + url: '/flightassign', + component: FlightAssign, + exact: false, + }, + // { + // url: '/notifications', + // component: Notifications, + // exact: false, + // }, + { + url: '/debug', + component: Debug, + exact: true, + }, + { + url: '/signin', + component: SigninF, + exact: false, + }, + { + url: '/finishaccount/:token', + component: FinishSignup, + exact: true, + }, + { + url: '/create-account', + component: Signup, + exact: true, + }, + { + url: '/passwordreset', + component: RequestPasswordResetForm, + exact: true, + }, + { + url: '/usernamerequest', + component: RequestUsernameForm, + exact: true, + }, + { + url: '/finishpasswordreset/:token', + component: FinishPasswordResetForm, + exact: true, + }, + { + url: '/registerdiscord/:discordid', + component: RegisterDiscord, + exact: true, + }, + { + url: '/capr393quizzer', + component: Quizzer, + exact: false, + }, + { + url: '/events/scanadd/:id', + component: ScanAdd, + exact: false, + }, + { + url: '/terms-and-conditions', + component: TermsAndConditions, + exact: false, + }, + { + url: '/privacy-policy', + component: PrivacyPolicy, + exact: false, + }, - // THIS GOES LAST - // Otherwise, have fun debugging why you get a 404 for every page - { - url: '/', - component: NotFound, - exact: false, - }, -]; + // THIS GOES LAST + // Otherwise, have fun debugging why you get a 404 for every page + { + url: '/', + component: NotFound, + exact: false, + }, + ]; const composeElement = (props: { @@ -289,7 +286,7 @@ const composeElement = key: string; deleteReduxState: () => void; }) => - (routeProps: RouteComponentProps) => + (routeProps: RouteComponentProps) => ( { registry: RegistryValues; fullMemberDetails: SigninReturn; updateApp: () => void; - dispatch: (action: AnyAction) => void; + deleteReduxState: () => void; } interface PageRouterState { @@ -477,7 +474,7 @@ class PageRouter extends React.Component { fullMemberDetails: this.props.fullMemberDetails, updateApp: this.props.updateApp, key: value.url, - deleteReduxState: () => this.props.dispatch(deletePageState) + deleteReduxState: this.props.deleteReduxState })} /> ))} @@ -486,4 +483,4 @@ class PageRouter extends React.Component { ); } -export default connect()(withRouter(PageRouter)); +export default withRouter(PageRouter);