You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-08-13 22:12:50 +02:00
Handle resource in enex files
This commit is contained in:
@@ -65,6 +65,26 @@ async function fuzzyMatch(note) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function saveNoteResources(note) {
|
||||||
|
let resourcesCreated = 0;
|
||||||
|
for (let i = 0; i < note.resources.length; i++) {
|
||||||
|
let resource = note.resources[i];
|
||||||
|
let toSave = Object.assign({}, resource);
|
||||||
|
delete toSave.data;
|
||||||
|
|
||||||
|
// The same resource sometimes appear twice in the same enex (exact same ID and file).
|
||||||
|
// In that case, just skip it - it means two different notes might be linked to the
|
||||||
|
// same resource.
|
||||||
|
let existingResource = await Resource.load(toSave.id);
|
||||||
|
if (existingResource) continue;
|
||||||
|
|
||||||
|
await Resource.save(toSave, { isNew: true });
|
||||||
|
await filePutContents(Resource.fullPath(toSave), resource.data)
|
||||||
|
resourcesCreated++;
|
||||||
|
}
|
||||||
|
return resourcesCreated;
|
||||||
|
}
|
||||||
|
|
||||||
async function saveNoteToStorage(note, fuzzyMatching = false) {
|
async function saveNoteToStorage(note, fuzzyMatching = false) {
|
||||||
note = Note.filter(note);
|
note = Note.filter(note);
|
||||||
|
|
||||||
@@ -77,17 +97,17 @@ async function saveNoteToStorage(note, fuzzyMatching = false) {
|
|||||||
resourcesCreated: 0,
|
resourcesCreated: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let resourcesCreated = await saveNoteResources(note);
|
||||||
|
result.resourcesCreated += resourcesCreated;
|
||||||
|
|
||||||
if (existingNote) {
|
if (existingNote) {
|
||||||
let diff = BaseModel.diffObjects(existingNote, note);
|
let diff = BaseModel.diffObjects(existingNote, note);
|
||||||
delete diff.tags;
|
delete diff.tags;
|
||||||
delete diff.resources;
|
delete diff.resources;
|
||||||
delete diff.id;
|
delete diff.id;
|
||||||
|
|
||||||
// TODO: also save resources
|
|
||||||
|
|
||||||
if (!Object.getOwnPropertyNames(diff).length) {
|
if (!Object.getOwnPropertyNames(diff).length) {
|
||||||
result.noteSkipped = true;
|
result.noteSkipped = true;
|
||||||
// TODO: also save resources
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,22 +116,6 @@ async function saveNoteToStorage(note, fuzzyMatching = false) {
|
|||||||
await Note.save(diff, { autoTimestamp: false })
|
await Note.save(diff, { autoTimestamp: false })
|
||||||
result.noteUpdated = true;
|
result.noteUpdated = true;
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < note.resources.length; i++) {
|
|
||||||
let resource = note.resources[i];
|
|
||||||
let toSave = Object.assign({}, resource);
|
|
||||||
delete toSave.data;
|
|
||||||
|
|
||||||
// The same resource sometimes appear twice in the same enex (exact same ID and file).
|
|
||||||
// In that case, just skip it - it means two different notes might be linked to the
|
|
||||||
// same resource.
|
|
||||||
let existingResource = await Resource.load(toSave.id);
|
|
||||||
if (existingResource) continue;
|
|
||||||
|
|
||||||
await Resource.save(toSave, { isNew: true });
|
|
||||||
await filePutContents(Resource.fullPath(toSave), resource.data)
|
|
||||||
result.resourcesCreated++;
|
|
||||||
}
|
|
||||||
|
|
||||||
await Note.save(note, {
|
await Note.save(note, {
|
||||||
isNew: true,
|
isNew: true,
|
||||||
autoTimestamp: false,
|
autoTimestamp: false,
|
||||||
|
@@ -365,7 +365,15 @@ commands.push({
|
|||||||
|
|
||||||
if (folderTitle) {
|
if (folderTitle) {
|
||||||
folder = await Folder.loadByField('title', folderTitle);
|
folder = await Folder.loadByField('title', folderTitle);
|
||||||
if (!folder) return cmdError(this, _('Folder does not exists: "%s"', folderTitle), end);
|
if (!folder) {
|
||||||
|
let ok = await cmdPromptConfirm(this, _('Folder does not exists: "%s". Create it?', folderTitle))
|
||||||
|
if (!ok) {
|
||||||
|
end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
folder = await Folder.save({ title: folderTitle });
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
folderTitle = filename(filePath);
|
folderTitle = filename(filePath);
|
||||||
folderTitle = _('Imported - %s', folderTitle);
|
folderTitle = _('Imported - %s', folderTitle);
|
||||||
|
Reference in New Issue
Block a user