Skip to content

Commit 1f67c8e

Browse files
committed
Links and menus generally work with portal
1 parent c14f1c0 commit 1f67c8e

File tree

2 files changed

+17
-30
lines changed

2 files changed

+17
-30
lines changed

src/app/components/shell/router-helpers/use-link-handler.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {useCallback} from 'react';
22
import {useNavigate, NavigateOptions} from 'react-router-dom';
3+
import usePortalContext from '~/contexts/portal';
34
import linkHelper from '~/helpers/link';
45
import $ from '~/helpers/$';
56
import retry from '~/helpers/retry';
@@ -10,9 +11,12 @@ export type TrackingInfo = {
1011
book_format?: string;
1112
contact_id?: string;
1213
resource_name?: string;
13-
}
14+
};
1415

15-
export type TrackedMouseEvent = React.MouseEvent<HTMLAnchorElement, MouseEvent> & {
16+
export type TrackedMouseEvent = React.MouseEvent<
17+
HTMLAnchorElement,
18+
MouseEvent
19+
> & {
1620
trackingInfo: TrackingInfo;
1721
};
1822

@@ -32,12 +36,18 @@ function handleExternalLink(href: Location['href'], el: HTMLElement) {
3236
type State = NavigateOptions & {x: number; y: number};
3337

3438
export default function useLinkHandler() {
39+
const {portal} = usePortalContext();
3540
const navigate = useNavigate();
3641
const navigateTo = useCallback(
3742
(path: Location['href'], state: State = {x: 0, y: 0}) => {
38-
navigate(linkHelper.stripOpenStaxDomain(path), state);
43+
let adjustedPath = linkHelper.stripOpenStaxDomain(path);
44+
45+
if (portal && !adjustedPath.startsWith(`/${portal}`)) {
46+
adjustedPath = `/${portal}${adjustedPath}`;
47+
}
48+
navigate(adjustedPath, state);
3949
},
40-
[navigate]
50+
[navigate, portal]
4151
);
4252
const linkHandler = useCallback(
4353
// eslint-disable-next-line complexity

src/app/components/shell/router.js

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -132,32 +132,9 @@ function MainRoutes() {
132132
<Layout>
133133
<Routes>
134134
<Route path="/" element={<ImportedPage name="home" />} />
135-
{
136-
FOOTER_PAGES.map(
137-
(path) => <Route path={path} key={path} element={<ImportedPage name="footer-page" />} />
138-
)
139-
}
140-
<Route path="/errata/" element={<ImportedPage name="errata-summary" />} />
141-
<Route path="/errata/form/" element={<ImportedPage name="errata-form" />} />
142-
<Route path="/errata/*" element={<ImportedPage name="errata-detail" />} />
143-
<Route path="/details/books/:title" element={<ImportedPage name="details" />} />
144-
<Route path="/details/:title" element={<RedirectToCanonicalDetailsPage />} />
145-
<Route path="/details/" element={<Navigate to="/subjects" replace />} />
146-
<Route path="/books/:title" element={<RedirectToCanonicalDetailsPage />} />
147-
<Route path="/textbooks/:title" element={<RedirectToCanonicalDetailsPage />} />
148-
<Route path="/subjects/*" element={<ImportedPage name="subjects" />} />
149-
<Route path="/k12/*" element={<ImportedPage name="k12" />} />
150-
<Route path="/blog/*" element={<ImportedPage name="blog" />} />
151-
<Route path="/webinars/*" element={<ImportedPage name="webinars" />} />
152-
<Route path="/general/*" element={<ImportedPage name="general" />} />
153-
<Route path="/confirmation/*" element={<ImportedPage name="confirmation" />} />
154-
<Route path="/campaign/*" element={<ImportedPage name="campaign" />} />
155-
<Route path="/press/*" element={<ImportedPage name="press" />} />
156-
<Route
157-
path="/edtech-partner-program"
158-
element={<ImportedPage name="/openstax-ally-technology-partner-program" />}
159-
/>
160-
<Route path="/:name/" element={<TopLevelPage />} />
135+
</Routes>
136+
<RoutesAlsoInPortal />
137+
<Routes>
161138
<Route path="/:portal/*" element={<PortalRouter />} />
162139
<Route element={<h1>Fell through</h1>} />
163140
</Routes>

0 commit comments

Comments
 (0)