47 lines · 1.4 KB · TypeScript
RawDownload
/** * Hook to convert repository IDs to RepositoryDropdownItem[] for display. * Used by TriggerCard and AddTriggerForm to show selected repositories. */ import { useMemo } from 'react'; import { useStore } from '@renderer/store'; import type { RepositoryDropdownItem } from '@renderer/components/settings/hooks/useSettingsConfig'; /** * Converts an array of repository IDs to RepositoryDropdownItem[] for display. * Searches repository groups to find matching repositories. */export function useRepositoryLookup(repositoryIds: string[]): RepositoryDropdownItem[] {  const repositoryGroups = useStore((state) => state.repositoryGroups);   return useMemo((): RepositoryDropdownItem[] => {    const items: RepositoryDropdownItem[] = [];     for (const repositoryId of repositoryIds) {      // Find repository group by ID      const group = repositoryGroups.find((g) => g.id === repositoryId);      if (group) {        items.push({          id: group.id,          name: group.name,          path: group.worktrees[0]?.path ?? '',          worktreeCount: group.worktrees.length,          totalSessions: group.totalSessions,        });      } else {        // If not found, create a placeholder item        items.push({          id: repositoryId,          name: repositoryId,          path: '',          worktreeCount: 0,          totalSessions: 0,        });      }    }     return items;  }, [repositoryIds, repositoryGroups]);}