SCM - Add proposal for inputBox action button (#196121)

* SCM - Add proposal for inputBox action button

* More reliable fix for overlapping
This commit is contained in:
Ladislau Szomoru
2023-10-21 09:51:24 +02:00
committed by GitHub
parent 0e925d6700
commit c05b49710b
17 changed files with 427 additions and 32 deletions

View File

@@ -12,13 +12,14 @@ import { Git } from './git';
import * as path from 'path';
import * as fs from 'fs';
import { fromGitUri } from './uri';
import { APIState as State, CredentialsProvider, PushErrorHandler, PublishEvent, RemoteSourcePublisher, PostCommitCommandsProvider, BranchProtectionProvider } from './api/git';
import { APIState as State, CredentialsProvider, PushErrorHandler, PublishEvent, RemoteSourcePublisher, PostCommitCommandsProvider, BranchProtectionProvider, CommitMessageProvider } from './api/git';
import { Askpass } from './askpass';
import { IPushErrorHandlerRegistry } from './pushError';
import { ApiRepository } from './api/api1';
import { IRemoteSourcePublisherRegistry } from './remotePublisher';
import { IPostCommitCommandsProviderRegistry } from './postCommitCommands';
import { IBranchProtectionProviderRegistry } from './branchProtection';
import { ICommitMessageProviderRegistry } from './commitMessageProvider';
class RepositoryPick implements QuickPickItem {
@memoize get label(): string {
@@ -170,7 +171,7 @@ class UnsafeRepositoriesManager {
}
}
export class Model implements IRepositoryResolver, IBranchProtectionProviderRegistry, IRemoteSourcePublisherRegistry, IPostCommitCommandsProviderRegistry, IPushErrorHandlerRegistry {
export class Model implements IRepositoryResolver, IBranchProtectionProviderRegistry, ICommitMessageProviderRegistry, IRemoteSourcePublisherRegistry, IPostCommitCommandsProviderRegistry, IPushErrorHandlerRegistry {
private _onDidOpenRepository = new EventEmitter<Repository>();
readonly onDidOpenRepository: Event<Repository> = this._onDidOpenRepository.event;
@@ -237,6 +238,14 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
private pushErrorHandlers = new Set<PushErrorHandler>();
private _commitMessageProvider: CommitMessageProvider | undefined;
get commitMessageProvider(): CommitMessageProvider | undefined {
return this._commitMessageProvider;
}
private _onDidChangeCommitMessageProvider = new EventEmitter<void>();
readonly onDidChangeCommitMessageProvider = this._onDidChangeCommitMessageProvider.event;
private _unsafeRepositoriesManager: UnsafeRepositoriesManager;
get unsafeRepositories(): string[] {
return this._unsafeRepositoriesManager.repositories;
@@ -578,7 +587,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Open repository
const [dotGit, repositoryRootRealPath] = await Promise.all([this.git.getRepositoryDotGit(repositoryRoot), this.getRepositoryRootRealPath(repositoryRoot)]);
const repository = new Repository(this.git.open(repositoryRoot, repositoryRootRealPath, dotGit, this.logger), this, this, this, this, this, this.globalState, this.logger, this.telemetryReporter);
const repository = new Repository(this.git.open(repositoryRoot, repositoryRootRealPath, dotGit, this.logger), this, this, this, this, this, this, this.globalState, this.logger, this.telemetryReporter);
this.open(repository);
this._closedRepositoriesManager.deleteRepository(repository.root);
@@ -939,6 +948,16 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return toDisposable(() => this.pushErrorHandlers.delete(handler));
}
registerCommitMessageProvider(provider: CommitMessageProvider): Disposable {
this._commitMessageProvider = provider;
this._onDidChangeCommitMessageProvider.fire();
return toDisposable(() => {
this._commitMessageProvider = undefined;
this._onDidChangeCommitMessageProvider.fire();
});
}
getPushErrorHandlers(): PushErrorHandler[] {
return [...this.pushErrorHandlers];
}