From 286f2f53f74c465f7e3d37857665a359c96b0f85 Mon Sep 17 00:00:00 2001
From: ze0s <43699394+zze0s@users.noreply.github.com>
Date: Sun, 16 Apr 2023 18:50:23 +0200
Subject: [PATCH] fix(indexers): test API button (#844)
fix(indexers): api test button
---
web/index.html | 4 ++--
web/src/App.tsx | 2 +-
web/src/forms/filters/FilterAddForm.tsx | 4 ++--
web/src/forms/settings/APIKeyAddForm.tsx | 5 +++--
web/src/forms/settings/DownloadClientForms.tsx | 7 +++++--
web/src/forms/settings/FeedForms.tsx | 5 +++--
web/src/forms/settings/IndexerForms.tsx | 16 ++++++++--------
web/src/forms/settings/IrcForms.tsx | 8 ++++----
web/src/forms/settings/NotificationForms.tsx | 7 +++++--
web/src/screens/Base.tsx | 16 ++++++++--------
web/src/screens/auth/login.tsx | 5 ++---
web/src/screens/filters/details.tsx | 4 ++--
web/src/screens/filters/list.tsx | 8 +-------
web/src/screens/settings/Api.tsx | 5 +++--
web/src/screens/settings/Application.tsx | 5 +++--
web/src/screens/settings/DownloadClient.tsx | 3 +--
web/src/screens/settings/Feed.tsx | 2 +-
web/src/screens/settings/Irc.tsx | 7 +------
web/src/screens/settings/Logs.tsx | 5 +++--
web/src/screens/settings/Releases.tsx | 6 +++---
20 files changed, 61 insertions(+), 63 deletions(-)
diff --git a/web/index.html b/web/index.html
index bac14e6..0ba259d 100644
--- a/web/index.html
+++ b/web/index.html
@@ -14,8 +14,8 @@
({} as IndexerDefinition);
+ const queryClient = useQueryClient();
const { data } = useQuery(
"indexerDefinition",
() => APIClient.indexers.getSchema(),
@@ -578,14 +575,15 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
interface TestApiButtonProps {
values: FormikValues;
+ show: boolean;
}
-function TestApiButton({ values }: TestApiButtonProps) {
+function TestApiButton({ values, show }: TestApiButtonProps) {
const [isTesting, setIsTesting] = useState(false);
const [isSuccessfulTest, setIsSuccessfulTest] = useState(false);
const [isErrorTest, setIsErrorTest] = useState(false);
- if (!values.settings.api_key) {
+ if (!show) {
return null;
}
@@ -706,6 +704,8 @@ interface UpdateProps {
}
export function IndexerUpdateForm({ isOpen, toggle, indexer }: UpdateProps) {
+ const queryClient = useQueryClient();
+
const mutation = useMutation((indexer: Indexer) => APIClient.indexers.update(indexer), {
onSuccess: () => {
queryClient.invalidateQueries(["indexer"]);
@@ -783,7 +783,7 @@ export function IndexerUpdateForm({ isOpen, toggle, indexer }: UpdateProps) {
deleteAction={deleteAction}
onSubmit={onSubmit}
initialValues={initialValues}
- extraButtons={(values) => }
+ extraButtons={(values) => }
>
{() => (
diff --git a/web/src/forms/settings/IrcForms.tsx b/web/src/forms/settings/IrcForms.tsx
index 51a5340..1199b44 100644
--- a/web/src/forms/settings/IrcForms.tsx
+++ b/web/src/forms/settings/IrcForms.tsx
@@ -1,12 +1,9 @@
-import { useMutation } from "react-query";
+import { useMutation, useQueryClient } from "react-query";
import { toast } from "react-hot-toast";
import { XMarkIcon } from "@heroicons/react/24/solid";
import type { FieldProps } from "formik";
import { Field, FieldArray, FormikErrors, FormikValues } from "formik";
-
-import { queryClient } from "../../App";
import { APIClient } from "../../api/APIClient";
-
import { NumberFieldWide, PasswordFieldWide, SwitchGroupWide, SwitchGroupWideRed, TextFieldWide } from "../../components/inputs";
import { SlideOver } from "../../components/panels";
import Toast from "../../components/notifications/Toast";
@@ -98,6 +95,7 @@ interface AddFormProps {
}
export function IrcNetworkAddForm({ isOpen, toggle }: AddFormProps) {
+ const queryClient = useQueryClient();
const mutation = useMutation(
(network: IrcNetwork) => APIClient.irc.createNetwork(network),
{
@@ -241,6 +239,8 @@ export function IrcNetworkUpdateForm({
toggle,
network
}: IrcNetworkUpdateFormProps) {
+ const queryClient = useQueryClient();
+
const mutation = useMutation((network: IrcNetwork) => APIClient.irc.updateNetwork(network), {
onSuccess: () => {
queryClient.invalidateQueries(["networks"]);
diff --git a/web/src/forms/settings/NotificationForms.tsx b/web/src/forms/settings/NotificationForms.tsx
index dbeea9e..e688b67 100644
--- a/web/src/forms/settings/NotificationForms.tsx
+++ b/web/src/forms/settings/NotificationForms.tsx
@@ -7,9 +7,8 @@ import Select, { components, ControlProps, InputProps, MenuProps, OptionProps }
import { PasswordFieldWide, SwitchGroupWide, TextFieldWide } from "../../components/inputs";
import DEBUG from "../../components/debug";
import { EventOptions, NotificationTypeOptions, SelectOption } from "../../domain/constants";
-import { useMutation } from "react-query";
+import { useMutation, useQueryClient } from "react-query";
import { APIClient } from "../../api/APIClient";
-import { queryClient } from "../../App";
import { toast } from "react-hot-toast";
import Toast from "../../components/notifications/Toast";
import { SlideOver } from "../../components/panels";
@@ -136,6 +135,8 @@ interface AddProps {
}
export function NotificationAddForm({ isOpen, toggle }: AddProps) {
+ const queryClient = useQueryClient();
+
const mutation = useMutation(
(notification: Notification) => APIClient.notifications.create(notification),
{
@@ -407,6 +408,8 @@ interface InitialValues {
}
export function NotificationUpdateForm({ isOpen, toggle, notification }: UpdateProps) {
+ const queryClient = useQueryClient();
+
const mutation = useMutation(
(notification: Notification) => APIClient.notifications.update(notification),
{
diff --git a/web/src/screens/Base.tsx b/web/src/screens/Base.tsx
index 1f9631d..2ad8f3c 100644
--- a/web/src/screens/Base.tsx
+++ b/web/src/screens/Base.tsx
@@ -21,16 +21,16 @@ function classNames(...classes: string[]) {
return classes.filter(Boolean).join(" ");
}
+const nav: Array
= [
+ { name: "Dashboard", path: "/" },
+ { name: "Filters", path: "/filters" },
+ { name: "Releases", path: "/releases" },
+ { name: "Settings", path: "/settings" },
+ { name: "Logs", path: "/logs" }
+];
+
export default function Base() {
const authContext = AuthContext.useValue();
- const nav: Array = [
- { name: "Dashboard", path: "/" },
- { name: "Filters", path: "/filters" },
- { name: "Releases", path: "/releases" },
- { name: "Settings", path: "/settings" },
- { name: "Logs", path: "/logs" }
- ];
-
const { data } = useQuery(
["updates"],
diff --git a/web/src/screens/auth/login.tsx b/web/src/screens/auth/login.tsx
index f9a5499..27b6af0 100644
--- a/web/src/screens/auth/login.tsx
+++ b/web/src/screens/auth/login.tsx
@@ -2,7 +2,6 @@ import { useEffect } from "react";
import { useForm } from "react-hook-form";
import { useNavigate } from "react-router-dom";
import { useMutation } from "react-query";
-
import logo from "../../logo.png";
import { APIClient } from "../../api/APIClient";
import { AuthContext } from "../../utils/Context";
@@ -86,10 +85,10 @@ export const Login = () => {
Sign in
diff --git a/web/src/screens/filters/details.tsx b/web/src/screens/filters/details.tsx
index 429479c..35ea2ac 100644
--- a/web/src/screens/filters/details.tsx
+++ b/web/src/screens/filters/details.tsx
@@ -1,5 +1,5 @@
import React, { useRef } from "react";
-import { useMutation, useQuery } from "react-query";
+import { useMutation, useQuery, useQueryClient } from "react-query";
import { NavLink, Route, Routes, useLocation, useNavigate, useParams } from "react-router-dom";
import { toast } from "react-hot-toast";
import { Form, Formik, FormikValues, useFormikContext } from "formik";
@@ -21,7 +21,6 @@ import {
SOURCES_OPTIONS,
tagsMatchLogicOptions
} from "../../domain/constants";
-import { queryClient } from "../../App";
import { APIClient } from "../../api/APIClient";
import { useToggle } from "../../hooks/hooks";
import { classNames } from "../../utils";
@@ -141,6 +140,7 @@ const FormButtonsGroup = ({ values, deleteAction, reset }: FormButtonsGroupProps
};
export default function FilterDetails() {
+ const queryClient = useQueryClient();
const navigate = useNavigate();
const { filterId } = useParams<{ filterId: string }>();
diff --git a/web/src/screens/filters/list.tsx b/web/src/screens/filters/list.tsx
index f680eae..3011519 100644
--- a/web/src/screens/filters/list.tsx
+++ b/web/src/screens/filters/list.tsx
@@ -5,12 +5,8 @@ import { Listbox, Menu, Switch, Transition } from "@headlessui/react";
import { useMutation, useQuery, useQueryClient } from "react-query";
import { FormikValues } from "formik";
import { useCallback } from "react";
-
import { Tooltip } from "react-tooltip";
-
-
import { FilterListContext, FilterListState } from "../../utils/Context";
-
import {
ArrowsRightLeftIcon,
CheckIcon,
@@ -22,8 +18,6 @@ import {
ChatBubbleBottomCenterTextIcon,
TrashIcon
} from "@heroicons/react/24/outline";
-
-import { queryClient } from "../../App";
import { classNames } from "../../utils";
import { FilterAddForm } from "../../forms";
import { useToggle } from "../../hooks/hooks";
@@ -74,7 +68,6 @@ interface FilterProps {
}
export default function Filters({}: FilterProps){
-
const queryClient = useQueryClient();
const [createFilterIsOpen, setCreateFilterIsOpen] = useState(false);
@@ -642,6 +635,7 @@ interface FilterListItemProps {
function FilterListItem({ filter, values, idx }: FilterListItemProps) {
const [enabled, setEnabled] = useState(filter.enabled);
+ const queryClient = useQueryClient();
const updateMutation = useMutation(
(status: boolean) => APIClient.filters.toggleEnable(filter.id, status),
diff --git a/web/src/screens/settings/Api.tsx b/web/src/screens/settings/Api.tsx
index db4f4ee..2c0f5cf 100644
--- a/web/src/screens/settings/Api.tsx
+++ b/web/src/screens/settings/Api.tsx
@@ -1,6 +1,5 @@
-import { queryClient } from "../../App";
import { useRef } from "react";
-import { useMutation, useQuery } from "react-query";
+import { useMutation, useQuery, useQueryClient } from "react-query";
import { KeyField } from "../../components/fields/text";
import { DeleteModal } from "../../components/modals";
import APIKeyAddForm from "../../forms/settings/APIKeyAddForm";
@@ -82,6 +81,8 @@ function APIListItem({ apikey }: ApiKeyItemProps) {
const cancelModalButtonRef = useRef(null);
const [deleteModalIsOpen, toggleDeleteModal] = useToggle(false);
+ const queryClient = useQueryClient();
+
const deleteMutation = useMutation(
(key: string) => APIClient.apikeys.delete(key),
{
diff --git a/web/src/screens/settings/Application.tsx b/web/src/screens/settings/Application.tsx
index 7b4f0cb..4896a8e 100644
--- a/web/src/screens/settings/Application.tsx
+++ b/web/src/screens/settings/Application.tsx
@@ -1,11 +1,10 @@
-import { useMutation, useQuery } from "react-query";
+import { useMutation, useQuery, useQueryClient } from "react-query";
import { APIClient } from "../../api/APIClient";
import { Checkbox } from "../../components/Checkbox";
import { SettingsContext } from "../../utils/Context";
import { GithubRelease } from "../../types/Update";
import { toast } from "react-hot-toast";
import Toast from "../../components/notifications/Toast";
-import { queryClient } from "../../App";
interface RowItemProps {
label: string;
@@ -89,6 +88,8 @@ function ApplicationSettings() {
}
);
+ const queryClient = useQueryClient();
+
const checkUpdateMutation = useMutation(
() => APIClient.updates.check(),
{
diff --git a/web/src/screens/settings/DownloadClient.tsx b/web/src/screens/settings/DownloadClient.tsx
index c0f75a5..08a0835 100644
--- a/web/src/screens/settings/DownloadClient.tsx
+++ b/web/src/screens/settings/DownloadClient.tsx
@@ -27,8 +27,6 @@ interface SortConfig {
function useSort(items: ListItemProps["clients"][], config?: SortConfig) {
const [sortConfig, setSortConfig] = useState(config);
-
-
const sortedItems = useMemo(() => {
if (!sortConfig) {
return items;
@@ -80,6 +78,7 @@ function DownloadClientSettingsListItem({ client }: DLSettingsItemProps) {
const [updateClientIsOpen, toggleUpdateClient] = useToggle(false);
const queryClient = useQueryClient();
+
const mutation = useMutation(
(client: DownloadClient) => APIClient.download_clients.update(client),
{
diff --git a/web/src/screens/settings/Feed.tsx b/web/src/screens/settings/Feed.tsx
index 6425154..04913e4 100644
--- a/web/src/screens/settings/Feed.tsx
+++ b/web/src/screens/settings/Feed.tsx
@@ -7,7 +7,6 @@ import { baseUrl, classNames, IsEmptyDate, simplifyDate } from "../../utils";
import { Fragment, useRef, useState, useMemo } from "react";
import { toast } from "react-hot-toast";
import Toast from "../../components/notifications/Toast";
-import { queryClient } from "../../App";
import { DeleteModal } from "../../components/modals";
import {
ArrowsRightLeftIcon,
@@ -141,6 +140,7 @@ function ListItem({ feed }: ListItemProps) {
const [updateFormIsOpen, toggleUpdateForm] = useToggle(false);
const [enabled, setEnabled] = useState(feed.enabled);
+ const queryClient = useQueryClient();
const updateMutation = useMutation(
(status: boolean) => APIClient.feeds.toggleEnable(feed.id, status),
diff --git a/web/src/screens/settings/Irc.tsx b/web/src/screens/settings/Irc.tsx
index 77553de..dcc0eda 100644
--- a/web/src/screens/settings/Irc.tsx
+++ b/web/src/screens/settings/Irc.tsx
@@ -1,5 +1,4 @@
import { useMutation, useQuery, useQueryClient } from "react-query";
-
import { classNames, IsEmptyDate, simplifyDate } from "../../utils";
import { IrcNetworkAddForm, IrcNetworkUpdateForm } from "../../forms";
import { useToggle } from "../../hooks/hooks";
@@ -10,7 +9,6 @@ import { Menu, Switch, Transition } from "@headlessui/react";
import { Fragment, useRef } from "react";
import { DeleteModal } from "../../components/modals";
import { useState, useMemo } from "react";
-
import { toast } from "react-hot-toast";
import Toast from "../../components/notifications/Toast";
import {
@@ -30,8 +28,6 @@ interface SortConfig {
function useSort(items: ListItemProps["network"][], config?: SortConfig) {
const [sortConfig, setSortConfig] = useState(config);
-
-
const sortedItems = useMemo(() => {
if (!sortConfig) {
return items;
@@ -79,7 +75,6 @@ function useSort(items: ListItemProps["network"][], config?: SortConfig) {
return { items: sortedItems, requestSort, sortConfig, getSortIndicator };
}
-
const IrcSettings = () => {
const [expandNetworks, toggleExpand] = useToggle(false);
const [addNetworkIsOpen, toggleAddNetwork] = useToggle(false);
@@ -92,7 +87,6 @@ const IrcSettings = () => {
const sortedNetworks = useSort(data || []);
-
return (
@@ -209,6 +203,7 @@ const ListItem = ({ idx, network, expanded }: ListItemProps) => {
const [edit, toggleEdit] = useToggle(false);
const queryClient = useQueryClient();
+
const mutation = useMutation(
(network: IrcNetwork) => APIClient.irc.updateNetwork(network),
{
diff --git a/web/src/screens/settings/Logs.tsx b/web/src/screens/settings/Logs.tsx
index 5a27ac1..de38040 100644
--- a/web/src/screens/settings/Logs.tsx
+++ b/web/src/screens/settings/Logs.tsx
@@ -1,9 +1,8 @@
-import { useMutation, useQuery } from "react-query";
+import { useMutation, useQuery, useQueryClient } from "react-query";
import { APIClient } from "../../api/APIClient";
import { GithubRelease } from "../../types/Update";
import { toast } from "react-hot-toast";
import Toast from "../../components/notifications/Toast";
-import { queryClient } from "../../App";
import Select, { components, ControlProps, InputProps, MenuProps, OptionProps } from "react-select";
import { LogLevelOptions, SelectOption } from "../../domain/constants";
import { LogFiles } from "../Logs";
@@ -132,6 +131,8 @@ function LogSettings() {
}
);
+ const queryClient = useQueryClient();
+
const setLogLevelUpdateMutation = useMutation(
(value: string) => APIClient.config.update({ log_level: value }),
{
diff --git a/web/src/screens/settings/Releases.tsx b/web/src/screens/settings/Releases.tsx
index ad563ad..d85778f 100644
--- a/web/src/screens/settings/Releases.tsx
+++ b/web/src/screens/settings/Releases.tsx
@@ -1,15 +1,15 @@
import { useRef } from "react";
-import { useMutation } from "react-query";
+import { useMutation, useQueryClient } from "react-query";
import { toast } from "react-hot-toast";
-
import { APIClient } from "../../api/APIClient";
import Toast from "../../components/notifications/Toast";
-import { queryClient } from "../../App";
import { useToggle } from "../../hooks/hooks";
import { DeleteModal } from "../../components/modals";
function ReleaseSettings() {
const [deleteModalIsOpen, toggleDeleteModal] = useToggle(false);
+ const queryClient = useQueryClient();
+
const deleteMutation = useMutation(() => APIClient.release.delete(), {
onSuccess: () => {
toast.custom((t) => (