* Add GitLab integration components Introduced PushToGitLabDialog and GitlabConnection components to handle GitLab project connections and push functionality. Includes user authentication, project handling, and UI for seamless integration with GitLab. * Add components for GitLab connection and push dialog Introduce `GitlabConnection` and `PushToGitLabDialog` components to handle GitLab integration. These components allow users to connect their GitLab account, manage recent projects, and push code to a GitLab repository with detailed configurations and feedback. * Fix GitLab personal access tokens link to use correct URL * Update GitHub push call to use new pushToRepository method * Enhance GitLab integration with performance improvements - Add comprehensive caching system for repositories and user data - Implement pagination and search/filter functionality with debouncing - Add skeleton loaders and improved loading states - Implement retry logic for API calls with exponential backoff - Add background refresh capabilities - Improve error handling and user feedback - Optimize API calls to reduce loading times * feat: implement GitLab integration with connection management and repository handling - Add GitLab connection UI components - Implement GitLab API service for repository operations - Add GitLab connection store for state management - Update existing connection components (Vercel, Netlify) - Add repository listing and statistics display - Refactor GitLab components into organized folder structure * fix: resolve GitLab deployment issues and improve user experience - Fix DialogTitle accessibility warnings for screen readers - Remove CORS-problematic attributes from avatar images to prevent loading errors - Enhance GitLab API error handling with detailed error messages - Fix project creation settings to prevent initial commit conflicts - Add automatic GitLab connection state initialization on app startup - Improve deployment dialog UI with better error handling and user feedback - Add GitLab deployment source type to action runner system - Clean up deprecated push dialog files and consolidate deployment components 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: implement GitHub clone repository dialog functionality This commit fixes the missing GitHub repository selection dialog in the "Clone a repo" feature by implementing the same elegant interface pattern used by GitLab. Key Changes: - Added onCloneRepository prop support to GitHubConnection component - Updated RepositoryCard to generate proper GitHub clone URLs (https://github.com/{full_name}.git) - Implemented full GitHub repository selection dialog in GitCloneButton.tsx - Added proper dialog close handling after successful clone operations - Maintained existing GitHub connection settings page functionality Technical Details: - Follows same component patterns as GitLab implementation - Uses proper TypeScript interfaces for clone URL handling - Includes professional dialog styling with loading states - Supports repository search, pagination, and authentication flow The GitHub clone experience now matches GitLab's functionality, providing users with a unified and intuitive repository selection interface across both providers. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Clean up unused connection components - Remove ConnectionForm.tsx (unused GitHub form component) - Remove CreateBranchDialog.tsx (unused branch creation dialog) - Remove RepositoryDialogContext.tsx (unused context provider) - Remove empty components/ directory These files were not referenced anywhere in the codebase and were leftover from development. * Remove environment variables info section from ConnectionsTab - Remove collapsible environment variables section - Clean up unused state and imports - Simplify the connections tab UI * Reorganize connections folder structure - Create netlify/ folder and move NetlifyConnection.tsx - Create vercel/ folder and move VercelConnection.tsx - Add index.ts files for both netlify and vercel folders - Update imports in ConnectionsTab.tsx to use new folder structure - All connection components now follow consistent folder organization --------- Co-authored-by: Hayat Bourgi <hayat.bourgi@montyholding.com> Co-authored-by: Hayat55 <53140162+Hayat55@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
160 lines
2.9 KiB
TypeScript
160 lines
2.9 KiB
TypeScript
export interface GitHubUserResponse {
|
|
login: string;
|
|
avatar_url: string;
|
|
html_url: string;
|
|
name: string;
|
|
bio: string;
|
|
public_repos: number;
|
|
followers: number;
|
|
following: number;
|
|
public_gists: number;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface GitLabProjectInfo {
|
|
id: string;
|
|
name: string;
|
|
full_name: string;
|
|
html_url: string;
|
|
description: string;
|
|
stargazers_count: number;
|
|
forks_count: number;
|
|
default_branch: string;
|
|
updated_at: string;
|
|
language: string;
|
|
languages_url: string;
|
|
}
|
|
|
|
export interface GitHubRepoInfo {
|
|
id: string;
|
|
name: string;
|
|
full_name: string;
|
|
html_url: string;
|
|
description: string;
|
|
stargazers_count: number;
|
|
forks_count: number;
|
|
default_branch: string;
|
|
updated_at: string;
|
|
language: string;
|
|
languages_url: string;
|
|
private?: boolean;
|
|
topics?: string[];
|
|
}
|
|
|
|
export interface GitHubContent {
|
|
name: string;
|
|
path: string;
|
|
sha: string;
|
|
size: number;
|
|
url: string;
|
|
html_url: string;
|
|
git_url: string;
|
|
download_url: string;
|
|
type: string;
|
|
content: string;
|
|
encoding: string;
|
|
}
|
|
|
|
export interface GitHubBranch {
|
|
name: string;
|
|
commit: {
|
|
sha: string;
|
|
url: string;
|
|
};
|
|
}
|
|
|
|
export interface GitHubBlobResponse {
|
|
content: string;
|
|
encoding: string;
|
|
sha: string;
|
|
size: number;
|
|
url: string;
|
|
}
|
|
|
|
export interface GitHubOrganization {
|
|
login: string;
|
|
avatar_url: string;
|
|
description: string;
|
|
html_url: string;
|
|
}
|
|
|
|
export interface GitHubEvent {
|
|
id: string;
|
|
type: string;
|
|
created_at: string;
|
|
repo: {
|
|
name: string;
|
|
url: string;
|
|
};
|
|
payload: {
|
|
action?: string;
|
|
ref?: string;
|
|
ref_type?: string;
|
|
description?: string;
|
|
};
|
|
}
|
|
|
|
export interface GitHubLanguageStats {
|
|
[key: string]: number;
|
|
}
|
|
|
|
export interface GitHubStats {
|
|
repos: GitHubRepoInfo[];
|
|
totalStars: number;
|
|
totalForks: number;
|
|
organizations: GitHubOrganization[];
|
|
recentActivity: GitHubEvent[];
|
|
languages: GitHubLanguageStats;
|
|
totalGists: number;
|
|
publicRepos: number;
|
|
privateRepos: number;
|
|
stars: number;
|
|
forks: number;
|
|
followers: number;
|
|
publicGists: number;
|
|
privateGists: number;
|
|
lastUpdated: string;
|
|
}
|
|
|
|
export interface GitHubConnection {
|
|
user: GitHubUserResponse | null;
|
|
token: string;
|
|
tokenType: 'classic' | 'fine-grained';
|
|
stats?: GitHubStats;
|
|
rateLimit?: GitHubRateLimits;
|
|
}
|
|
|
|
export interface GitHubTokenInfo {
|
|
token: string;
|
|
scope: string[];
|
|
avatar_url: string;
|
|
name: string | null;
|
|
created_at: string;
|
|
followers: number;
|
|
}
|
|
|
|
export interface GitHubRateLimits {
|
|
limit: number;
|
|
remaining: number;
|
|
reset: Date;
|
|
used: number;
|
|
}
|
|
|
|
export interface GitHubAuthState {
|
|
username: string;
|
|
tokenInfo: GitHubTokenInfo | null;
|
|
isConnected: boolean;
|
|
isVerifying: boolean;
|
|
isLoadingRepos: boolean;
|
|
rateLimits?: GitHubRateLimits;
|
|
}
|
|
|
|
export interface RepositoryStats {
|
|
totalFiles: number;
|
|
totalSize: number;
|
|
languages: Record<string, number>;
|
|
hasPackageJson: boolean;
|
|
hasDependencies: boolean;
|
|
}
|