Minor UI tweaks (#4297)

* Don't render PluginTasks if no tasks available
* Improve query refetching
This commit is contained in:
DingDongSoLong4
2023-11-20 05:19:43 +02:00
committed by GitHub
parent f9e11813f0
commit 2ea35c4dbc
7 changed files with 80 additions and 69 deletions

View File

@@ -211,9 +211,6 @@ export const GalleryEditPanel: React.FC<IProps> = ({
setIsLoading(true);
try {
await mutateReloadScrapers();
// reload the performer scrapers
await Scrapers.refetch();
} catch (e) {
Toast.error(e);
} finally {

View File

@@ -410,9 +410,6 @@ export const PerformerEditPanel: React.FC<IPerformerDetails> = ({
setIsLoading(true);
try {
await mutateReloadScrapers();
// reload the performer scrapers
await Scrapers.refetch();
} catch (e) {
Toast.error(e);
} finally {

View File

@@ -350,9 +350,6 @@ export const SceneEditPanel: React.FC<IProps> = ({
setIsLoading(true);
try {
await mutateReloadScrapers();
// reload the performer scrapers
await Scrapers.refetch();
} catch (e) {
Toast.error(e);
} finally {

View File

@@ -75,14 +75,18 @@ export const SettingsPluginsPanel: React.FC = () => {
const intl = useIntl();
const { loading: configLoading, plugins, savePluginSettings } = useSettings();
const { data, loading, refetch } = usePlugins();
const { data, loading } = usePlugins();
const [changedPluginID, setChangedPluginID] = React.useState<
string | undefined
>();
async function onReloadPlugins() {
await mutateReloadPlugins().catch((e) => Toast.error(e));
try {
await mutateReloadPlugins();
} catch (e) {
Toast.error(e);
}
}
const pluginElements = useMemo(() => {
@@ -105,12 +109,13 @@ export const SettingsPluginsPanel: React.FC = () => {
function renderEnableButton(pluginID: string, enabled: boolean) {
async function onClick() {
await mutateSetPluginsEnabled({ [pluginID]: !enabled }).catch((e) =>
Toast.error(e)
);
try {
await mutateSetPluginsEnabled({ [pluginID]: !enabled });
} catch (e) {
Toast.error(e);
}
setChangedPluginID(pluginID);
refetch();
}
return (
@@ -229,7 +234,6 @@ export const SettingsPluginsPanel: React.FC = () => {
intl,
Toast,
changedPluginID,
refetch,
plugins,
savePluginSettings,
]);

View File

@@ -90,7 +90,11 @@ export const SettingsScrapingPanel: React.FC = () => {
useSettings();
async function onReloadScrapers() {
await mutateReloadScrapers().catch((e) => Toast.error(e));
try {
await mutateReloadScrapers();
} catch (e) {
Toast.error(e);
}
}
function renderPerformerScrapeTypes(types: ScrapeType[]) {

View File

@@ -16,46 +16,10 @@ export const PluginTasks: React.FC = () => {
const plugins = usePlugins();
function renderPlugins() {
if (!plugins.data || !plugins.data.plugins) {
return;
}
const taskPlugins = plugins.data.plugins.filter(
(p) => p.enabled && p.tasks && p.tasks.length > 0
);
return (
<SettingSection headingID="config.tasks.plugin_tasks">
{taskPlugins.map((o) => {
return (
<SettingGroup
key={`${o.id}`}
settingProps={{
heading: o.name,
}}
collapsible
>
{renderPluginTasks(o, o.tasks ?? [])}
</SettingGroup>
);
})}
</SettingSection>
);
}
function renderPluginTasks(plugin: Plugin, pluginTasks: PluginTask[]) {
if (!pluginTasks) {
return;
}
return pluginTasks.map((o) => {
return (
<Setting
heading={o.name}
subHeading={o.description ?? undefined}
key={o.name}
>
<Setting heading={o.name} subHeading={o.description} key={o.name}>
<Button
onClick={() => onPluginTaskClicked(plugin, o)}
variant="secondary"
@@ -78,5 +42,35 @@ export const PluginTasks: React.FC = () => {
);
}
return <Form.Group>{renderPlugins()}</Form.Group>;
if (!plugins.data?.plugins) {
return null;
}
const taskPlugins = plugins.data.plugins.filter(
(p) => p.enabled && p.tasks && p.tasks.length > 0
);
if (!taskPlugins.length) {
return null;
}
return (
<Form.Group>
<SettingSection headingID="config.tasks.plugin_tasks">
{taskPlugins.map((o) => {
return (
<SettingGroup
key={o.id}
settingProps={{
heading: o.name,
}}
collapsible
>
{renderPluginTasks(o, o.tasks!)}
</SettingGroup>
);
})}
</SettingSection>
</Form.Group>
);
};

View File

@@ -2047,17 +2047,43 @@ export const useRemoveTempDLNAIP = () => GQL.useRemoveTempDlnaipMutation();
export const mutateReloadScrapers = () =>
client.mutate<GQL.ReloadScrapersMutation>({
mutation: GQL.ReloadScrapersDocument,
refetchQueries: [
GQL.refetchListMovieScrapersQuery(),
GQL.refetchListPerformerScrapersQuery(),
GQL.refetchListSceneScrapersQuery(),
],
update(cache, result) {
if (!result.data?.reloadScrapers) return;
evictQueries(cache, [
GQL.ListMovieScrapersDocument,
GQL.ListPerformerScrapersDocument,
GQL.ListSceneScrapersDocument,
]);
},
});
const pluginMutationImpactedQueries = [
GQL.PluginsDocument,
GQL.PluginTasksDocument,
];
export const mutateReloadPlugins = () =>
client.mutate<GQL.ReloadPluginsMutation>({
mutation: GQL.ReloadPluginsDocument,
refetchQueries: [GQL.refetchPluginsQuery(), GQL.refetchPluginTasksQuery()],
update(cache, result) {
if (!result.data?.reloadPlugins) return;
evictQueries(cache, pluginMutationImpactedQueries);
},
});
type BoolMap = { [key: string]: boolean };
export const mutateSetPluginsEnabled = (enabledMap: BoolMap) =>
client.mutate<GQL.SetPluginsEnabledMutation>({
mutation: GQL.SetPluginsEnabledDocument,
variables: { enabledMap },
update(cache, result) {
if (!result.data?.setPluginsEnabled) return;
evictQueries(cache, pluginMutationImpactedQueries);
},
});
export const mutateStopJob = (jobID: string) =>
@@ -2093,14 +2119,6 @@ export const mutateMigrate = (input: GQL.MigrateInput) =>
},
});
type BoolMap = { [key: string]: boolean };
export const mutateSetPluginsEnabled = (enabledMap: BoolMap) =>
client.mutate<GQL.SetPluginsEnabledMutation>({
mutation: GQL.SetPluginsEnabledDocument,
variables: { enabledMap },
});
/// Tasks
export const mutateMetadataScan = (input: GQL.ScanMetadataInput) =>