You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-16 00:14:34 +02:00
@ -1,7 +1,7 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Icon, Card, Chip } from 'react-native-paper';
|
import { Icon, Card, Chip, Text } from 'react-native-paper';
|
||||||
import { _ } from '@joplin/lib/locale';
|
import { _ } from '@joplin/lib/locale';
|
||||||
import { Alert, Linking, View } from 'react-native';
|
import { Alert, Linking, TextStyle, View } from 'react-native';
|
||||||
import { PluginItem } from '@joplin/lib/components/shared/config/plugins/types';
|
import { PluginItem } from '@joplin/lib/components/shared/config/plugins/types';
|
||||||
import shim from '@joplin/lib/shim';
|
import shim from '@joplin/lib/shim';
|
||||||
import PluginService from '@joplin/lib/services/plugins/PluginService';
|
import PluginService from '@joplin/lib/services/plugins/PluginService';
|
||||||
@ -56,6 +56,10 @@ const onRecommendedPress = () => {
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||||
const PluginIcon = (props: any) => <Icon {...props} source='puzzle'/>;
|
const PluginIcon = (props: any) => <Icon {...props} source='puzzle'/>;
|
||||||
|
|
||||||
|
const versionTextStyle: TextStyle = {
|
||||||
|
opacity: 0.8,
|
||||||
|
};
|
||||||
|
|
||||||
const PluginBox: React.FC<Props> = props => {
|
const PluginBox: React.FC<Props> = props => {
|
||||||
const manifest = props.item.manifest;
|
const manifest = props.item.manifest;
|
||||||
const item = props.item;
|
const item = props.item;
|
||||||
@ -157,10 +161,13 @@ const PluginBox: React.FC<Props> = props => {
|
|||||||
|
|
||||||
const updateStateIsIdle = props.updateState !== UpdateState.Idle;
|
const updateStateIsIdle = props.updateState !== UpdateState.Idle;
|
||||||
|
|
||||||
|
const titleComponent = <>
|
||||||
|
<Text variant='titleMedium'>{manifest.name}</Text> <Text variant='bodySmall' style={versionTextStyle}>v{manifest.version}</Text>
|
||||||
|
</>;
|
||||||
return (
|
return (
|
||||||
<Card style={{ margin: 8, opacity: props.isCompatible ? undefined : 0.75 }} testID='plugin-card'>
|
<Card style={{ margin: 8, opacity: props.isCompatible ? undefined : 0.75 }} testID='plugin-card'>
|
||||||
<Card.Title
|
<Card.Title
|
||||||
title={manifest.name}
|
title={titleComponent}
|
||||||
subtitle={manifest.description}
|
subtitle={manifest.description}
|
||||||
left={PluginIcon}
|
left={PluginIcon}
|
||||||
/>
|
/>
|
||||||
|
@ -86,6 +86,9 @@ describe('PluginStates', () => {
|
|||||||
await switchClient(0);
|
await switchClient(0);
|
||||||
pluginServiceSetup();
|
pluginServiceSetup();
|
||||||
resetRepoApi();
|
resetRepoApi();
|
||||||
|
|
||||||
|
await mockMobilePlatform('android');
|
||||||
|
await mockRepositoryApiConstructor();
|
||||||
});
|
});
|
||||||
afterEach(async () => {
|
afterEach(async () => {
|
||||||
for (const pluginId of PluginService.instance().pluginIds) {
|
for (const pluginId of PluginService.instance().pluginIds) {
|
||||||
@ -137,4 +140,22 @@ describe('PluginStates', () => {
|
|||||||
expect(await screen.queryByRole('button', backlinksToNoteQuery)).toBeNull();
|
expect(await screen.queryByRole('button', backlinksToNoteQuery)).toBeNull();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should show the current plugin version on updatable plugins', async () => {
|
||||||
|
const abcPluginId = 'org.joplinapp.plugins.AbcSheetMusic';
|
||||||
|
const defaultPluginSettings: PluginSettings = { [abcPluginId]: defaultPluginSetting() };
|
||||||
|
|
||||||
|
const outdatedVersion = '0.0.1';
|
||||||
|
await loadMockPlugin(abcPluginId, 'ABC Sheet Music', outdatedVersion, defaultPluginSettings);
|
||||||
|
expect(PluginService.instance().plugins[abcPluginId]).toBeTruthy();
|
||||||
|
|
||||||
|
render(
|
||||||
|
<PluginStatesWrapper
|
||||||
|
initialPluginSettings={defaultPluginSettings}
|
||||||
|
/>,
|
||||||
|
);
|
||||||
|
expect(await screen.findByText('ABC Sheet Music')).toBeVisible();
|
||||||
|
expect(await screen.findByRole('button', { name: 'Update ABC Sheet Music', disabled: false })).toBeVisible();
|
||||||
|
expect(await screen.findByText(`v${outdatedVersion}`)).toBeVisible();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user