From 90307cea5b6c124e227a5e1a4f81451b7187ccbf Mon Sep 17 00:00:00 2001 From: Jack Le Hamster Date: Sun, 16 Jan 2022 00:30:39 -0800 Subject: [PATCH] Change parameters --- demo/direct-data.html | 4 +++- public/direct-data.js | 18 +++++++++--------- src/direct-data.js | 18 +++++++++--------- src/index.test.js | 13 +++++++------ 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/demo/direct-data.html b/demo/direct-data.html index 43bea8b..f8d9b34 100644 --- a/demo/direct-data.html +++ b/demo/direct-data.html @@ -25,7 +25,9 @@ }; - const directData = new DirectData(localReader, localWriter, null, 500); + const directData = new DirectData({ + dataReader: localReader, dataWriter: localWriter, saveAfterMillis: 500, + }); directData.onSave = () => showData(directData); async function changeData(field, value) { diff --git a/public/direct-data.js b/public/direct-data.js index 506d16d..d407d5e 100644 --- a/public/direct-data.js +++ b/public/direct-data.js @@ -216,14 +216,15 @@ const { DataWriter } = require("./base/data-writer"); const { DataReader } = require("./base/data-reader"); class DirectData { - constructor(dataReader, dataWriter, dataEndPoint, saveAfterMillis) { + constructor(parameters) { + const { fileUtils, dataReader, dataWriter, dataEndPoint, saveAfterMillis, onSave } = parameters || {}; this.dataStore = {}; this.pendingSave = new Set(); this.dataEndPoint = dataEndPoint || "/data"; this.dataWriter = dataWriter || new DataWriter(this.dataEndPoint); - this.dataReader = dataReader || new DataReader(null, this.dataEndPoint); + this.dataReader = dataReader || new DataReader(fileUtils, this.dataEndPoint); this.saveAfterMillis = saveAfterMillis || 3000; - this.onSave = null; + this.onSave = onSave; } async getData(path) { @@ -250,12 +251,11 @@ class DirectData { if (!canWrite) { return; } - this.save().then(response => { - console.info(`Save performed. response: ${response}`); - if (this.onSave) { - this.onSave(); - } - }); + const response = await this.save(); + console.info(`Save performed. response: ${response}`); + if (this.onSave) { + this.onSave(); + } } async save() { diff --git a/src/direct-data.js b/src/direct-data.js index a9f1b8d..5827338 100644 --- a/src/direct-data.js +++ b/src/direct-data.js @@ -2,14 +2,15 @@ const { DataWriter } = require("./base/data-writer"); const { DataReader } = require("./base/data-reader"); class DirectData { - constructor(dataReader, dataWriter, dataEndPoint, saveAfterMillis) { + constructor(parameters) { + const { fileUtils, dataReader, dataWriter, dataEndPoint, saveAfterMillis, onSave } = parameters || {}; this.dataStore = {}; this.pendingSave = new Set(); this.dataEndPoint = dataEndPoint || "/data"; this.dataWriter = dataWriter || new DataWriter(this.dataEndPoint); - this.dataReader = dataReader || new DataReader(null, this.dataEndPoint); + this.dataReader = dataReader || new DataReader(fileUtils, this.dataEndPoint); this.saveAfterMillis = saveAfterMillis || 3000; - this.onSave = null; + this.onSave = onSave; } async getData(path) { @@ -36,12 +37,11 @@ class DirectData { if (!canWrite) { return; } - this.save().then(response => { - console.info(`Save performed. response: ${response}`); - if (this.onSave) { - this.onSave(); - } - }); + const response = await this.save(); + console.info(`Save performed. response: ${response}`); + if (this.onSave) { + this.onSave(); + } } async save() { diff --git a/src/index.test.js b/src/index.test.js index dd9eafd..e2a7356 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -26,17 +26,18 @@ MockXhr.onSend = (xhr) => { describe('DirectData', function() { it('should save data', function(done) { const fileUtils = new FileUtils(MockXhr); - const directData = new DirectData( - new DataReader(fileUtils, "/test"), - { + const directData = new DirectData({ + fileUtils, + dataWriter: { write: async body => { expect(body.db1.test).to.equal(123); return '{"success": true}'; }, }, - "/test", 10); - - directData.onSave = () => done(); + dataEndPoint: "/test", + saveAfterMillis: 10, + onSave: () => done(), + }); directData.getData("db1").then(data1 => { data1.test = 123;