Use errorHandlingFetcher

This commit is contained in:
Weves 2024-06-06 19:59:25 -07:00 committed by Chris Weaver
parent f6fb963419
commit eacfd8f33f
34 changed files with 513 additions and 232 deletions

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { AxeroIcon, TrashIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -17,8 +18,6 @@ import { CredentialForm } from "@/components/admin/connectors/CredentialForm";
import {
TextFormField,
TextArrayFieldBuilder,
BooleanFormField,
TextArrayField,
} from "@/components/admin/connectors/Field";
import { ConnectorsTable } from "@/components/admin/connectors/table/ConnectorsTable";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -31,16 +30,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -51,12 +50,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const axeroConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,15 +30,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -48,12 +49,29 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (
(!connectorIndexingStatuses && isConnectorIndexingStatusesLoading) ||
(!credentialsData && isCredentialsLoading)
) {
return <LoadingAnimation text="Loading" />;
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const bookstackConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -63,15 +64,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -82,12 +83,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const confluenceConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -15,7 +15,8 @@ import {
DiscourseCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -32,16 +33,16 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -52,12 +53,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const discourseConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { TrashIcon, Document360Icon } from "@/components/icons/icons"; // Make sure you have a Document360 icon
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -29,16 +30,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -49,12 +50,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const document360ConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -11,7 +11,8 @@ import { usePopup } from "@/components/admin/connectors/Popup";
import { ConnectorsTable } from "@/components/admin/connectors/table/ConnectorsTable";
import { TrashIcon } from "@/components/icons/icons";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { usePublicCredentials } from "@/lib/hooks";
import {
ConnectorIndexingStatus,
@ -30,15 +31,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -49,12 +50,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const dropboxConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -4,7 +4,8 @@ import useSWR, { useSWRConfig } from "swr";
import * as Yup from "yup";
import { FileIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { HealthCheckBanner } from "@/components/health/healthcheck";
import { ConnectorIndexingStatus, FileConfig } from "@/lib/types";
import { createCredential, linkCredential } from "@/lib/credential";
@ -33,7 +34,7 @@ const Main = () => {
isLoading: isConnectorIndexingStatusesLoading,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
if (!connectorIndexingStatuses && isConnectorIndexingStatusesLoading) {

View File

@ -5,7 +5,8 @@ import { GithubIcon, TrashIcon } from "@/components/icons/icons";
import { TextFormField } from "@/components/admin/connectors/Field";
import { HealthCheckBanner } from "@/components/health/healthcheck";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import {
GithubConfig,
GithubCredentialJson,
@ -26,16 +27,16 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -46,12 +47,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const githubConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -5,7 +5,8 @@ import { GitlabIcon, TrashIcon } from "@/components/icons/icons";
import { TextFormField } from "@/components/admin/connectors/Field";
import { HealthCheckBanner } from "@/components/health/healthcheck";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import {
GitlabConfig,
GitlabCredentialJson,
@ -26,16 +27,16 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -46,12 +47,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const gitlabConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -3,7 +3,8 @@
import * as Yup from "yup";
import { GmailIcon } from "@/components/icons/icons";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { PopupSpec, usePopup } from "@/components/admin/connectors/Popup";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -113,7 +114,7 @@ const Main = () => {
error: isAppCredentialError,
} = useSWR<{ client_id: string }>(
"/api/manage/admin/connector/gmail/app-credential",
fetcher
errorHandlingFetcher
);
const {
data: serviceAccountKeyData,
@ -121,20 +122,20 @@ const Main = () => {
error: isServiceAccountKeyError,
} = useSWR<{ service_account_email: string }>(
"/api/manage/admin/connector/gmail/service-account-key",
fetcher
errorHandlingFetcher
);
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -153,7 +154,7 @@ const Main = () => {
);
}
if (isCredentialsError || !credentialsData) {
if (credentialsError || !credentialsData) {
return (
<div className="mx-auto">
<div className="text-red-500">Failed to load credentials.</div>
@ -161,7 +162,7 @@ const Main = () => {
);
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<div className="mx-auto">
<div className="text-red-500">Failed to load connectors.</div>

View File

@ -15,7 +15,8 @@ import {
GongCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -32,16 +33,16 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -52,12 +53,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const gongConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -3,7 +3,8 @@
import * as Yup from "yup";
import { GoogleDriveIcon } from "@/components/icons/icons";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { PopupSpec, usePopup } from "@/components/admin/connectors/Popup";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -265,7 +266,7 @@ const Main = () => {
error: isAppCredentialError,
} = useSWR<{ client_id: string }>(
"/api/manage/admin/connector/google-drive/app-credential",
fetcher
errorHandlingFetcher
);
const {
data: serviceAccountKeyData,
@ -273,20 +274,20 @@ const Main = () => {
error: isServiceAccountKeyError,
} = useSWR<{ service_account_email: string }>(
"/api/manage/admin/connector/google-drive/service-account-key",
fetcher
errorHandlingFetcher
);
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -305,7 +306,7 @@ const Main = () => {
);
}
if (isCredentialsError || !credentialsData) {
if (credentialsError || !credentialsData) {
return (
<div className="mx-auto">
<div className="text-red-500">Failed to load credentials.</div>
@ -313,7 +314,7 @@ const Main = () => {
);
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<div className="mx-auto">
<div className="text-red-500">Failed to load connectors.</div>

View File

@ -5,7 +5,8 @@ import * as Yup from "yup";
import { LoadingAnimation } from "@/components/Loading";
import { GoogleSitesIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { TextFormField } from "@/components/admin/connectors/Field";
import { HealthCheckBanner } from "@/components/health/healthcheck";
import { ConnectorIndexingStatus, GoogleSitesConfig } from "@/lib/types";
@ -29,10 +30,10 @@ export default function GoogleSites() {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const googleSitesIndexingStatuses: ConnectorIndexingStatus<
@ -211,7 +212,7 @@ export default function GoogleSites() {
</h2>
{isConnectorIndexingStatusesLoading ? (
<LoadingAnimation text="Loading" />
) : isConnectorIndexingStatusesError || !connectorIndexingStatuses ? (
) : connectorIndexingStatusesError || !connectorIndexingStatuses ? (
<div>Error loading indexing history</div>
) : googleSitesIndexingStatuses.length > 0 ? (
<SingleUseConnectorsTable<GoogleSitesConfig, {}>

View File

@ -12,7 +12,8 @@ import {
GuruCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,17 +30,17 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
isValidating: isCredentialsValidating,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -51,12 +52,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const guruConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
HubSpotCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,17 +30,17 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
isValidating: isCredentialsValidating,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -51,12 +52,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const hubSpotConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -15,7 +15,8 @@ import {
ConnectorIndexingStatus,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -44,15 +45,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
isValidating: isCredentialsValidating,
refreshCredentials,
} = usePublicCredentials();
@ -65,12 +66,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const jiraConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -11,7 +11,8 @@ import {
LinearCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -28,15 +29,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -47,12 +48,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const linearConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
LoopioCredentialJson,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -27,17 +28,17 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
isValidating: isCredentialsValidating,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -49,12 +50,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const loopioConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -16,7 +16,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -33,15 +34,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -52,12 +53,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const mediawikiConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
ConnectorIndexingStatus,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,15 +30,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -48,12 +49,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const notionConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,15 +30,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
isValidating: isCredentialsValidating,
refreshCredentials,
} = usePublicCredentials();
@ -50,12 +51,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const productboardConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { TrashIcon, RequestTrackerIcon } from "@/components/icons/icons"; // Make sure you have a Document360 icon
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -29,16 +30,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -49,12 +50,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const requestTrackerConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { TrashIcon, SharepointIcon } from "@/components/icons/icons"; // Make sure you have a Document360 icon
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -29,16 +30,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -49,12 +50,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const sharepointConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,15 +30,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
isValidating: isCredentialsValidating,
refreshCredentials,
} = usePublicCredentials();
@ -50,12 +51,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Failed to load connectors"
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Failed to load credentials"
errorMsg={credentialsError?.info?.detail}
/>
);
}
const slabConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { SlackIcon, TrashIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -31,16 +32,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -51,12 +52,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const slackConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -9,7 +9,8 @@ import {
GearIcon,
ArrowSquareOutIcon,
} from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import {
SelectorFormField,
TextFormField,
@ -33,10 +34,10 @@ export default function Web() {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const webIndexingStatuses: ConnectorIndexingStatus<WebConfig, {}>[] =
@ -125,7 +126,7 @@ export default function Web() {
</Title>
{isConnectorIndexingStatusesLoading ? (
<LoadingAnimation text="Loading" />
) : isConnectorIndexingStatusesError || !connectorIndexingStatuses ? (
) : connectorIndexingStatusesError || !connectorIndexingStatuses ? (
<div>Error loading indexing history</div>
) : webIndexingStatuses.length > 0 ? (
<ConnectorsTable<WebConfig, {}>

View File

@ -16,7 +16,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -33,15 +34,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -52,12 +53,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const wikipediaConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -12,7 +12,8 @@ import {
Credential,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import { LoadingAnimation } from "@/components/Loading";
import { adminDeleteCredential, linkCredential } from "@/lib/credential";
import { ConnectorForm } from "@/components/admin/connectors/ConnectorForm";
@ -29,15 +30,15 @@ const Main = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -48,12 +49,22 @@ const Main = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const zendeskConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -2,7 +2,8 @@
import * as Yup from "yup";
import { ZulipIcon, TrashIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ErrorCallout } from "@/components/ErrorCallout";
import useSWR, { useSWRConfig } from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { HealthCheckBanner } from "@/components/health/healthcheck";
@ -26,16 +27,16 @@ const MainSection = () => {
const {
data: connectorIndexingStatuses,
isLoading: isConnectorIndexingStatusesLoading,
error: isConnectorIndexingStatusesError,
error: connectorIndexingStatusesError,
} = useSWR<ConnectorIndexingStatus<any, any>[]>(
"/api/manage/admin/connector/indexing-status",
fetcher
errorHandlingFetcher
);
const {
data: credentialsData,
isLoading: isCredentialsLoading,
error: isCredentialsError,
error: credentialsError,
refreshCredentials,
} = usePublicCredentials();
@ -46,12 +47,22 @@ const MainSection = () => {
return <LoadingAnimation text="Loading" />;
}
if (isConnectorIndexingStatusesError || !connectorIndexingStatuses) {
return <div>Failed to load connectors</div>;
if (connectorIndexingStatusesError || !connectorIndexingStatuses) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={connectorIndexingStatusesError?.info?.detail}
/>
);
}
if (isCredentialsError || !credentialsData) {
return <div>Failed to load credentials</div>;
if (credentialsError || !credentialsData) {
return (
<ErrorCallout
errorTitle="Something went wrong :("
errorMsg={credentialsError?.info?.detail}
/>
);
}
const zulipConnectorIndexingStatuses: ConnectorIndexingStatus<

View File

@ -4,7 +4,7 @@ import useSWR from "swr";
import { LoadingAnimation } from "@/components/Loading";
import { NotebookIcon } from "@/components/icons/icons";
import { errorHandlingFetcher, fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { ConnectorIndexingStatus } from "@/lib/types";
import { CCPairIndexingStatusTable } from "./CCPairIndexingStatusTable";
import { AdminPageTitle } from "@/components/admin/Title";

View File

@ -13,9 +13,10 @@ import { LoadingAnimation } from "@/components/Loading";
import { AdminPageTitle } from "@/components/admin/Title";
import { usePopup } from "@/components/admin/connectors/Popup";
import { UsersIcon } from "@/components/icons/icons";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import { User } from "@/lib/types";
import useSWR, { mutate } from "swr";
import { ErrorCallout } from "@/components/ErrorCallout";
const UsersTable = () => {
const { popup, setPopup } = usePopup();
@ -24,14 +25,19 @@ const UsersTable = () => {
data: users,
isLoading,
error,
} = useSWR<User[]>("/api/manage/users", fetcher);
} = useSWR<User[]>("/api/manage/users", errorHandlingFetcher);
if (isLoading) {
return <LoadingAnimation text="Loading" />;
}
if (error || !users) {
return <div className="text-error">Error loading users</div>;
return (
<ErrorCallout
errorTitle="Error loading users"
errorMsg={error?.info?.detail}
/>
);
}
return (

View File

@ -1,10 +1,10 @@
"use client";
import { fetcher } from "@/lib/fetcher";
import { errorHandlingFetcher } from "@/lib/fetcher";
import useSWR from "swr";
export const HealthCheckBanner = () => {
const { error } = useSWR("/api/health", fetcher);
const { error } = useSWR("/api/health", errorHandlingFetcher);
if (!error) {
return null;
}

View File

@ -1,5 +1,3 @@
export const fetcher = (url: string) => fetch(url).then((res) => res.json());
class FetchError extends Error {
status: number;
info: any;

View File

@ -7,7 +7,7 @@ import {
UserGroup,
} from "@/lib/types";
import useSWR, { mutate, useSWRConfig } from "swr";
import { errorHandlingFetcher, fetcher } from "./fetcher";
import { errorHandlingFetcher } from "./fetcher";
import { useState } from "react";
import { DateRangePickerValue } from "@tremor/react";
import { SourceMetadata } from "./search/interfaces";
@ -17,7 +17,10 @@ const CREDENTIAL_URL = "/api/manage/admin/credential";
export const usePublicCredentials = () => {
const { mutate } = useSWRConfig();
const swrResponse = useSWR<Credential<any>[]>(CREDENTIAL_URL, fetcher);
const swrResponse = useSWR<Credential<any>[]>(
CREDENTIAL_URL,
errorHandlingFetcher
);
return {
...swrResponse,
@ -34,7 +37,7 @@ export const useMostReactedToDocuments = (
limit: number
) => {
const url = buildReactedDocsUrl(ascending, limit);
const swrResponse = useSWR<DocumentBoostStatus[]>(url, fetcher);
const swrResponse = useSWR<DocumentBoostStatus[]>(url, errorHandlingFetcher);
return {
...swrResponse,
@ -65,7 +68,7 @@ export const useConnectorCredentialIndexingStatus = (
const { mutate } = useSWRConfig();
const swrResponse = useSWR<ConnectorIndexingStatus<any, any>[]>(
INDEXING_STATUS_URL,
fetcher,
errorHandlingFetcher,
{ refreshInterval: refreshInterval }
);