From ec710f4bbd7d86c502bbb886a2a4c1b1ef4d09fc Mon Sep 17 00:00:00 2001 From: Alex Standiford Date: Thu, 9 Sep 2021 06:13:45 -0600 Subject: [PATCH] Issue/3 - Introduce cache worker middleware (#4) (#5) * Introduces validate cache worker middleware. #2 * Version bump. #2 --- app/middlewares/setup/validateCacheWorker.js | 33 ++++++++++++++++++++ middlewares.js | 4 ++- package.json | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 app/middlewares/setup/validateCacheWorker.js diff --git a/app/middlewares/setup/validateCacheWorker.js b/app/middlewares/setup/validateCacheWorker.js new file mode 100644 index 0000000..73b9511 --- /dev/null +++ b/app/middlewares/setup/validateCacheWorker.js @@ -0,0 +1,33 @@ +import { clearCache } from 'nicholas-router' +import fetch from 'nicholas-wp' + +function check() { + new Promise( async ( res, rej ) => { + const status = await fetch( { path: '/nicholas/v1/cache-status' } ) + const cacheStatus = JSON.parse( window.sessionStorage.getItem( 'cacheStatus' ) ) + let cleared = false + + + if ( status.post_last_updated !== cacheStatus?.post_last_updated ) { + cleared = true + } else if ( status.theme_last_updated !== cacheStatus?.theme_last_updated ) { + cleared = true + } + + if ( true === cleared ) { + console.debug( 'Cache was cleared' ) + clearCache() + window.sessionStorage.setItem( 'cacheStatus', JSON.stringify( status ) ) + } else { + console.debug( 'Cache was checked, but did not need cleared' ) + } + } ) +} + +export default function ( args, next ) { + check() + // Check cache every 5 minutes + window.setInterval( check, 300000 ) + + next() +} \ No newline at end of file diff --git a/middlewares.js b/middlewares.js index 4f12cb5..765880d 100644 --- a/middlewares.js +++ b/middlewares.js @@ -3,6 +3,7 @@ import validateAdminPage from './app/middlewares/route/validateAdminPage' import validateCompatibilityMode from './app/middlewares/route/validateCompatibilityMode' import primeCache from './app/middlewares/route/primeCache' import setPreloadWorker from './app/middlewares/setup/setPreloadWorker' +import validateCacheWorker from './app/middlewares/setup/validateCacheWorker' // This should be compiled and exported as a global object. export { @@ -10,5 +11,6 @@ export { validateAdminPage, validateCompatibilityMode, primeCache, - setPreloadWorker + setPreloadWorker, + validateCacheWorker } \ No newline at end of file diff --git a/package.json b/package.json index 44ee22e..d70efd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nicholas-wp", - "version": "1.0.6", + "version": "1.0.7", "description": "WordPress support for Nicholas nearly headless theme framework", "main": "fetch.js", "scripts": {