From fbf30334559d8803a6402985f5a380414229dbf3 Mon Sep 17 00:00:00 2001 From: Arunavo Ray Date: Tue, 17 Jun 2025 15:06:54 +0530 Subject: [PATCH] refactor: remove ConnectionsForm and useMirror hook; update issue mirroring logic for starred repos --- src/components/config/ConnectionsForm.tsx | 47 ----------- .../config/GitHubMirrorSettings.tsx | 10 +-- src/hooks/useMirror.ts | 83 ------------------- src/lib/gitea.ts | 12 ++- 4 files changed, 15 insertions(+), 137 deletions(-) delete mode 100644 src/components/config/ConnectionsForm.tsx delete mode 100644 src/hooks/useMirror.ts diff --git a/src/components/config/ConnectionsForm.tsx b/src/components/config/ConnectionsForm.tsx deleted file mode 100644 index 7ce0629..0000000 --- a/src/components/config/ConnectionsForm.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; -import { GitHubConfigForm } from './GitHubConfigForm'; -import { GiteaConfigForm } from './GiteaConfigForm'; -import { Separator } from '../ui/separator'; -import type { GitHubConfig, GiteaConfig } from '@/types/config'; - -interface ConnectionsFormProps { - githubConfig: GitHubConfig; - giteaConfig: GiteaConfig; - setGithubConfig: (update: GitHubConfig | ((prev: GitHubConfig) => GitHubConfig)) => void; - setGiteaConfig: (update: GiteaConfig | ((prev: GiteaConfig) => GiteaConfig)) => void; - onAutoSaveGitHub?: (config: GitHubConfig) => Promise; - onAutoSaveGitea?: (config: GiteaConfig) => Promise; - isAutoSavingGitHub?: boolean; - isAutoSavingGitea?: boolean; -} - -export function ConnectionsForm({ - githubConfig, - giteaConfig, - setGithubConfig, - setGiteaConfig, - onAutoSaveGitHub, - onAutoSaveGitea, - isAutoSavingGitHub, - isAutoSavingGitea, -}: ConnectionsFormProps) { - return ( -
- - - - - -
- ); -} diff --git a/src/components/config/GitHubMirrorSettings.tsx b/src/components/config/GitHubMirrorSettings.tsx index eb9d701..7799de8 100644 --- a/src/components/config/GitHubMirrorSettings.tsx +++ b/src/components/config/GitHubMirrorSettings.tsx @@ -225,7 +225,7 @@ export function GitHubMirrorSettings({
Source code - Always + Always
Releases & Tags - {starredRepoContent.releases && Included} + {starredRepoContent.releases && Included}
Issues - {starredRepoContent.issues && Included} + {starredRepoContent.issues && Included}
Pull Requests - {starredRepoContent.pullRequests && Included} + {starredRepoContent.pullRequests && Included}
Wiki - {starredRepoContent.wiki && Included} + {starredRepoContent.wiki && Included}
diff --git a/src/hooks/useMirror.ts b/src/hooks/useMirror.ts deleted file mode 100644 index b0a8baa..0000000 --- a/src/hooks/useMirror.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { useState } from 'react'; -import { mirrorApi } from '@/lib/api'; -import type { MirrorJob } from '@/lib/db/schema'; - -export function useMirror() { - const [isLoading, setIsLoading] = useState(false); - const [error, setError] = useState(null); - const [currentJob, setCurrentJob] = useState(null); - const [jobs, setJobs] = useState([]); - - const startMirror = async (configId: string, repositoryIds?: string[]) => { - setIsLoading(true); - setError(null); - try { - const job = await mirrorApi.startMirror(configId, repositoryIds); - setCurrentJob(job); - return job; - } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to start mirroring'); - throw err; - } finally { - setIsLoading(false); - } - }; - - const getMirrorJobs = async (configId: string) => { - setIsLoading(true); - setError(null); - try { - const fetchedJobs = await mirrorApi.getMirrorJobs(configId); - setJobs(fetchedJobs); - return fetchedJobs; - } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to fetch mirror jobs'); - throw err; - } finally { - setIsLoading(false); - } - }; - - const getMirrorJob = async (jobId: string) => { - setIsLoading(true); - setError(null); - try { - const job = await mirrorApi.getMirrorJob(jobId); - setCurrentJob(job); - return job; - } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to fetch mirror job'); - throw err; - } finally { - setIsLoading(false); - } - }; - - const cancelMirrorJob = async (jobId: string) => { - setIsLoading(true); - setError(null); - try { - const result = await mirrorApi.cancelMirrorJob(jobId); - if (result.success && currentJob?.id === jobId) { - setCurrentJob({ ...currentJob, status: 'failed' }); - } - return result; - } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to cancel mirror job'); - throw err; - } finally { - setIsLoading(false); - } - }; - - return { - isLoading, - error, - currentJob, - jobs, - startMirror, - getMirrorJobs, - getMirrorJob, - cancelMirrorJob, - }; -} diff --git a/src/lib/gitea.ts b/src/lib/gitea.ts index d39b6e9..56962d1 100644 --- a/src/lib/gitea.ts +++ b/src/lib/gitea.ts @@ -263,7 +263,11 @@ export const mirrorGithubRepoToGitea = async ({ }); // clone issues - if (config.githubConfig.mirrorIssues) { + // Skip issues for starred repos if skipStarredIssues is enabled + const shouldMirrorIssues = config.githubConfig.mirrorIssues && + !(repository.isStarred && config.githubConfig.skipStarredIssues); + + if (shouldMirrorIssues) { await mirrorGitRepoIssuesToGitea({ config, octokit, @@ -608,7 +612,11 @@ export async function mirrorGitHubRepoToGiteaOrg({ }); // Clone issues - if (config.githubConfig?.mirrorIssues) { + // Skip issues for starred repos if skipStarredIssues is enabled + const shouldMirrorIssues = config.githubConfig?.mirrorIssues && + !(repository.isStarred && config.githubConfig?.skipStarredIssues); + + if (shouldMirrorIssues) { await mirrorGitRepoIssuesToGitea({ config, octokit,