You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-06-30 23:44:55 +02:00
Desktop: Fix missing plugin file error and missing setting key error in dev mode (#6827)
This commit is contained in:
@ -3,9 +3,12 @@ import path = require('path');
|
||||
import Setting from '../../../models/Setting';
|
||||
import shim from '../../../shim';
|
||||
import PluginService, { defaultPluginSetting, DefaultPluginsInfo, PluginSettings } from '../PluginService';
|
||||
import Logger from '@joplin/lib/Logger';
|
||||
import * as React from 'react';
|
||||
const shared = require('@joplin/lib/components/shared/config-shared.js');
|
||||
|
||||
const logger = Logger.create('defaultPluginsUtils');
|
||||
|
||||
export function checkPreInstalledDefaultPlugins(defaultPluginsId: string[],pluginSettings: PluginSettings) {
|
||||
const installedDefaultPlugins: Array<string> = Setting.value('installedDefaultPlugins');
|
||||
for (const pluginId of defaultPluginsId) {
|
||||
@ -15,8 +18,17 @@ export function checkPreInstalledDefaultPlugins(defaultPluginsId: string[],plugi
|
||||
}
|
||||
}
|
||||
|
||||
export async function installDefaultPlugins(service: PluginService, pluginsDir: string, defaultPluginsId: string[], pluginSettings: PluginSettings): Promise<PluginSettings> {
|
||||
const defaultPluginsPaths = await shim.fsDriver().readDirStats(pluginsDir);
|
||||
export async function installDefaultPlugins(service: PluginService, defaultPluginsDir: string, defaultPluginsId: string[], pluginSettings: PluginSettings): Promise<PluginSettings> {
|
||||
if (!await shim.fsDriver().exists(defaultPluginsDir)) {
|
||||
logger.info(`Could not find default plugins' directory: ${defaultPluginsDir} - skipping installation.`);
|
||||
return pluginSettings;
|
||||
}
|
||||
const defaultPluginsPaths = await shim.fsDriver().readDirStats(defaultPluginsDir);
|
||||
if (defaultPluginsPaths.length <= 0) {
|
||||
logger.info(`Default plugins' directory is empty: ${defaultPluginsDir} - skipping installation.`);
|
||||
return pluginSettings;
|
||||
}
|
||||
|
||||
const installedPlugins = Setting.value('installedDefaultPlugins');
|
||||
|
||||
for (let pluginId of defaultPluginsPaths) {
|
||||
@ -24,7 +36,7 @@ export async function installDefaultPlugins(service: PluginService, pluginsDir:
|
||||
|
||||
// if pluginId is present in 'installedDefaultPlugins' array or it doesn't have default plugin ID, then we won't install it again as default plugin
|
||||
if (installedPlugins.includes(pluginId) || !defaultPluginsId.includes(pluginId)) continue;
|
||||
const defaultPluginPath: string = path.join(pluginsDir, pluginId, 'plugin.jpl');
|
||||
const defaultPluginPath: string = path.join(defaultPluginsDir, pluginId, 'plugin.jpl');
|
||||
await service.installPlugin(defaultPluginPath, false);
|
||||
|
||||
pluginSettings = produce(pluginSettings, (draft: PluginSettings) => {
|
||||
@ -41,7 +53,7 @@ export function setSettingsForDefaultPlugins(defaultPluginsInfo: DefaultPluginsI
|
||||
for (const pluginId of Object.keys(defaultPluginsInfo)) {
|
||||
if (!defaultPluginsInfo[pluginId].settings) continue;
|
||||
for (const settingName of Object.keys(defaultPluginsInfo[pluginId].settings)) {
|
||||
if (!installedDefaultPlugins.includes(pluginId)) {
|
||||
if (!installedDefaultPlugins.includes(pluginId) && Setting.keyExists(`plugin-${pluginId}.${settingName}`)) {
|
||||
Setting.setValue(`plugin-${pluginId}.${settingName}`, defaultPluginsInfo[pluginId].settings[settingName]);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user