Do not write to disk if the json data hasn't actually changed
This commit is contained in:
parent
2365c9489e
commit
6091514630
@ -132,6 +132,8 @@ function Client(manager, name, config = {}) {
|
||||
|
||||
delay += 1000 + Math.floor(Math.random() * 1000);
|
||||
});
|
||||
|
||||
client.fileHash = manager.getDataToSave(client).newHash;
|
||||
}
|
||||
}
|
||||
|
||||
@ -679,6 +681,6 @@ Client.prototype.save = _.debounce(
|
||||
const client = this;
|
||||
client.manager.saveUser(client);
|
||||
},
|
||||
1000,
|
||||
{maxWait: 10000}
|
||||
5000,
|
||||
{maxWait: 20000}
|
||||
);
|
||||
|
@ -3,6 +3,7 @@
|
||||
const _ = require("lodash");
|
||||
const log = require("./log");
|
||||
const colors = require("chalk");
|
||||
const crypto = require("crypto");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const Client = require("./client");
|
||||
@ -175,11 +176,26 @@ ClientManager.prototype.addUser = function(name, password, enableLog) {
|
||||
return true;
|
||||
};
|
||||
|
||||
ClientManager.prototype.saveUser = function(client, callback) {
|
||||
ClientManager.prototype.getDataToSave = function(client) {
|
||||
const json = Object.assign({}, client.config, {
|
||||
networks: client.networks.map((n) => n.export()),
|
||||
});
|
||||
const newUser = JSON.stringify(json, null, "\t");
|
||||
const newHash = crypto
|
||||
.createHash("sha256")
|
||||
.update(newUser)
|
||||
.digest("hex");
|
||||
|
||||
return {newUser, newHash};
|
||||
};
|
||||
|
||||
ClientManager.prototype.saveUser = function(client, callback) {
|
||||
const {newUser, newHash} = this.getDataToSave(client);
|
||||
|
||||
// Do not write to disk if the exported data hasn't actually changed
|
||||
if (client.fileHash === newHash) {
|
||||
return;
|
||||
}
|
||||
|
||||
const pathReal = Helper.getUserConfigPath(client.name);
|
||||
const pathTemp = pathReal + ".tmp";
|
||||
|
@ -13,6 +13,12 @@ describe("Custom highlights", function() {
|
||||
const client = new Client(
|
||||
{
|
||||
clients: [],
|
||||
getDataToSave() {
|
||||
return {
|
||||
newUser: "",
|
||||
newHash: "",
|
||||
};
|
||||
},
|
||||
},
|
||||
"test",
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user