Skip to content

Commit

Permalink
Desktop: Fixed display of installed plugins in About box
Browse files Browse the repository at this point in the history
  • Loading branch information
laurent22 committed Apr 3, 2023
1 parent fc335cd commit 376e4eb
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 28 deletions.
7 changes: 5 additions & 2 deletions packages/app-desktop/gui/MenuBar.tsx
Expand Up @@ -21,7 +21,7 @@ import checkForUpdates from '../checkForUpdates';
const { connect } = require('react-redux');
import { reg } from '@joplin/lib/registry';
import { ProfileConfig } from '@joplin/lib/services/profileConfig/types';
import PluginService from '@joplin/lib/services/plugins/PluginService';
import PluginService, { PluginSettings } from '@joplin/lib/services/plugins/PluginService';
const packageInfo = require('../packageInfo.js');
const { clipboard } = require('electron');
const Menu = bridge().Menu;
Expand Down Expand Up @@ -128,6 +128,7 @@ interface Props {
customCss: string;
locale: string;
profileConfig: ProfileConfig;
pluginSettings: PluginSettings;
}

const commandNames: string[] = menuCommandNames();
Expand Down Expand Up @@ -487,7 +488,7 @@ function useMenu(props: Props) {
}

function _showAbout() {
const v = versionInfo(packageInfo, PluginService.instance().plugins);
const v = versionInfo(packageInfo, PluginService.instance().enabledPlugins(props.pluginSettings));

const copyToClipboard = bridge().showMessageBox(v.message, {
icon: `${bridge().electronApp().buildDir()}/icons/128x128.png`,
Expand Down Expand Up @@ -930,6 +931,7 @@ function useMenu(props: Props) {
props['spellChecker.languages'],
// eslint-disable-next-line @seiyab/react-hooks/exhaustive-deps -- Old code before rule was applied
props['spellChecker.enabled'],
props.pluginSettings,
props.customCss,
props.locale,
props.profileConfig,
Expand Down Expand Up @@ -985,6 +987,7 @@ const mapStateToProps = (state: AppState) => {
['folders.sortOrder.field']: state.settings['folders.sortOrder.field'],
['notes.sortOrder.reverse']: state.settings['notes.sortOrder.reverse'],
['folders.sortOrder.reverse']: state.settings['folders.sortOrder.reverse'],
pluginSettings: state.settings['plugins.states'],
showNoteCounts: state.settings.showNoteCounts,
uncompletedTodosOnTop: state.settings.uncompletedTodosOnTop,
showCompletedTodos: state.settings.showCompletedTodos,
Expand Down
5 changes: 5 additions & 0 deletions packages/lib/services/plugins/PluginService.ts
Expand Up @@ -100,6 +100,11 @@ export default class PluginService extends BaseService {
return this.plugins_;
}

public enabledPlugins(pluginSettings: PluginSettings): Plugins {
const enabledPlugins = Object.fromEntries(Object.entries(this.plugins_).filter((p) => this.pluginEnabled(pluginSettings, p[0])));
return enabledPlugins;
}

public get pluginIds(): string[] {
return Object.keys(this.plugins_);
}
Expand Down
18 changes: 0 additions & 18 deletions packages/lib/versionInfo.test.ts
Expand Up @@ -2,8 +2,6 @@ import versionInfo from './versionInfo';
import { reg } from './registry';
import { Plugins } from './services/plugins/PluginService';
import Plugin from './services/plugins/Plugin';
import Setting from './models/Setting';
import { PluginSettings } from './services/plugins/PluginService';

jest.mock('./registry');

Expand Down Expand Up @@ -66,10 +64,6 @@ describe('getPluginLists', () => {
const plugins: Plugins = {};
plugins[plugin.manifest.id] = plugin;

const pluginSettings: PluginSettings = {};
pluginSettings[plugin.id] = { enabled: true, deleted: false, hasBeenUpdated: false };
Setting.setValue('plugins.states', pluginSettings);

const v = versionInfo(packageInfo, plugins);
expect(v.body).toMatch(/\n\nPlugin1: 1/);
expect(v.message).toMatch(/\n\nPlugin1: 1/);
Expand All @@ -93,12 +87,6 @@ describe('getPluginLists', () => {
plugins[plugin.manifest.id] = plugin;
}

const pluginSettings: PluginSettings = {};
for (const key of Object.keys(plugins)) {
pluginSettings[key] = { enabled: true, deleted: false, hasBeenUpdated: false };
}
Setting.setValue('plugins.states', pluginSettings);

const v = versionInfo(packageInfo, plugins);

expect(v.body).toMatch(/\n\nPlugin1: 1\nPlugin2: 1\nPlugin3: 1/);
Expand All @@ -124,12 +112,6 @@ describe('getPluginLists', () => {
plugins[plugin.manifest.id] = plugin;
}

const pluginSettings: PluginSettings = {};
for (const key of Object.keys(plugins)) {
pluginSettings[key] = { enabled: true, deleted: false, hasBeenUpdated: false };
}
Setting.setValue('plugins.states', pluginSettings);

const v = versionInfo(packageInfo, plugins);

const body = '\n';
Expand Down
12 changes: 4 additions & 8 deletions packages/lib/versionInfo.ts
Expand Up @@ -2,7 +2,6 @@ import { _ } from './locale';
import Setting from './models/Setting';
import { reg } from './registry';
import { Plugins } from './services/plugins/PluginService';
import PluginService from './services/plugins/PluginService';

interface PluginList {
completeList: string;
Expand All @@ -11,16 +10,13 @@ interface PluginList {

function getPluginLists(plugins: Plugins): PluginList {
const pluginList = [];
const pluginSettings = PluginService.instance().unserializePluginSettings(Setting.value('plugins.states'));
const enabledPlugins = Object.fromEntries(Object.entries(plugins).filter((p) => pluginSettings[p[0]] && pluginSettings[p[0]].enabled === true));

if (Object.keys(enabledPlugins).length > 0) {
for (const pluginId in enabledPlugins) {
pluginList.push(`${enabledPlugins[pluginId].manifest.name}: ${enabledPlugins[pluginId].manifest.version}`);
if (Object.keys(plugins).length > 0) {
for (const pluginId in plugins) {
pluginList.push(`${plugins[pluginId].manifest.name}: ${plugins[pluginId].manifest.version}`);
}
}

pluginList.sort();
pluginList.sort(Intl.Collator().compare);

let completeList = '';
let summary = '';
Expand Down

0 comments on commit 376e4eb

Please sign in to comment.