8fe5527a by Adam Heath

Add some global functions to remote-content for clearing out cached

remote content.
1 parent 769b1bb0
......@@ -36,7 +36,7 @@ const siteBaseQuery = async (args, api, options) => {
export const sitePageSlice = createApi({
reducerPath: 'pages',
tagTypes: ['Page'],
tagTypes: ['Site', 'Page'],
keepUnusedDataFor: 60,
refetchOnReconnect: true,
refetchOnMountOrArgChange: true,
......@@ -54,7 +54,10 @@ export const sitePageSlice = createApi({
},
providesTags: (result, err, args) => {
const { site, page } = args
return [ { type: 'Page', id: { site, page } } ]
return [
{ type: 'Site', id: site },
{ type: 'Page', id: `${site}:${page}` },
]
},
}),
}),
......@@ -83,5 +86,23 @@ export const getSiteBaseUrl = (name: string): string => {
return configSlice.selectors.getSiteBaseUrl(store.getState(), name)
}
export const clearAll = () => {
return store.dispatch(sitePageSlice.util.invalidateTags([ 'Page' ]))
}
export const clearSite = (site: string) => {
return store.dispatch(sitePageSlice.util.invalidateTags([ { type: 'Site', id: site } ]))
}
export const clearPages = (site: string, ...pages: string) => {
return store.dispatch(sitePageSlice.util.invalidateTags(pages.map(page => ({ type: 'Page', id: `${site}/${page}` }) )))
}
export const prefetch = (site: string, ...pages: string) => {
return Promise.all(pages.map(page => {
return store.dispatch(sitePageSlice.util.prefetch('getPage', { site, page }, { force: true }))
}))
}
setSiteConfig({ name: 'direct' })
......