@@ -48,6 +48,7 @@ import {
4848 AdminRepository ,
4949 RepositoryListResponse ,
5050} from "@/lib/admin-api" ;
51+ import { getRepositorySourceTypeLabelKey , isGitRepositorySource } from "@/lib/repository-source" ;
5152import {
5253 Loader2 ,
5354 Search ,
@@ -82,17 +83,6 @@ const statusBarColors: Record<number, string> = {
8283 3 : "bg-red-500/90" ,
8384} ;
8485
85- function getSourceTypeLabelKey ( sourceType : AdminRepository [ "sourceType" ] ) {
86- switch ( sourceType ) {
87- case "Archive" :
88- return "sourceTypeArchive" ;
89- case "LocalDirectory" :
90- return "sourceTypeLocal" ;
91- default :
92- return "sourceTypeGit" ;
93- }
94- }
95-
9686export default function AdminRepositoriesPage ( ) {
9787 const router = useRouter ( ) ;
9888 const [ data , setData ] = useState < RepositoryListResponse | null > ( null ) ;
@@ -269,7 +259,7 @@ export default function AdminRepositoriesPage() {
269259 const selectedGitRepoIds = useMemo ( ( ) => {
270260 const items = data ?. items ?? [ ] ;
271261 return items
272- . filter ( ( item ) => selectedIds . has ( item . id ) && item . sourceType === "Git" )
262+ . filter ( ( item ) => selectedIds . has ( item . id ) && isGitRepositorySource ( item . sourceType , item . sourceTypeName ) )
273263 . map ( ( item ) => item . id ) ;
274264 } , [ data , selectedIds ] ) ;
275265 const overview = useMemo ( ( ) => {
@@ -513,7 +503,7 @@ export default function AdminRepositoriesPage() {
513503 </ p >
514504 < p className = "mt-1" >
515505 < span className = "inline-flex rounded-full bg-secondary px-2 py-1 text-xs text-muted-foreground" >
516- { t ( `admin.repositories.${ getSourceTypeLabelKey ( repo . sourceType ) } ` ) }
506+ { t ( `admin.repositories.${ getRepositorySourceTypeLabelKey ( repo . sourceType , repo . sourceTypeName ) } ` ) }
517507 </ span >
518508 </ p >
519509 </ div >
@@ -592,8 +582,8 @@ export default function AdminRepositoriesPage() {
592582 variant = "ghost"
593583 size = "icon"
594584 onClick = { ( ) => handleSyncStats ( repo . id ) }
595- disabled = { syncing === repo . id || repo . sourceType !== "Git" }
596- title = { repo . sourceType === "Git" ? t ( 'admin.repositories.syncStats' ) : t ( 'admin.repositories.syncStatsNotSupported' ) }
585+ disabled = { syncing === repo . id || ! isGitRepositorySource ( repo . sourceType , repo . sourceTypeName ) }
586+ title = { isGitRepositorySource ( repo . sourceType , repo . sourceTypeName ) ? t ( 'admin.repositories.syncStats' ) : t ( 'admin.repositories.syncStatsNotSupported' ) }
597587 className = "transition-all duration-200 hover:-translate-y-0.5"
598588 >
599589 { syncing === repo . id ? (
@@ -684,7 +674,7 @@ export default function AdminRepositoriesPage() {
684674 </ div >
685675 < div >
686676 < label className = "text-sm font-medium" > { t ( 'admin.repositories.sourceType' ) } </ label >
687- < p > { t ( `admin.repositories.${ getSourceTypeLabelKey ( selectedRepo . sourceType ) } ` ) } </ p >
677+ < p > { t ( `admin.repositories.${ getRepositorySourceTypeLabelKey ( selectedRepo . sourceType , selectedRepo . sourceTypeName ) } ` ) } </ p >
688678 </ div >
689679 < div >
690680 < label className = "text-sm font-medium" > { t ( 'admin.repositories.sourceLocation' ) } </ label >
0 commit comments