mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-28 05:14:12 +03:00
Emitted all settings events on reinit of cache (#12012)
closes #12003 There are a few parts of Ghost that rely on the settings events being emitted anytime a setting is changed, so that the data is kept in sync. When a setting is renamed in a migration essentially what happens is that the settings value is changed from a default value to its actual value, but this does no emit an event. Anything that is initialised before migrations have run that relies on the events to keep it up to date will have stale data - e.g. the themes i18n service. This change ensures that when we `reinit` after migrations have been run, we emit events for every setting to tell the rest of Ghost that it has changed.
This commit is contained in:
parent
289c1b3e8a
commit
8b6ec4d922
@ -6,18 +6,17 @@ const models = require('../../models');
|
||||
const SettingsCache = require('./cache');
|
||||
|
||||
module.exports = {
|
||||
init: function init() {
|
||||
// Update the defaults
|
||||
return models.Settings.populateDefaults()
|
||||
.then((settingsCollection) => {
|
||||
// Initialise the cache with the result
|
||||
// This will bind to events for further updates
|
||||
SettingsCache.init(settingsCollection);
|
||||
});
|
||||
async init() {
|
||||
const settingsCollection = await models.Settings.populateDefaults();
|
||||
SettingsCache.init(settingsCollection);
|
||||
},
|
||||
|
||||
reinit: function reinit() {
|
||||
async reinit() {
|
||||
SettingsCache.shutdown();
|
||||
return this.init();
|
||||
const settingsCollection = await models.Settings.populateDefaults();
|
||||
SettingsCache.init(settingsCollection);
|
||||
for (const model of settingsCollection.models) {
|
||||
model.emitChange(model.attributes.key + '.' + 'edited', {});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user