1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Desktop: Fixes #1676: Preserve user timestamps when adding note via API

This commit is contained in:
Laurent Cozic 2019-06-22 12:31:04 +01:00
parent 0ecf2d6d9a
commit 6ee2595dce
2 changed files with 29 additions and 2 deletions

View File

@ -156,6 +156,25 @@ describe('services_rest_Api', function() {
done(); done();
}); });
it('should preserve user timestamps when creating notes', async (done) => {
let response = null;
const f = await Folder.save({ title: "mon carnet" });
const updatedTime = Date.now() - 1000;
const createdTime = Date.now() - 10000;
response = await api.route('POST', 'notes', null, JSON.stringify({
parent_id: f.id,
user_updated_time: updatedTime,
user_created_time: createdTime,
}));
expect(response.user_updated_time).toBe(updatedTime);
expect(response.user_created_time).toBe(createdTime);
done();
});
it('should create notes with supplied ID', async (done) => { it('should create notes with supplied ID', async (done) => {
let response = null; let response = null;
const f = await Folder.save({ title: "mon carnet" }); const f = await Folder.save({ title: "mon carnet" });

View File

@ -1,4 +1,5 @@
const { ltrimSlashes } = require('lib/path-utils.js'); const { ltrimSlashes } = require('lib/path-utils.js');
const { Database } = require('lib/database.js');
const Folder = require('lib/models/Folder'); const Folder = require('lib/models/Folder');
const Note = require('lib/models/Note'); const Note = require('lib/models/Note');
const Tag = require('lib/models/Tag'); const Tag = require('lib/models/Tag');
@ -383,6 +384,11 @@ class Api {
this.logger().info('Request (' + requestId + '): Saving note...'); this.logger().info('Request (' + requestId + '): Saving note...');
const saveOptions = this.defaultSaveOptions_(note, 'POST'); const saveOptions = this.defaultSaveOptions_(note, 'POST');
saveOptions.autoTimestamp = false; // No auto-timestamp because user may have provided them
const timestamp = Date.now();
note.updated_time = timestamp;
note.created_time = timestamp;
note = await Note.save(note, saveOptions); note = await Note.save(note, saveOptions);
if (requestNote.tags) { if (requestNote.tags) {
@ -442,8 +448,10 @@ class Api {
output.parent_id = folder.id; output.parent_id = folder.id;
} }
if (requestNote.source_url) output.source_url = requestNote.source_url; if ('source_url' in requestNote) output.source_url = requestNote.source_url;
if (requestNote.author) output.author = requestNote.author; if ('author' in requestNote) output.author = requestNote.author;
if ('user_updated_time' in requestNote) output.user_updated_time = Database.formatValue(Database.TYPE_INT, requestNote.user_updated_time);
if ('user_created_time' in requestNote) output.user_created_time = Database.formatValue(Database.TYPE_INT, requestNote.user_created_time);
return output; return output;
} }