1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-04-11 11:12:03 +02:00

Desktop: Fixes #6129: Exported JEX notebook should not contain share metadata

This commit is contained in:
Laurent Cozic 2022-02-12 17:44:07 +00:00
parent ed20604ad2
commit a70f9b1a13
2 changed files with 26 additions and 10 deletions

View File

@ -7,7 +7,7 @@ import Note from '../../models/Note';
import Tag from '../../models/Tag';
import Resource from '../../models/Resource';
import * as fs from 'fs-extra';
import { NoteEntity, ResourceEntity } from '../database/types';
import { FolderEntity, NoteEntity, ResourceEntity } from '../database/types';
import { ModelType } from '../../BaseModel';
const ArrayUtils = require('../../ArrayUtils');
@ -520,8 +520,11 @@ describe('services_InteropService', function() {
}));
it('should not export certain note properties', (async () => {
const folder = await Folder.save({ title: 'folder' });
await Note.save({ title: 'note', is_shared: 1, share_id: 'someid', parent_id: folder.id });
const folder = await Folder.save({ title: 'folder', share_id: 'some_id', is_shared: 1 });
let note = await Note.save({ title: 'note', is_shared: 1, share_id: 'someid', parent_id: folder.id });
note = await shim.attachFileToNote(note, `${supportDir}/photo.jpg`);
const resourceId = (await Note.linkedResourceIds(note.body))[0];
await Resource.save({ id: resourceId, share_id: 'some_id', is_shared: 1 });
const service = InteropService.instance();
const { result, module } = memoryExportModule();
@ -534,6 +537,16 @@ describe('services_InteropService', function() {
const exportedNote = (result.items.find(i => i.type === ModelType.Note)).object as NoteEntity;
expect(exportedNote.share_id).toBe('');
expect(exportedNote.is_shared).toBe(0);
const exportedFolder = (result.items.find(i => i.type === ModelType.Folder)).object as FolderEntity;
expect(exportedFolder.share_id).toBe('');
expect(exportedFolder.is_shared).toBe(0);
const exportedResource = (result.items.find(i => i.type === ModelType.Resource)).object as ResourceEntity;
expect(exportedResource.share_id).toBe('');
expect(exportedResource.is_shared).toBe(0);
console.info(result.items);
}));
it('should allow registering new import modules', (async () => {

View File

@ -9,7 +9,6 @@ import Resource from '../../models/Resource';
import Folder from '../../models/Folder';
import NoteTag from '../../models/NoteTag';
import Note from '../../models/Note';
import { NoteEntity } from '../database/types';
const ArrayUtils = require('../../ArrayUtils');
const { sprintf } = require('sprintf-js');
const { fileExtension } = require('../../path-utils');
@ -320,12 +319,16 @@ export default class InteropService {
return result;
}
private normalizeItemForExport(itemType: ModelType, item: any): any {
if (itemType === ModelType.Note) {
const output: NoteEntity = { ...item };
output.is_shared = 0;
output.share_id = '';
return output;
private normalizeItemForExport(_itemType: ModelType, item: any): any {
const override: any = {};
if ('is_shared' in item) override.is_shared = 0;
if ('share_id' in item) override.share_id = '';
if (Object.keys(override).length) {
return {
...item,
...override,
};
} else {
return item;
}