42 lines
No EOL
1.2 KiB
JavaScript
42 lines
No EOL
1.2 KiB
JavaScript
const state = require('./state')
|
|
const settingsCache = require('./settingsCache')
|
|
const newSettingsLoader = require('../new-settings-loader')
|
|
const helpers = require('../route-helpers')
|
|
|
|
const SETTINGS_CACHE_REFRESH = 60 * 60 * 1000
|
|
|
|
const populateSettings = function (req, res, next) {
|
|
const versionId = req.headers['config-version']
|
|
if (versionId !== state.oldVersionId) {
|
|
state.oldVersionId = versionId
|
|
}
|
|
|
|
// Clear cache every hour
|
|
if (Date.now() - settingsCache.getTimestamp() > SETTINGS_CACHE_REFRESH) {
|
|
settingsCache.clearCache()
|
|
}
|
|
|
|
if (!versionId && settingsCache.getCache()) {
|
|
req.settings = settingsCache.getCache()
|
|
return next()
|
|
}
|
|
|
|
if (!versionId && !settingsCache.getCache()) {
|
|
return newSettingsLoader.loadLatest()
|
|
.then(settings => {
|
|
settingsCache.setCache(settings)
|
|
settingsCache.setTimestamp(Date.now())
|
|
req.settings = settings
|
|
})
|
|
.then(() => next())
|
|
.catch(next)
|
|
}
|
|
|
|
newSettingsLoader.load(versionId)
|
|
.then(settings => { req.settings = settings })
|
|
.then(() => helpers.updateDeviceConfigVersion(versionId))
|
|
.then(() => next())
|
|
.catch(next)
|
|
}
|
|
|
|
module.exports = populateSettings |