Skip to content

Commit

Permalink
Show notification when writing to keychain fails, #92972
Browse files Browse the repository at this point in the history
  • Loading branch information
Rachel Macfarlane committed Mar 25, 2020
1 parent 37fc92c commit 8c50263
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 5 deletions.
3 changes: 2 additions & 1 deletion extensions/github-authentication/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
"postinstall": "node build/postinstall.js"
},
"dependencies": {
"uuid": "^3.3.3"
"uuid": "^3.3.3",
"vscode-nls": "^4.1.2"
},
"devDependencies": {
"@types/keytar": "^4.4.2",
Expand Down
12 changes: 10 additions & 2 deletions extensions/github-authentication/src/common/keychain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
// keytar depends on a native module shipped in vscode, so this is
// how we load it
import * as keytarType from 'keytar';
import { env } from 'vscode';
import * as vscode from 'vscode';
import Logger from './logger';
import * as nls from 'vscode-nls';

const localize = nls.loadMessageBundle();

function getKeytar(): Keytar | undefined {
try {
Expand All @@ -25,7 +28,7 @@ export type Keytar = {
deletePassword: typeof keytarType['deletePassword'];
};

const SERVICE_ID = `${env.uriScheme}-github.login`;
const SERVICE_ID = `${vscode.env.uriScheme}-github.login`;
const ACCOUNT_ID = 'account';

export class Keychain {
Expand All @@ -46,6 +49,11 @@ export class Keychain {
} catch (e) {
// Ignore
Logger.error(`Setting token failed: ${e}`);
const troubleshooting = localize('troubleshooting', "Troubleshooting Guide");
const result = await vscode.window.showErrorMessage(localize('keychainWriteError', "Writing login information to the keychain failed with error '{0}'.", e.message), troubleshooting);
if (result === troubleshooting) {
vscode.env.openExternal(vscode.Uri.parse('https://code.visualstudio.com/docs/editor/settings-sync#_troubleshooting-keychain-issues'));
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions extensions/github-authentication/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,11 @@ uuid@^3.3.3:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==

vscode-nls@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167"
integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==

which-pm-runs@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
Expand Down
12 changes: 10 additions & 2 deletions extensions/vscode-account/src/keychain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
// keytar depends on a native module shipped in vscode, so this is
// how we load it
import * as keytarType from 'keytar';
import { env } from 'vscode';
import * as vscode from 'vscode';
import Logger from './logger';
import * as nls from 'vscode-nls';

const localize = nls.loadMessageBundle();

function getKeytar(): Keytar | undefined {
try {
Expand All @@ -25,7 +28,7 @@ export type Keytar = {
deletePassword: typeof keytarType['deletePassword'];
};

const SERVICE_ID = `${env.uriScheme}-vscode.login`;
const SERVICE_ID = `${vscode.env.uriScheme}-vscode.login`;
const ACCOUNT_ID = 'account';

export class Keychain {
Expand All @@ -46,6 +49,11 @@ export class Keychain {
} catch (e) {
// Ignore
Logger.error(`Setting token failed: ${e}`);
const troubleshooting = localize('troubleshooting', "Troubleshooting Guide");
const result = await vscode.window.showErrorMessage(localize('keychainWriteError', "Writing login information to the keychain failed with error '{0}'.", e.message), troubleshooting);
if (result === troubleshooting) {
vscode.env.openExternal(vscode.Uri.parse('https://code.visualstudio.com/docs/editor/settings-sync#_troubleshooting-keychain-issues'));
}
}
}

Expand Down

0 comments on commit 8c50263

Please # to comment.