diff --git a/web/sdk/admin/views/organizations/details/security/domains-list.tsx b/web/sdk/admin/views/organizations/details/security/domains-list.tsx index 5c8f9999d..e20c80042 100644 --- a/web/sdk/admin/views/organizations/details/security/domains-list.tsx +++ b/web/sdk/admin/views/organizations/details/security/domains-list.tsx @@ -3,12 +3,12 @@ import { Button, Flex, IconButton, + Skeleton, Text, toastManager, } from "@raystack/apsara"; import styles from "./security.module.css"; import { CheckCircledIcon, TrashIcon } from "@radix-ui/react-icons"; -import Skeleton from "react-loading-skeleton"; import { useContext, useState } from "react"; import { useMutation, createConnectQueryKey, useTransport } from "@connectrpc/connect-query"; import { useQueryClient } from "@tanstack/react-query"; @@ -23,7 +23,7 @@ interface DeleteDomainDialogProps { const DeleteDomainDialog = ({ domain, }: DeleteDomainDialogProps) => { - const {organization} = useContext(OrganizationContext); + const { organization } = useContext(OrganizationContext); const [isDialogOpen, setIsDialogOpen] = useState(false); const queryClient = useQueryClient(); const transport = useTransport(); @@ -133,21 +133,49 @@ const DomainItem = ({ domain }: DomainItemProps) => { interface DomainsListProps { isLoading: boolean; domains: Domain[]; + error?: Error | null; + onRetry: () => void; } export const DomainsList = ({ isLoading, domains = [], + error, + onRetry, }: DomainsListProps) => { + if (!isLoading && error) { + return ( + + + Couldn't load email domains + + + + ); + } + return isLoading ? ( - - {[...Array(3)].map((_, index) => ( - - ))} + + + ) : domains.length ? ( @@ -158,5 +186,15 @@ export const DomainsList = ({ /> ))} - ) : null; + ) : ( + + + No allowed email domains added yet + + + ); }; diff --git a/web/sdk/admin/views/organizations/details/security/index.tsx b/web/sdk/admin/views/organizations/details/security/index.tsx index 4c1ca24e0..64cc8bfa1 100644 --- a/web/sdk/admin/views/organizations/details/security/index.tsx +++ b/web/sdk/admin/views/organizations/details/security/index.tsx @@ -55,7 +55,7 @@ const AddDomainSection = () => { export const OrganizationSecurity = () => { const { organization } = useContext(OrganizationContext); - const { data: domains, isLoading, error } = useQuery( + const { data: domains, isLoading, error, refetch } = useQuery( FrontierServiceQueries.listOrganizationDomains, create(ListOrganizationDomainsRequestSchema, { orgId: organization?.id @@ -87,6 +87,8 @@ export const OrganizationSecurity = () => { refetch()} />