Avoid sending async updates on config update

In
7a5d727e22
the 'set-user-settings' callback was changed so that it nolonger
returned the promise created by `ConfigFile.update()`. This meant that
the logic in
[`ApplicateDelegate.onDidChangeUserSetting()`](https://github.com/atom/atom/blob/5f0231b/src/application-delegate.js#L193-L206) which uses
`.pendingSettingUpdateCount` to avoid triggering in response to calls to
ApplicationDelegate.setUserSettings` was no longer effective.

I noticed this when updating settings via the setting view. If you type
at just the right (wrong?) cadence, you'll notice that your input can
get updated with stale values.

Something like this:

```
You type            "a"      "b"            "c"
config.set          "a"      "ab"           "ac"
config.observe                        "a"         "ab"    "ac"
Input value         "a"      "ab"     "a"   "ac"  "ab"    "ac"
```

It's possible that is the same as https://github.com/atom/settings-view/issues/1062

After this change typing in settings input seems to behave as expected.
This commit is contained in:
Jordan Eldredge
2018-12-05 14:34:30 -08:00
parent aad7705687
commit 878629dd0a

View File

@@ -576,7 +576,7 @@ class AtomApplication extends EventEmitter {
this.disposable.add(ipcHelpers.respondTo('set-user-settings', (window, settings, filePath) => {
if (!this.quitting) {
ConfigFile.at(filePath || this.configFilePath).update(JSON.parse(settings))
return ConfigFile.at(filePath || this.configFilePath).update(JSON.parse(settings))
}
}))