1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-07-13 00:10:37 +02:00

Desktop: Fixes #9832: Fix user-installed versions of built-in plugins can't access resources in some cases (#9849)

This commit is contained in:
Henry Heino
2024-02-03 11:28:47 -08:00
committed by GitHub
parent b8243e5518
commit 6ebc7993be
3 changed files with 53 additions and 8 deletions

View File

@ -11,7 +11,10 @@ const logger = Logger.create('defaultPluginsUtils');
// Use loadAndRunDefaultPlugins
// Exported for testing.
export const getDefaultPluginPathsAndSettings = async (
defaultPluginsDir: string, defaultPluginsInfo: DefaultPluginsInfo, pluginSettings: PluginSettings,
defaultPluginsDir: string,
defaultPluginsInfo: DefaultPluginsInfo,
pluginSettings: PluginSettings,
pluginService: PluginService,
) => {
const pluginPaths: string[] = [];
@ -46,6 +49,13 @@ export const getDefaultPluginPathsAndSettings = async (
continue;
}
// We skip plugins that are already loaded -- attempting to unpack a different version of a plugin
// that has already been loaded causes errors (see #9832).
if (pluginService.isPluginLoaded(pluginId)) {
logger.info(`Not loading default plugin ${pluginId} -- a plugin with the same ID is already loaded.`);
continue;
}
pluginPaths.push(join(defaultPluginsDir, pluginFileName));
pluginSettings = produce(pluginSettings, (draft: PluginSettings) => {
@ -69,7 +79,7 @@ export const loadAndRunDefaultPlugins = async (
originalPluginSettings: PluginSettings,
): Promise<PluginSettings> => {
const { pluginPaths, pluginSettings } = await getDefaultPluginPathsAndSettings(
defaultPluginsDir, defaultPluginsInfo, originalPluginSettings,
defaultPluginsDir, defaultPluginsInfo, originalPluginSettings, service,
) ?? { pluginPaths: [], pluginSettings: originalPluginSettings };
await service.loadAndRunPlugins(pluginPaths, pluginSettings, { builtIn: true, devMode: false });