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) => { ...@@ -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
......