You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-16 00:14:34 +02:00
Chore: clean up
This commit is contained in:
@ -545,8 +545,6 @@ describe('services_InteropService', function() {
|
|||||||
const exportedResource = (result.items.find(i => i.type === ModelType.Resource)).object as ResourceEntity;
|
const exportedResource = (result.items.find(i => i.type === ModelType.Resource)).object as ResourceEntity;
|
||||||
expect(exportedResource.share_id).toBe('');
|
expect(exportedResource.share_id).toBe('');
|
||||||
expect(exportedResource.is_shared).toBe(0);
|
expect(exportedResource.is_shared).toBe(0);
|
||||||
|
|
||||||
console.info(result.items);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should allow registering new import modules', (async () => {
|
it('should allow registering new import modules', (async () => {
|
||||||
|
@ -27,19 +27,19 @@ export default class InteropService {
|
|||||||
return this.instance_;
|
return this.instance_;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
public constructor() {
|
||||||
this.eventEmitter_ = new EventEmitter();
|
this.eventEmitter_ = new EventEmitter();
|
||||||
}
|
}
|
||||||
|
|
||||||
on(eventName: string, callback: Function) {
|
public on(eventName: string, callback: Function) {
|
||||||
return this.eventEmitter_.on(eventName, callback);
|
return this.eventEmitter_.on(eventName, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
off(eventName: string, callback: Function) {
|
public off(eventName: string, callback: Function) {
|
||||||
return this.eventEmitter_.removeListener(eventName, callback);
|
return this.eventEmitter_.removeListener(eventName, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
modules() {
|
public modules() {
|
||||||
if (!this.defaultModules_) {
|
if (!this.defaultModules_) {
|
||||||
const importModules: Module[] = [
|
const importModules: Module[] = [
|
||||||
{
|
{
|
||||||
@ -156,7 +156,7 @@ export default class InteropService {
|
|||||||
// or exporters, such as ENEX. In this case, the one marked as "isDefault"
|
// or exporters, such as ENEX. In this case, the one marked as "isDefault"
|
||||||
// is returned. This is useful to auto-detect the module based on the format.
|
// is returned. This is useful to auto-detect the module based on the format.
|
||||||
// For more precise matching, newModuleFromPath_ should be used.
|
// For more precise matching, newModuleFromPath_ should be used.
|
||||||
findModuleByFormat_(type: ModuleType, format: string, target: FileSystemItem = null, outputFormat: ImportModuleOutputFormat = null) {
|
private findModuleByFormat_(type: ModuleType, format: string, target: FileSystemItem = null, outputFormat: ImportModuleOutputFormat = null) {
|
||||||
const modules = this.modules();
|
const modules = this.modules();
|
||||||
const matches = [];
|
const matches = [];
|
||||||
for (let i = 0; i < modules.length; i++) {
|
for (let i = 0; i < modules.length; i++) {
|
||||||
@ -203,7 +203,7 @@ export default class InteropService {
|
|||||||
* https://github.com/laurent22/joplin/pull/1795#discussion_r322379121) but
|
* https://github.com/laurent22/joplin/pull/1795#discussion_r322379121) but
|
||||||
* we can do it if it ever becomes necessary.
|
* we can do it if it ever becomes necessary.
|
||||||
*/
|
*/
|
||||||
newModuleByFormat_(type: ModuleType, format: string, outputFormat: ImportModuleOutputFormat = ImportModuleOutputFormat.Markdown) {
|
private newModuleByFormat_(type: ModuleType, format: string, outputFormat: ImportModuleOutputFormat = ImportModuleOutputFormat.Markdown) {
|
||||||
const moduleMetadata = this.findModuleByFormat_(type, format, null, outputFormat);
|
const moduleMetadata = this.findModuleByFormat_(type, format, null, outputFormat);
|
||||||
if (!moduleMetadata) throw new Error(_('Cannot load "%s" module for format "%s" and output "%s"', type, format, outputFormat));
|
if (!moduleMetadata) throw new Error(_('Cannot load "%s" module for format "%s" and output "%s"', type, format, outputFormat));
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ export default class InteropService {
|
|||||||
*
|
*
|
||||||
* https://github.com/laurent22/joplin/pull/1795#pullrequestreview-281574417
|
* https://github.com/laurent22/joplin/pull/1795#pullrequestreview-281574417
|
||||||
*/
|
*/
|
||||||
newModuleFromPath_(type: ModuleType, options: any) {
|
private newModuleFromPath_(type: ModuleType, options: any) {
|
||||||
const moduleMetadata = this.findModuleByFormat_(type, options.format, options.target);
|
const moduleMetadata = this.findModuleByFormat_(type, options.format, options.target);
|
||||||
if (!moduleMetadata) throw new Error(_('Cannot load "%s" module for format "%s" and target "%s"', type, options.format, options.target));
|
if (!moduleMetadata) throw new Error(_('Cannot load "%s" module for format "%s" and target "%s"', type, options.format, options.target));
|
||||||
|
|
||||||
@ -246,32 +246,9 @@ export default class InteropService {
|
|||||||
output.setMetadata({ options, ...moduleMetadata });
|
output.setMetadata({ options, ...moduleMetadata });
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
|
|
||||||
// let modulePath = options && options.modulePath ? options.modulePath : '';
|
|
||||||
|
|
||||||
// if (!modulePath) {
|
|
||||||
// const moduleMetadata = this.findModuleByFormat_(type, options.format, options.target);
|
|
||||||
// if (!moduleMetadata) throw new Error(_('Cannot load "%s" module for format "%s" and target "%s"', type, options.format, options.target));
|
|
||||||
// modulePath = this.modulePath(moduleMetadata);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const moduleMetadata = this.findModuleByFormat_(type, options.format, options.target);
|
|
||||||
|
|
||||||
// let output = null;
|
|
||||||
|
|
||||||
// if (moduleMetadata.isCustom) {
|
|
||||||
// output = this.newModuleFromCustomFactory(moduleMetadata);
|
|
||||||
// } else {
|
|
||||||
// const ModuleClass = shim.requireDynamic(modulePath).default;
|
|
||||||
// output = new ModuleClass();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// output.setMetadata({ options, ...moduleMetadata });
|
|
||||||
|
|
||||||
// return output;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
moduleByFileExtension_(type: ModuleType, ext: string) {
|
private moduleByFileExtension_(type: ModuleType, ext: string) {
|
||||||
ext = ext.toLowerCase();
|
ext = ext.toLowerCase();
|
||||||
|
|
||||||
const modules = this.modules();
|
const modules = this.modules();
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import BaseModel, { AclAction, SaveOptions, ValidateOptions } from './BaseModel';
|
import BaseModel, { AclAction, SaveOptions, ValidateOptions } from './BaseModel';
|
||||||
import { EmailSender, Item, NotificationLevel, Subscription, User, UserFlagType, Uuid } from '../services/database/types';
|
import { EmailSender, Item, NotificationLevel, Subscription, User, UserFlagType, Uuid } from '../services/database/types';
|
||||||
import * as auth from '../utils/auth';
|
import * as auth from '../utils/auth';
|
||||||
import { ErrorUnprocessableEntity, ErrorForbidden, ErrorPayloadTooLarge, ErrorNotFound } from '../utils/errors';
|
import { ErrorUnprocessableEntity, ErrorForbidden, ErrorPayloadTooLarge, ErrorNotFound, ErrorBadRequest } from '../utils/errors';
|
||||||
import { ModelType } from '@joplin/lib/BaseModel';
|
import { ModelType } from '@joplin/lib/BaseModel';
|
||||||
import { _ } from '@joplin/lib/locale';
|
import { _ } from '@joplin/lib/locale';
|
||||||
import { formatBytes, GB, MB } from '../utils/bytes';
|
import { formatBytes, GB, MB } from '../utils/bytes';
|
||||||
@ -600,7 +600,12 @@ export default class UserModel extends BaseModel<User> {
|
|||||||
|
|
||||||
private async syncInfo(userId: Uuid): Promise<any> {
|
private async syncInfo(userId: Uuid): Promise<any> {
|
||||||
const item = await this.models().item().loadByName(userId, 'info.json');
|
const item = await this.models().item().loadByName(userId, 'info.json');
|
||||||
if (!item) throw new Error('Cannot find info.json file');
|
|
||||||
|
// We can get there if user 1 tries to share a notebook with user 2, but
|
||||||
|
// user 2 has never initiated a sync. In this case, they won't have the
|
||||||
|
// info.json file that we need, so we try to return an error message
|
||||||
|
// that makes sense.
|
||||||
|
if (!item) throw new ErrorBadRequest('The account of this user is not correctly initialised (missing info.json)');
|
||||||
const withContent = await this.models().item().loadWithContent(item.id);
|
const withContent = await this.models().item().loadWithContent(item.id);
|
||||||
return JSON.parse(withContent.content.toString());
|
return JSON.parse(withContent.content.toString());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user