1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-26 18:58:21 +02:00

Merge branch 'dev' into release-2.6

This commit is contained in:
Laurent Cozic 2021-12-13 10:34:01 +01:00
commit 7c42688072
5 changed files with 28 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import MigrationHandler from '@joplin/lib/services/synchronizer/MigrationHandler
import ResourceFetcher from '@joplin/lib/services/ResourceFetcher';
import Synchronizer from '@joplin/lib/Synchronizer';
import { masterKeysWithoutPassword } from '@joplin/lib/services/e2ee/utils';
import { appTypeToLockType } from '@joplin/lib/services/synchronizer/LockHandler';
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { OneDriveApiNodeUtils } = require('@joplin/lib/onedrive-api-node-utils.js');
@ -188,7 +189,7 @@ class Command extends BaseCommand {
sync.api(),
reg.db(),
sync.lockHandler(),
Setting.value('appType'),
appTypeToLockType(Setting.value('appType')),
Setting.value('clientId')
);

View File

@ -1,5 +1,5 @@
import Logger from './Logger';
import LockHandler, { hasActiveLock, LockClientType, LockType } from './services/synchronizer/LockHandler';
import LockHandler, { appTypeToLockType, hasActiveLock, LockClientType, LockType } from './services/synchronizer/LockHandler';
import Setting, { AppType } from './models/Setting';
import shim from './shim';
import MigrationHandler from './services/synchronizer/MigrationHandler';
@ -53,7 +53,7 @@ export default class Synchronizer {
private db_: JoplinDatabase;
private api_: FileApi;
private appType_: string;
private appType_: AppType;
private logger_: Logger = new Logger();
private state_: string = 'idle';
private cancelling_: boolean = false;
@ -77,7 +77,7 @@ export default class Synchronizer {
public dispatch: Function;
public constructor(db: JoplinDatabase, api: FileApi, appType: string) {
public constructor(db: JoplinDatabase, api: FileApi, appType: AppType) {
this.db_ = db;
this.api_ = api;
this.appType_ = appType;
@ -123,13 +123,7 @@ export default class Synchronizer {
private lockClientType(): LockClientType {
if (this.lockClientType_) return this.lockClientType_;
if (this.appType_ === AppType.Desktop) this.lockClientType_ = LockClientType.Desktop;
if (this.appType_ === AppType.Mobile) this.lockClientType_ = LockClientType.Mobile;
if (this.appType_ === AppType.Cli) this.lockClientType_ = LockClientType.Cli;
if (!this.lockClientType_) throw new Error(`Invalid client type: ${this.appType_}`);
this.lockClientType_ = appTypeToLockType(this.appType_);
return this.lockClientType_;
}
@ -141,7 +135,7 @@ export default class Synchronizer {
maxResourceSize() {
if (this.maxResourceSize_ !== null) return this.maxResourceSize_;
return this.appType_ === 'mobile' ? 100 * 1000 * 1000 : Infinity;
return this.appType_ === AppType.Mobile ? 100 * 1000 * 1000 : Infinity;
}
public setShareService(v: ShareService) {

View File

@ -3,6 +3,7 @@ import shim from '../../shim';
import JoplinError from '../../JoplinError';
import time from '../../time';
import { FileApi } from '../../file-api';
import { AppType } from '../../models/Setting';
const { fileExtension, filename } = require('../../path-utils');
export enum LockType {
@ -46,6 +47,13 @@ export function lockNameToObject(name: string, updatedTime: number = null): Lock
return lock;
}
export function appTypeToLockType(appType: AppType): LockClientType {
if (appType === AppType.Desktop) return LockClientType.Desktop;
if (appType === AppType.Mobile) return LockClientType.Mobile;
if (appType === AppType.Cli) return LockClientType.Cli;
throw new Error(`Invalid app type: ${appType}`);
}
export function hasActiveLock(locks: Lock[], currentDate: Date, lockTtl: number, lockType: LockType, clientType: LockClientType = null, clientId: string = null) {
const lock = activeLock(locks, currentDate, lockTtl, lockType, clientType, clientId);
return !!lock;

View File

@ -2,6 +2,7 @@ import shim from '../../../shim';
import MigrationHandler from '../MigrationHandler';
import Setting from '../../../models/Setting';
import { reg } from '../../../registry';
import { appTypeToLockType } from '../LockHandler';
const { useEffect, useState } = shim.react();
export interface SyncTargetUpgradeResult {
@ -28,7 +29,7 @@ export default function useSyncTargetUpgrade(): SyncTargetUpgradeResult {
synchronizer.api(),
reg.db(),
synchronizer.lockHandler(),
Setting.value('appType'),
appTypeToLockType(Setting.value('appType')),
Setting.value('clientId')
);

View File

@ -70,6 +70,17 @@ Difficulty Level: High
Skills Required: TypeScript, JavaScript, React Native, React Hooks. You'll also need to learn about CodeMirror 6 if you're not already familiar with it.
## 6. Improve integration of the richtext/WYSIWYG editor
Joplin offers a richtext/WYSIWYG typing experience alongside the Markdown editor but there are a number of areas that could do with improvement when it comes to integration with Joplin as a whole.
Areas for consideration include increasing compatibility with Joplin-wide keybindings (many are currently static), limiting features of the editor not compatible with markdown formatting, reducing the impact of data changes caused by swapping between editors.
Also read the document about limitations of the editor: [https://joplinapp.org/rich_text_editor/](https://joplinapp.org/rich_text_editor/)
Difficulty level: High
Skills Required: Typescript, Javascript, CSS, HTML, Markdown rendering. You will also need to learn about TinyMCE if you're not already familiar with it.
# More info
- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/gsoc2022/index/)