Add some global functions to remote-content for clearing out cached
remote content.
Showing
1 changed file
with
23 additions
and
2 deletions
| ... | @@ -36,7 +36,7 @@ const siteBaseQuery = async (args, api, options) => { | ... | @@ -36,7 +36,7 @@ const siteBaseQuery = async (args, api, options) => { |
| 36 | 36 | ||
| 37 | export const sitePageSlice = createApi({ | 37 | export const sitePageSlice = createApi({ |
| 38 | reducerPath: 'pages', | 38 | reducerPath: 'pages', |
| 39 | tagTypes: ['Page'], | 39 | tagTypes: ['Site', 'Page'], |
| 40 | keepUnusedDataFor: 60, | 40 | keepUnusedDataFor: 60, |
| 41 | refetchOnReconnect: true, | 41 | refetchOnReconnect: true, |
| 42 | refetchOnMountOrArgChange: true, | 42 | refetchOnMountOrArgChange: true, |
| ... | @@ -54,7 +54,10 @@ export const sitePageSlice = createApi({ | ... | @@ -54,7 +54,10 @@ export const sitePageSlice = createApi({ |
| 54 | }, | 54 | }, |
| 55 | providesTags: (result, err, args) => { | 55 | providesTags: (result, err, args) => { |
| 56 | const { site, page } = args | 56 | const { site, page } = args |
| 57 | return [ { type: 'Page', id: { site, page } } ] | 57 | return [ |
| 58 | { type: 'Site', id: site }, | ||
| 59 | { type: 'Page', id: `${site}:${page}` }, | ||
| 60 | ] | ||
| 58 | }, | 61 | }, |
| 59 | }), | 62 | }), |
| 60 | }), | 63 | }), |
| ... | @@ -83,5 +86,23 @@ export const getSiteBaseUrl = (name: string): string => { | ... | @@ -83,5 +86,23 @@ export const getSiteBaseUrl = (name: string): string => { |
| 83 | return configSlice.selectors.getSiteBaseUrl(store.getState(), name) | 86 | return configSlice.selectors.getSiteBaseUrl(store.getState(), name) |
| 84 | } | 87 | } |
| 85 | 88 | ||
| 89 | export const clearAll = () => { | ||
| 90 | return store.dispatch(sitePageSlice.util.invalidateTags([ 'Page' ])) | ||
| 91 | } | ||
| 92 | |||
| 93 | export const clearSite = (site: string) => { | ||
| 94 | return store.dispatch(sitePageSlice.util.invalidateTags([ { type: 'Site', id: site } ])) | ||
| 95 | } | ||
| 96 | |||
| 97 | export const clearPages = (site: string, ...pages: string) => { | ||
| 98 | return store.dispatch(sitePageSlice.util.invalidateTags(pages.map(page => ({ type: 'Page', id: `${site}/${page}` }) ))) | ||
| 99 | } | ||
| 100 | |||
| 101 | export const prefetch = (site: string, ...pages: string) => { | ||
| 102 | return Promise.all(pages.map(page => { | ||
| 103 | return store.dispatch(sitePageSlice.util.prefetch('getPage', { site, page }, { force: true })) | ||
| 104 | })) | ||
| 105 | } | ||
| 106 | |||
| 86 | setSiteConfig({ name: 'direct' }) | 107 | setSiteConfig({ name: 'direct' }) |
| 87 | 108 | ... | ... |
-
Please register or sign in to post a comment