From db517e93691d9f11c1c3a1886ad77ccb53777a89 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Fri, 4 Nov 2022 12:17:41 +0100 Subject: [PATCH] Add "OK, Don't Ask Again" button to the publish branch prompt --- extensions/git/src/commands.ts | 21 +++++++++++++++------ extensions/git/src/main.ts | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 076691d1a7c0c..1ff16ab7c3900 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -5,7 +5,7 @@ import * as os from 'os'; import * as path from 'path'; -import { Command, commands, Disposable, LineChange, MessageOptions, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, Selection, TextDocumentContentProvider, InputBoxValidationSeverity, TabInputText, TabInputTextMerge, QuickPickItemKind, TextDocument, LogOutputChannel, l10n } from 'vscode'; +import { Command, commands, Disposable, LineChange, MessageOptions, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, Selection, TextDocumentContentProvider, InputBoxValidationSeverity, TabInputText, TabInputTextMerge, QuickPickItemKind, TextDocument, LogOutputChannel, l10n, Memento } from 'vscode'; import TelemetryReporter from '@vscode/extension-telemetry'; import { uniqueNamesGenerator, adjectives, animals, colors, NumberDictionary } from '@joaomoreno/unique-names-generator'; import { Branch, ForcePushMode, GitErrorCodes, Ref, RefType, Status, CommitOptions, RemoteSourcePublisher, Remote } from './api/git'; @@ -351,6 +351,7 @@ export class CommandCenter { constructor( private git: Git, private model: Model, + private globalState: Memento, private logger: LogOutputChannel, private telemetryReporter: TelemetryReporter ) { @@ -2544,12 +2545,20 @@ export class CommandCenter { return; } - const branchName = repository.HEAD.name; - const message = l10n.t('The branch "{0}" has no remote branch. Would you like to publish this branch?', branchName); - const yes = l10n.t('OK'); - const pick = await window.showWarningMessage(message, { modal: true }, yes); + if (this.globalState.get('confirmBranchPublish', true)) { + const branchName = repository.HEAD.name; + const message = l10n.t('The branch "{0}" has no remote branch. Would you like to publish this branch?', branchName); + const yes = l10n.t('OK'); + const neverAgain = l10n.t('OK, Don\'t Ask Again'); + const pick = await window.showWarningMessage(message, { modal: true }, yes, neverAgain); - if (pick === yes) { + if (pick === yes || pick === neverAgain) { + if (pick === neverAgain) { + this.globalState.update('confirmBranchPublish', false); + } + await this.publish(repository); + } + } else { await this.publish(repository); } } diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts index 87ddb61e4cacc..54faa7aa0f8b1 100644 --- a/extensions/git/src/main.ts +++ b/extensions/git/src/main.ts @@ -106,7 +106,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel, git.onOutput.addListener('log', onOutput); disposables.push(toDisposable(() => git.onOutput.removeListener('log', onOutput))); - const cc = new CommandCenter(git, model, logger, telemetryReporter); + const cc = new CommandCenter(git, model, context.globalState, logger, telemetryReporter); disposables.push( cc, new GitFileSystemProvider(model),