Add a getUrl to remote content, that looks to see if the url matches a
pre-configured site, and redirects the call to that. If nothing matches, it falls back on 'default'.
Showing
1 changed file
with
13 additions
and
0 deletions
... | @@ -21,6 +21,7 @@ export const configSlice = createSlice({ | ... | @@ -21,6 +21,7 @@ export const configSlice = createSlice({ |
21 | } | 21 | } |
22 | }, | 22 | }, |
23 | selectors: { | 23 | selectors: { |
24 | getSites: (state) => Object.keys(state.sites).filter(site => site !== 'default'), | ||
24 | getSiteBaseUrl: (state, name) => state.sites?.[ name ]?.baseUrl, | 25 | getSiteBaseUrl: (state, name) => state.sites?.[ name ]?.baseUrl, |
25 | }, | 26 | }, |
26 | }) | 27 | }) |
... | @@ -73,6 +74,18 @@ export const store = configureStore({ | ... | @@ -73,6 +74,18 @@ export const store = configureStore({ |
73 | ]), | 74 | ]), |
74 | }) | 75 | }) |
75 | 76 | ||
77 | export const getUrl = async(url: string) => { | ||
78 | const state = store.getState() | ||
79 | const sites = configSlice.selectors.getSites(state) | ||
80 | for (const site of sites) { | ||
81 | const baseUrl = configSlice.selectors.getSiteBaseUrl(state, site) | ||
82 | if (url.startsWith(baseUrl)) { | ||
83 | return getSitePage(site, url.substring(baseUrl.length + 1)) | ||
84 | } | ||
85 | } | ||
86 | return getSitePage('default', url) | ||
87 | } | ||
88 | |||
76 | export const getSitePage = async (site: string, page: string) => { | 89 | export const getSitePage = async (site: string, page: string) => { |
77 | const result = await store.dispatch(sitePageSlice.endpoints.getPage.initiate({ site, page })) | 90 | const result = await store.dispatch(sitePageSlice.endpoints.getPage.initiate({ site, page })) |
78 | return result | 91 | return result | ... | ... |
-
Please register or sign in to post a comment