diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 8eca619f357..3280bf06f4e 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -288,6 +288,7 @@ class RemoteSourceProviderQuickPick { } } catch (err) { this.quickpick.items = [{ label: localize('error', "$(error) Error: {0}", err.message), alwaysShow: true }]; + console.error(err); } finally { this.quickpick.busy = false; } diff --git a/extensions/github/package.json b/extensions/github/package.json index e8213756e9f..effafcea03a 100644 --- a/extensions/github/package.json +++ b/extensions/github/package.json @@ -24,15 +24,15 @@ "command": "github.publish", "title": "Publish to GitHub" } + ], + "viewsWelcome": [ + { + "view": "scm", + "contents": "%welcome.publishFolder%", + "when": "config.git.enabled && git.state == initialized && workbenchState == folder" + } ] }, - "viewsWelcome": [ - { - "view": "scm", - "contents": "%welcome.publishFolder%", - "when": "config.git.enabled && git.state == initialized && workbenchState == folder" - } - ], "scripts": { "vscode:prepublish": "npm run compile", "compile": "gulp compile-extension:github", diff --git a/extensions/github/src/commands.ts b/extensions/github/src/commands.ts index 6ca4c6ac819..4ada7466e23 100644 --- a/extensions/github/src/commands.ts +++ b/extensions/github/src/commands.ts @@ -11,7 +11,7 @@ function sanitizeRepositoryName(value: string): string { return value.trim().replace(/[^a-z0-9_.]/ig, '-'); } -export function registerGlobalCommands(context: vscode.ExtensionContext, gitAPI: GitAPI) { +export function registerCommands(gitAPI: GitAPI): vscode.Disposable[] { async function publish(): Promise { if (!vscode.workspace.workspaceFolders?.length) { return; @@ -19,15 +19,18 @@ export function registerGlobalCommands(context: vscode.ExtensionContext, gitAPI: const folder = vscode.workspace.workspaceFolders[0]; // TODO - const octokit = await getOctokit(); - const user = await octokit.users.getAuthenticated({}); - const owner = user.data.login; - const quickpick = vscode.window.createQuickPick(); quickpick.ignoreFocusOut = true; quickpick.placeholder = 'Repository Name'; + quickpick.value = folder.name; quickpick.show(); + quickpick.busy = true; + + const octokit = await getOctokit(); + const user = await octokit.users.getAuthenticated({}); + const owner = user.data.login; + quickpick.busy = false; let repo: string | undefined; @@ -41,7 +44,6 @@ export function registerGlobalCommands(context: vscode.ExtensionContext, gitAPI: } }; - quickpick.value = folder.name; onDidChangeValue(); while (true) { @@ -108,13 +110,17 @@ export function registerGlobalCommands(context: vscode.ExtensionContext, gitAPI: } } - context.subscriptions.push(vscode.commands.registerCommand('github.publish', async () => { + const disposables = []; + + disposables.push(vscode.commands.registerCommand('github.publish', async () => { try { publish(); } catch (err) { vscode.window.showErrorMessage(err.message); } })); + + return disposables; } function getPick(quickpick: vscode.QuickPick): Promise { diff --git a/extensions/github/src/extension.ts b/extensions/github/src/extension.ts index ac3cb63808e..a1e147dfbce 100644 --- a/extensions/github/src/extension.ts +++ b/extensions/github/src/extension.ts @@ -6,10 +6,12 @@ import * as vscode from 'vscode'; import { GithubRemoteSourceProvider } from './remoteSourceProvider'; import { GitExtension } from './typings/git'; +import { registerCommands } from './commands'; export async function activate(context: vscode.ExtensionContext) { const gitExtension = vscode.extensions.getExtension('vscode.git')!.exports; const gitAPI = gitExtension.getAPI(1); + context.subscriptions.push(...registerCommands(gitAPI)); context.subscriptions.push(gitAPI.registerRemoteSourceProvider(new GithubRemoteSourceProvider())); } diff --git a/extensions/github/src/octokit.ts b/extensions/github/src/octokit.ts index 4a1aedea01a..ebec7b4cdc4 100644 --- a/extensions/github/src/octokit.ts +++ b/extensions/github/src/octokit.ts @@ -47,7 +47,7 @@ export function getOctokit(): Promise { return new Octokit({ request: { agent }, userAgent: 'GitHub VSCode', - auth() { return `token ${token}`; } + auth: `token ${token}` }); }).then(null, async err => { _octokit = undefined; diff --git a/extensions/github/src/remoteSourceProvider.ts b/extensions/github/src/remoteSourceProvider.ts index 1ef8c32730f..d6c848b1d3f 100644 --- a/extensions/github/src/remoteSourceProvider.ts +++ b/extensions/github/src/remoteSourceProvider.ts @@ -40,7 +40,9 @@ export class GithubRemoteSourceProvider implements RemoteSourceProvider { private async getUserRemoteSources(octokit: Octokit, query?: string): Promise { if (!query) { - const res = await octokit.repos.list({ sort: 'pushed', per_page: 100 }); + const user = await octokit.users.getAuthenticated({}); + const username = user.data.login; + const res = await octokit.repos.listForUser({ username, sort: 'updated', per_page: 100 }); this.userReposCache = res.data.map(asRemoteSource); }