Secrets API feedback

This commit is contained in:
Rachel Macfarlane 2021-01-05 10:16:50 -08:00
parent 037708a33f
commit ced3bb4bb9
7 changed files with 19 additions and 25 deletions

View file

@ -34,7 +34,7 @@ export class Keychain {
constructor(private context: vscode.ExtensionContext) { }
async setToken(token: string): Promise<void> {
try {
return await this.context.secretState.set(SERVICE_ID, token);
return await this.context.secrets.set(SERVICE_ID, token);
} catch (e) {
// Ignore
Logger.error(`Setting token failed: ${e}`);
@ -48,7 +48,7 @@ export class Keychain {
async getToken(): Promise<string | null | undefined> {
try {
return await this.context.secretState.get(SERVICE_ID);
return await this.context.secrets.get(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Getting token failed: ${e}`);
@ -58,7 +58,7 @@ export class Keychain {
async deleteToken(): Promise<void> {
try {
return await this.context.secretState.delete(SERVICE_ID);
return await this.context.secrets.delete(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Deleting token failed: ${e}`);

View file

@ -40,7 +40,7 @@ export class GitHubAuthenticationProvider {
// Ignore, network request failed
}
context.subscriptions.push(context.secretState.onDidChange(() => this.checkForUpdates()));
context.subscriptions.push(context.secrets.onDidChange(() => this.checkForUpdates()));
}
private async verifySessions(): Promise<void> {

View file

@ -149,7 +149,7 @@ export class AzureActiveDirectoryService {
}
}
this._disposables.push(this._context.secretState.onDidChange(() => this.checkForUpdates));
this._disposables.push(this._context.secrets.onDidChange(() => this.checkForUpdates));
}
private parseStoredData(data: string): IStoredSession[] {

View file

@ -48,7 +48,7 @@ export class Keychain {
async setToken(token: string): Promise<void> {
try {
return await this.context.secretState.set(SERVICE_ID, token);
return await this.context.secrets.set(SERVICE_ID, token);
} catch (e) {
Logger.error(`Setting token failed: ${e}`);
@ -70,7 +70,7 @@ export class Keychain {
async getToken(): Promise<string | null | undefined> {
try {
return await this.context.secretState.get(SERVICE_ID);
return await this.context.secrets.get(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Getting token failed: ${e}`);
@ -80,7 +80,7 @@ export class Keychain {
async deleteToken(): Promise<void> {
try {
return await this.context.secretState.delete(SERVICE_ID);
return await this.context.secrets.delete(SERVICE_ID);
} catch (e) {
// Ignore
Logger.error(`Deleting token failed: ${e}`);

View file

@ -2342,26 +2342,22 @@ declare module 'vscode' {
//#endregion
/**
* TODO@RMacfarlane name
* Secrets
* SecretStorage
* SecretStore
*
* TODO@RMacfarlane jsdoc
* Represents a storage utility for secrets, information that is
* sensitive.
*/
export interface SecretState {
export interface SecretStorage {
/**
* Retrieve a secret that was stored with key. Returns undefined if there
* is no password matching that key.
* @param key The key the password was stored under.
* // TODO@RMacfarlane @returns
* @returns The stored value or `undefined`.
*/
get(key: string): Thenable<string | undefined>;
/**
* Store a secret under a given key.
* @param key The key to store the password under
* @param value The password
* @param key The key to store the password under.
* @param value The password.
*/
set(key: string, value: string): Thenable<void>;
@ -2376,10 +2372,8 @@ declare module 'vscode' {
*/
onDidChange: Event<void>;
}
export interface ExtensionContext {
// TODO@RMacfarlane
// secrets: SecretState;
// secretStorages: SecretState;
secretState: SecretState;
secrets: SecretStorage;
}
}

View file

@ -384,7 +384,7 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
const globalState = new ExtensionGlobalMemento(extensionDescription, this._storage);
const workspaceState = new ExtensionMemento(extensionDescription.identifier.value, false, this._storage);
const secretState = new ExtensionSecrets(extensionDescription, this._secretState);
const secrets = new ExtensionSecrets(extensionDescription, this._secretState);
const extensionMode = extensionDescription.isUnderDevelopment
? (this._initData.environment.extensionTestsLocationURI ? ExtensionMode.Test : ExtensionMode.Development)
: ExtensionMode.Production;
@ -400,7 +400,7 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
return Object.freeze<vscode.ExtensionContext>({
globalState,
workspaceState,
secretState,
secrets,
subscriptions: [],
get extensionUri() { return extensionDescription.extensionLocation; },
get extensionPath() { return extensionDescription.extensionLocation.fsPath; },

View file

@ -9,7 +9,7 @@ import { ExtHostSecretState } from 'vs/workbench/api/common/exHostSecretState';
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { Emitter, Event } from 'vs/base/common/event';
export class ExtensionSecrets implements vscode.SecretState {
export class ExtensionSecrets implements vscode.SecretStorage {
protected readonly _id: string;
protected readonly _secretState: ExtHostSecretState;