Skip to content

Commit 0e7622e

Browse files
author
Alexis Beingessner
committed
Ticket OscarGodson#233 - making autosaves only happen when text has changed, tweaking what is an autosave
1 parent 2dafd51 commit 0e7622e

File tree

4 files changed

+44
-12
lines changed

4 files changed

+44
-12
lines changed

epiceditor/js/epiceditor.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@
13401340
}
13411341
else {
13421342
_setText(self.editor, defaultContent);
1343-
self.save(false, true); // ensure a save
1343+
self.save(); // ensure a save
13441344
self.emit('create');
13451345
}
13461346
self.previewer.innerHTML = self.exportFile(null, 'html');
@@ -1386,6 +1386,10 @@
13861386
storage[file].modified = new Date();
13871387
isUpdate = true;
13881388
}
1389+
//don't bother autosaving if the content hasn't actually changed
1390+
else if (_isAuto) {
1391+
return;
1392+
}
13891393

13901394
storage[file].content = content;
13911395
this._storage[previewDraftName + self.settings.localStorageName] = JSON.stringify(storage);
@@ -1396,11 +1400,11 @@
13961400
// Emit a private update event so it can't get accidentally removed
13971401
self.emit('__update');
13981402
}
1399-
1400-
if (_isAuto || _isPreviewDraft) {
1403+
1404+
if (_isAuto) {
14011405
this.emit('autosave');
14021406
}
1403-
else {
1407+
else if (!_isPreviewDraft) {
14041408
this.emit('save');
14051409
}
14061410
}
@@ -1475,7 +1479,7 @@
14751479
self.emit('create');
14761480
}
14771481

1478-
self.save(false, true);
1482+
self.save();
14791483

14801484
if (self.is('fullscreen')) {
14811485
self.preview();

epiceditor/js/epiceditor.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/editor.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@
13401340
}
13411341
else {
13421342
_setText(self.editor, defaultContent);
1343-
self.save(false, true); // ensure a save
1343+
self.save(); // ensure a save
13441344
self.emit('create');
13451345
}
13461346
self.previewer.innerHTML = self.exportFile(null, 'html');
@@ -1386,6 +1386,10 @@
13861386
storage[file].modified = new Date();
13871387
isUpdate = true;
13881388
}
1389+
//don't bother autosaving if the content hasn't actually changed
1390+
else if (_isAuto) {
1391+
return;
1392+
}
13891393

13901394
storage[file].content = content;
13911395
this._storage[previewDraftName + self.settings.localStorageName] = JSON.stringify(storage);
@@ -1396,11 +1400,11 @@
13961400
// Emit a private update event so it can't get accidentally removed
13971401
self.emit('__update');
13981402
}
1399-
1400-
if (_isAuto || _isPreviewDraft) {
1403+
1404+
if (_isAuto) {
14011405
this.emit('autosave');
14021406
}
1403-
else {
1407+
else if (!_isPreviewDraft) {
14041408
this.emit('save');
14051409
}
14061410
}
@@ -1475,7 +1479,7 @@
14751479
self.emit('create');
14761480
}
14771481

1478-
self.save(false, true);
1482+
self.save();
14791483

14801484
if (self.is('fullscreen')) {
14811485
self.preview();

test/test.save.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,35 @@ describe('.save()', function () {
5656
editor.on('autosave', function () {
5757
eventFired = true;
5858
});
59-
editor.save(true);
59+
editor.getElement('editor').body.innerHTML = 'bar';
60+
editor.save(false, true);
6061
expect(eventFired).to.be(true);
6162
expect(badEventFired).to.be(false);
6263
});
6364

65+
it('should not fire an event', function () {
66+
editor.on('save', function () {
67+
badEventFired = true;
68+
});
69+
editor.on('autosave', function () {
70+
badEventFired = true;
71+
});
72+
editor.save(true);
73+
expect(badEventFired).to.be(false);
74+
});
75+
76+
it('should fire the autosave event only once', function () {
77+
editor.on('autosave', function () {
78+
eventFired = true;
79+
});
80+
editor.getElement('editor').body.innerHTML = 'bar';
81+
editor.save(false, true);
82+
expect(eventFired).to.be(true);
83+
eventFired = false;
84+
editor.save(false, true);
85+
expect(eventFired).to.be(false);
86+
});
87+
6488
it('should fire the update event on save when the content has changed', function () {
6589
editor.on('update', function () {
6690
eventFired = true;

0 commit comments

Comments
 (0)