Archived
1
0

chore(vscode): update to 1.53.2

These conflicts will be resolved in the following commits. We do it this way so
that PR review is possible.
This commit is contained in:
Joe Previte
2021-02-25 11:27:27 -07:00
1900 changed files with 83066 additions and 64589 deletions

View File

@ -31,9 +31,10 @@ export type Keytar = {
const SERVICE_ID = `github.auth`;
export class Keychain {
constructor(private context: vscode.ExtensionContext) { }
async setToken(token: string): Promise<void> {
try {
return await vscode.authentication.setPassword(SERVICE_ID, token);
return await this.context.secrets.store(SERVICE_ID, token);
} catch (e) {
// Ignore
Logger.error(`Setting token failed: ${e}`);
@ -47,7 +48,7 @@ export class Keychain {
async getToken(): Promise<string | null | undefined> {
try {
return await vscode.authentication.getPassword(SERVICE_ID);
return await this.context.secrets.get(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Getting token failed: ${e}`);
@ -57,7 +58,7 @@ export class Keychain {
async deleteToken(): Promise<void> {
try {
return await vscode.authentication.deletePassword(SERVICE_ID);
return await this.context.secrets.delete(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Deleting token failed: ${e}`);
@ -85,5 +86,3 @@ export class Keychain {
}
}
}
export const keychain = new Keychain();

View File

@ -14,7 +14,7 @@ export async function activate(context: vscode.ExtensionContext) {
const telemetryReporter = new TelemetryReporter(name, version, aiKey);
context.subscriptions.push(vscode.window.registerUriHandler(uriHandler));
const loginService = new GitHubAuthenticationProvider();
const loginService = new GitHubAuthenticationProvider(context);
await loginService.initialize(context);
@ -22,10 +22,7 @@ export async function activate(context: vscode.ExtensionContext) {
return loginService.manuallyProvideToken();
}));
context.subscriptions.push(vscode.authentication.registerAuthenticationProvider({
id: 'github',
label: 'GitHub',
supportsMultipleAccounts: false,
context.subscriptions.push(vscode.authentication.registerAuthenticationProvider('github', 'GitHub', {
onDidChangeSessions: onDidChangeSessions.event,
getSessions: () => Promise.resolve(loginService.sessions),
login: async (scopeList: string[]) => {
@ -79,7 +76,7 @@ export async function activate(context: vscode.ExtensionContext) {
throw e;
}
}
}));
}, { supportsMultipleAccounts: false }));
return;
}

View File

@ -5,7 +5,7 @@
import * as vscode from 'vscode';
import { v4 as uuid } from 'uuid';
import { keychain } from './common/keychain';
import { Keychain } from './common/keychain';
import { GitHubServer, NETWORK_ERROR } from './githubServer';
import Logger from './common/logger';
@ -26,6 +26,12 @@ export class GitHubAuthenticationProvider {
private _sessions: vscode.AuthenticationSession[] = [];
private _githubServer = new GitHubServer();
private _keychain: Keychain;
constructor(context: vscode.ExtensionContext) {
this._keychain = new Keychain(context);
}
public async initialize(context: vscode.ExtensionContext): Promise<void> {
try {
this._sessions = await this.readSessions();
@ -34,7 +40,7 @@ export class GitHubAuthenticationProvider {
// Ignore, network request failed
}
context.subscriptions.push(vscode.authentication.onDidChangePassword(() => this.checkForUpdates()));
context.subscriptions.push(context.secrets.onDidChange(() => this.checkForUpdates()));
}
private async verifySessions(): Promise<void> {
@ -101,7 +107,7 @@ export class GitHubAuthenticationProvider {
}
private async readSessions(): Promise<vscode.AuthenticationSession[]> {
const storedSessions = await keychain.getToken() || await keychain.tryMigrate();
const storedSessions = await this._keychain.getToken() || await this._keychain.tryMigrate();
if (storedSessions) {
try {
const sessionData: SessionData[] = JSON.parse(storedSessions);
@ -132,7 +138,7 @@ export class GitHubAuthenticationProvider {
}
Logger.error(`Error reading sessions: ${e}`);
await keychain.deleteToken();
await this._keychain.deleteToken();
}
}
@ -140,7 +146,7 @@ export class GitHubAuthenticationProvider {
}
private async storeSessions(): Promise<void> {
await keychain.setToken(JSON.stringify(this._sessions));
await this._keychain.setToken(JSON.stringify(this._sessions));
}
get sessions(): vscode.AuthenticationSession[] {