diff --git a/src/components/repositories/Repository.tsx b/src/components/repositories/Repository.tsx index 7db7da6..cbe3506 100644 --- a/src/components/repositories/Repository.tsx +++ b/src/components/repositories/Repository.tsx @@ -27,10 +27,12 @@ import type { SyncRepoRequest, SyncRepoResponse } from "@/types/sync"; import { OwnerCombobox, OrganizationCombobox } from "./RepositoryComboboxes"; import type { RetryRepoRequest, RetryRepoResponse } from "@/types/retry"; import AddRepositoryDialog from "./AddRepositoryDialog"; +import type { ConfigApiResponse } from "@/types/config"; export default function Repository() { const [repositories, setRepositories] = useState([]); const [isLoading, setIsLoading] = useState(true); + const [isGitHubConfigured, setIsGitHubConfigured] = useState(true); const { user } = useAuth(); const { filter, setFilter } = useFilterParams({ searchTerm: "", @@ -76,8 +78,27 @@ export default function Repository() { const fetchRepositories = useCallback(async () => { if (!user) return; - setIsLoading(true); + // First, check if GitHub is configured by fetching the user's config try { + const configResponse = await apiRequest( + `/config?userId=${user.id}`, + { + method: "GET", + } + ); + + // Check if GitHub credentials are configured + if (!configResponse?.githubConfig?.username || !configResponse?.githubConfig?.token) { + setIsLoading(false); + setIsGitHubConfigured(false); + // Don't show error toast for unconfigured GitHub - just return silently + return false; + } + + // GitHub is configured + setIsGitHubConfigured(true); + setIsLoading(true); + const response = await apiRequest( `/github/repositories?userId=${user.id}`, { @@ -436,16 +457,31 @@ export default function Repository() { - + {!isGitHubConfigured ? ( +
+

GitHub Not Configured

+

+ You need to configure your GitHub credentials before you can fetch and mirror repositories. +

+ +
+ ) : ( + + )}