1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-21 09:38:01 +02:00

Plugins: Added joplin.versionInfo method

This commit is contained in:
Laurent Cozic 2022-07-03 14:32:29 +01:00
parent 6744dc3a8a
commit 3b35ab6581
7 changed files with 90 additions and 25 deletions

View File

@ -1489,6 +1489,9 @@ packages/lib/services/keychain/KeychainServiceDriver.node.js.map
packages/lib/services/keychain/KeychainServiceDriverBase.d.ts
packages/lib/services/keychain/KeychainServiceDriverBase.js
packages/lib/services/keychain/KeychainServiceDriverBase.js.map
packages/lib/services/plugins/BasePlatformImplementation.d.ts
packages/lib/services/plugins/BasePlatformImplementation.js
packages/lib/services/plugins/BasePlatformImplementation.js.map
packages/lib/services/plugins/BasePluginRunner.d.ts
packages/lib/services/plugins/BasePluginRunner.js
packages/lib/services/plugins/BasePluginRunner.js.map

3
.gitignore vendored
View File

@ -1479,6 +1479,9 @@ packages/lib/services/keychain/KeychainServiceDriver.node.js.map
packages/lib/services/keychain/KeychainServiceDriverBase.d.ts
packages/lib/services/keychain/KeychainServiceDriverBase.js
packages/lib/services/keychain/KeychainServiceDriverBase.js.map
packages/lib/services/plugins/BasePlatformImplementation.d.ts
packages/lib/services/plugins/BasePlatformImplementation.js
packages/lib/services/plugins/BasePlatformImplementation.js.map
packages/lib/services/plugins/BasePluginRunner.d.ts
packages/lib/services/plugins/BasePluginRunner.js
packages/lib/services/plugins/BasePluginRunner.js.map

View File

@ -1,19 +1,12 @@
import bridge from '../bridge';
import { Implementation as WindowImplementation } from '@joplin/lib/services/plugins/api/JoplinWindow';
import { injectCustomStyles } from '@joplin/lib/CssUtils';
import { VersionInfo } from '@joplin/lib/services/plugins/api/types';
import Setting from '@joplin/lib/models/Setting';
import { reg } from '@joplin/lib/registry';
import BasePlatformImplementation, { Joplin } from '@joplin/lib/services/plugins/BasePlatformImplementation';
const { clipboard, nativeImage } = require('electron');
interface JoplinViewsDialogs {
showMessageBox(message: string): Promise<number>;
}
interface JoplinViews {
dialogs: JoplinViewsDialogs;
}
interface Joplin {
views: JoplinViews;
}
const packageInfo = require('../../packageInfo');
interface Components {
[key: string]: any;
@ -22,7 +15,7 @@ interface Components {
// PlatformImplementation provides access to platform specific dependencies,
// such as the clipboard, message dialog, etc. It allows having the same plugin
// API for all platforms, but with different implementations.
export default class PlatformImplementation {
export default class PlatformImplementation extends BasePlatformImplementation {
private static instance_: PlatformImplementation;
private joplin_: Joplin;
@ -33,6 +26,14 @@ export default class PlatformImplementation {
return this.instance_;
}
public get versionInfo(): VersionInfo {
return {
version: packageInfo.version,
syncVersion: Setting.value('syncVersion'),
profileVersion: reg.db().version(),
};
}
public get clipboard() {
return clipboard;
}
@ -48,6 +49,8 @@ export default class PlatformImplementation {
}
public constructor() {
super();
this.components_ = {};
this.joplin_ = {

View File

@ -0,0 +1,50 @@
// PlatformImplementation provides access to platform specific dependencies,
// such as the clipboard, message dialog, etc. It allows having the same plugin
import { VersionInfo } from './api/types';
import { Implementation as WindowImplementation } from './api/JoplinWindow';
export interface JoplinViewsDialogs {
showMessageBox(message: string): Promise<number>;
}
export interface JoplinViews {
dialogs: JoplinViewsDialogs;
}
export interface Joplin {
views: JoplinViews;
}
// API for all platforms, but with different implementations.
export default class BasePlatformImplementation {
public get versionInfo(): VersionInfo {
throw new Error('Not implemented');
}
public get clipboard(): any {
throw new Error('Not implemented');
}
public get nativeImage(): any {
throw new Error('Not implemented');
}
public get window(): WindowImplementation {
throw new Error('Not implemented');
}
public registerComponent(_name: string, _component: any) {
throw new Error('Not implemented');
}
public unregisterComponent(_name: string) {
throw new Error('Not implemented');
}
public get joplin(): Joplin {
throw new Error('Not implemented');
}
}

View File

@ -10,6 +10,7 @@ import JoplinSettings from './JoplinSettings';
import JoplinContentScripts from './JoplinContentScripts';
import JoplinClipboard from './JoplinClipboard';
import JoplinWindow from './JoplinWindow';
import BasePlatformImplementation from '../BasePlatformImplementation';
/**
* This is the main entry point to the Joplin API. You can access various services using the provided accessors.
@ -36,8 +37,10 @@ export default class Joplin {
private contentScripts_: JoplinContentScripts = null;
private clipboard_: JoplinClipboard = null;
private window_: JoplinWindow = null;
private implementation_: BasePlatformImplementation = null;
public constructor(implementation: any, plugin: Plugin, store: any) {
public constructor(implementation: BasePlatformImplementation, plugin: Plugin, store: any) {
this.implementation_ = implementation;
this.data_ = new JoplinData();
this.plugins_ = new JoplinPlugins(plugin);
this.workspace_ = new JoplinWorkspace(store);
@ -117,4 +120,8 @@ export default class Joplin {
// Just a stub. Implementation has to be done within plugin process, in plugin_index.js
}
public async versionInfo() {
return this.implementation_.versionInfo;
}
}

View File

@ -221,6 +221,12 @@ export enum ModelType {
Command = 16,
}
export interface VersionInfo {
version: string;
profileVersion: number;
syncVersion: number;
}
// =================================================================
// Menu types
// =================================================================

View File

@ -9200,17 +9200,10 @@ __metadata:
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.30001280":
version: 1.0.30001285
resolution: "caniuse-lite@npm:1.0.30001285"
checksum: 03abdcea913961f4484a7e9494482a0e8a32d6b2305e3922196d0672897c043ac2e1ce884c69730921400c7cddb41ae27a9fcfdaa7d82d11a75d7331393ab5c6
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.30001286":
version: 1.0.30001291
resolution: "caniuse-lite@npm:1.0.30001291"
checksum: ae24be79227036564ccd2ab8a0be8793a2e650941607a9f3e68a967db08d90cf17ded0382c2ce87063051b7200e618ec83bdb12f423ed60665922dc4d8eb8f78
"caniuse-lite@npm:^1.0.30001280, caniuse-lite@npm:^1.0.30001286":
version: 1.0.30001362
resolution: "caniuse-lite@npm:1.0.30001362"
checksum: bd35704a81aa8ca12e952c2276d205109a5d10bd7d0fb767c27ee9bdbc8011c5c99a9772833701d68ed2fe7143f1744258c1cc440dd7ea4584a1354f6dac9f0a
languageName: node
linkType: hard