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