ddb16a0b by Adam Heath

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'.
1 parent 8fe5527a
......@@ -21,6 +21,7 @@ export const configSlice = createSlice({
}
},
selectors: {
getSites: (state) => Object.keys(state.sites).filter(site => site !== 'default'),
getSiteBaseUrl: (state, name) => state.sites?.[ name ]?.baseUrl,
},
})
......@@ -73,6 +74,18 @@ export const store = configureStore({
]),
})
export const getUrl = async(url: string) => {
const state = store.getState()
const sites = configSlice.selectors.getSites(state)
for (const site of sites) {
const baseUrl = configSlice.selectors.getSiteBaseUrl(state, site)
if (url.startsWith(baseUrl)) {
return getSitePage(site, url.substring(baseUrl.length + 1))
}
}
return getSitePage('default', url)
}
export const getSitePage = async (site: string, page: string) => {
const result = await store.dispatch(sitePageSlice.endpoints.getPage.initiate({ site, page }))
return result
......