1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-02 12:47:41 +02:00
joplin/packages/app-mobile/components/screens/ConfigScreen/plugins/utils/useUpdateState.ts

40 lines
960 B
TypeScript

import { PluginSettings } from '@joplin/lib/services/plugins/PluginService';
import { useMemo } from 'react';
export enum UpdateState {
Idle = 1,
CanUpdate = 2,
Updating = 3,
HasBeenUpdated = 4,
}
interface Props {
pluginId: string;
pluginSettings: PluginSettings;
updatingPluginIds: Record<string, boolean>;
updatablePluginIds: Record<string, boolean>;
}
const useUpdateState = ({ pluginId, pluginSettings, updatablePluginIds, updatingPluginIds }: Props) => {
return useMemo(() => {
const settings = pluginSettings[pluginId];
// Uninstalled
if (!settings) return UpdateState.Idle;
if (settings.hasBeenUpdated) {
return UpdateState.HasBeenUpdated;
}
if (updatingPluginIds[pluginId]) {
return UpdateState.Updating;
}
if (updatablePluginIds[pluginId]) {
return UpdateState.CanUpdate;
}
return UpdateState.Idle;
}, [pluginSettings, updatingPluginIds, pluginId, updatablePluginIds]);
};
export default useUpdateState;