refactor(clone-dialog): generalize repository grouping and support gitea
Generalize the repository grouping logic so grouping is driven by a single derived flag and not tied to a single provider. Replace the Azure-specific group variable with a generic repositoryGroups value and use a shared usesRepositoryGroups switch so grouping can be enabled for other providers. - Add usesRepositoryGroups derived flag to centralize grouping logic - Replace azure-only grouping with repositoryGroups and enable Gitea grouping
This commit is contained in:
@@ -64,8 +64,9 @@
|
||||
if (!query) return activeRepositories;
|
||||
return activeRepositories.filter((repository) => `${repository.fullName} ${repository.description}`.toLocaleLowerCase().includes(query));
|
||||
});
|
||||
const azureRepositoryGroups = $derived.by(() => {
|
||||
if (activeSource?.provider !== "azure-devops") return [];
|
||||
const usesRepositoryGroups = $derived(activeSource?.provider === "azure-devops" || activeSource?.provider === "gitea");
|
||||
const repositoryGroups = $derived.by(() => {
|
||||
if (!usesRepositoryGroups) return [];
|
||||
const groups = new Map<string, GitIntegrationRepository[]>();
|
||||
for (const repository of filteredRepositories) {
|
||||
const separator = repository.fullName.indexOf("/");
|
||||
@@ -390,8 +391,8 @@
|
||||
<div class="repository-state repository-state-error"><strong>{isGerman ? "Repositories konnten nicht geladen werden" : "Could not load repositories"}</strong><span>{repositoryError}</span></div>
|
||||
{:else if filteredRepositories.length === 0}
|
||||
<div class="repository-state"><GitBranch size={20} /><span>{repositorySearch ? (isGerman ? "Keine passenden Repositories." : "No matching repositories.") : (isGerman ? "Keine Repositories gefunden." : "No repositories found.")}</span></div>
|
||||
{:else if activeSource?.provider === "azure-devops"}
|
||||
{#each azureRepositoryGroups as group (group.project)}
|
||||
{:else if usesRepositoryGroups}
|
||||
{#each repositoryGroups as group (group.project)}
|
||||
<section class="repository-project-group" aria-label={group.project}>
|
||||
<div class="repository-project-header"><span>{group.project}</span><em>{group.repositories.length}</em></div>
|
||||
{#each group.repositories as repository (repository.id)}
|
||||
|
||||
Reference in New Issue
Block a user