feat(integrations): add Git hosting integrations and repo listing
Add support for integrating with external Git hosts (GitLab, Gitea, and Azure DevOps). The backend gains a client to fetch paginated repository lists, normalise base URLs, and surface provider errors. Credentials are loaded from the OS keychain and a Tauri command is exposed for the frontend to list integration repositories. - Implement integration client with pagination, deserialization, and provider-specific handling. - Centralise keychain credential loading and expose listing command. - Update UI to manage integration metadata, persist settings, and save/remove tokens to the OS keychain for cloning and operations.
This commit is contained in:
@@ -16,6 +16,57 @@ export type AppTheme = "system" | "light" | "dark";
|
||||
export type AppAppearance = "modern" | "classic" | "custom";
|
||||
export type AppLanguage = "en" | "de";
|
||||
|
||||
export type GitIntegrationProvider = "gitlab" | "gitlab-self-hosted" | "azure-devops" | "gitea";
|
||||
|
||||
export interface GitIntegrationConfig {
|
||||
provider: GitIntegrationProvider;
|
||||
enabled: boolean;
|
||||
baseUrl: string;
|
||||
username: string;
|
||||
tokenStored: boolean;
|
||||
}
|
||||
|
||||
export interface GitIntegrationSettings {
|
||||
providers: Record<GitIntegrationProvider, GitIntegrationConfig>;
|
||||
azureDevOpsOrganizations: AzureDevOpsOrganization[];
|
||||
}
|
||||
|
||||
export interface AzureDevOpsOrganization {
|
||||
id: string;
|
||||
name: string;
|
||||
enabled: boolean;
|
||||
baseUrl: string;
|
||||
username: string;
|
||||
tokenStored: boolean;
|
||||
}
|
||||
|
||||
export interface GitIntegrationSecretUpdate {
|
||||
provider: GitIntegrationProvider;
|
||||
accountId?: string;
|
||||
token?: string;
|
||||
removeToken?: boolean;
|
||||
}
|
||||
|
||||
export interface GitIntegrationSource {
|
||||
id: string;
|
||||
provider: GitIntegrationProvider;
|
||||
accountId?: string;
|
||||
label: string;
|
||||
baseUrl: string;
|
||||
}
|
||||
|
||||
export interface GitIntegrationRepository {
|
||||
id: string;
|
||||
name: string;
|
||||
fullName: string;
|
||||
description: string;
|
||||
cloneUrl: string;
|
||||
sshUrl: string;
|
||||
webUrl: string;
|
||||
updatedAt: string;
|
||||
private: boolean;
|
||||
}
|
||||
|
||||
export interface CustomThemeColors {
|
||||
background: string;
|
||||
surface: string;
|
||||
|
||||
Reference in New Issue
Block a user