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;
|
if (!query) return activeRepositories;
|
||||||
return activeRepositories.filter((repository) => `${repository.fullName} ${repository.description}`.toLocaleLowerCase().includes(query));
|
return activeRepositories.filter((repository) => `${repository.fullName} ${repository.description}`.toLocaleLowerCase().includes(query));
|
||||||
});
|
});
|
||||||
const azureRepositoryGroups = $derived.by(() => {
|
const usesRepositoryGroups = $derived(activeSource?.provider === "azure-devops" || activeSource?.provider === "gitea");
|
||||||
if (activeSource?.provider !== "azure-devops") return [];
|
const repositoryGroups = $derived.by(() => {
|
||||||
|
if (!usesRepositoryGroups) return [];
|
||||||
const groups = new Map<string, GitIntegrationRepository[]>();
|
const groups = new Map<string, GitIntegrationRepository[]>();
|
||||||
for (const repository of filteredRepositories) {
|
for (const repository of filteredRepositories) {
|
||||||
const separator = repository.fullName.indexOf("/");
|
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>
|
<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}
|
{: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>
|
<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"}
|
{:else if usesRepositoryGroups}
|
||||||
{#each azureRepositoryGroups as group (group.project)}
|
{#each repositoryGroups as group (group.project)}
|
||||||
<section class="repository-project-group" aria-label={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>
|
<div class="repository-project-header"><span>{group.project}</span><em>{group.repositories.length}</em></div>
|
||||||
{#each group.repositories as repository (repository.id)}
|
{#each group.repositories as repository (repository.id)}
|
||||||
|
|||||||
Reference in New Issue
Block a user