Skip to content
Snippets Groups Projects

refactor: global storage

1 file
+ 30
17
Compare changes
  • Side-by-side
  • Inline
import { ExtensionContext, Memento, SecretStorage, window } from 'vscode';
import { ExtensionContext, Memento, SecretStorage, window } from 'vscode';
import { extensionLog as log } from '../recorder/utils/log';
import { extensionLog as log } from '../recorder/utils/log';
export type GlobalStorageType = Memento & { setKeysForSync(keys: readonly string[]): void };
type GlobalStorageType = Memento & { setKeysForSync(keys: readonly string[]): void };
export default class ExtensionStore {
export default class ExtensionStore {
private static instance: ExtensionStore;
private static instance: ExtensionStore;
@@ -20,8 +20,10 @@ export default class ExtensionStore {
@@ -20,8 +20,10 @@ export default class ExtensionStore {
this.globalStorage.update(key, undefined);
this.globalStorage.update(key, undefined);
}
}
}
}
if (await this.secretStorage.get(StoreKey.AccessTokenKey)) this.secretStorage.delete(StoreKey.AccessTokenKey);
if (await this.secretStorage.get(SecretStoreKey.AccessTokenKey))
if (await this.secretStorage.get(StoreKey.RefreshTokenKey)) this.secretStorage.delete(StoreKey.RefreshTokenKey);
this.secretStorage.delete(SecretStoreKey.AccessTokenKey);
 
if (await this.secretStorage.get(SecretStoreKey.RefreshTokenKey))
 
this.secretStorage.delete(SecretStoreKey.RefreshTokenKey);
}
}
public static getInstance(context?: ExtensionContext): ExtensionStore {
public static getInstance(context?: ExtensionContext): ExtensionStore {
@@ -33,21 +35,29 @@ export default class ExtensionStore {
@@ -33,21 +35,29 @@ export default class ExtensionStore {
return ExtensionStore.instance;
return ExtensionStore.instance;
}
}
getMissionWorkdir(): string | undefined {
public getMissionWorkdir(): string | undefined {
return this.globalStorage.get<string>(StoreKey.MissionWorkdirKey);
return this.readStringKey(GlobalStoreKey.MissionWorkdirKey);
}
}
setMissionWorkdir(path: string) {
public setMissionWorkdir(path: string) {
this.globalStorage.update(StoreKey.MissionWorkdirKey, path);
this.storeStringKey(GlobalStoreKey.MissionWorkdirKey, path);
window.showInformationMessage(`Nouveau dossier de stockage des missions: ${path}`);
window.showInformationMessage(`Nouveau dossier de stockage des missions: ${path}`);
}
}
 
private readStringKey(key: GlobalStoreKey): string | undefined {
 
return this.globalStorage.get<string>(key);
 
}
 
 
private storeStringKey(key: GlobalStoreKey, value: string) {
 
this.globalStorage.update(key, value);
 
}
 
public getAccessToken(): Thenable<string | undefined> {
public getAccessToken(): Thenable<string | undefined> {
return this.readSecret(StoreKey.AccessTokenKey);
return this.readSecret(SecretStoreKey.AccessTokenKey);
}
}
public getRefreshToken(): Thenable<string | undefined> {
public getRefreshToken(): Thenable<string | undefined> {
return this.readSecret(StoreKey.RefreshTokenKey);
return this.readSecret(SecretStoreKey.RefreshTokenKey);
}
}
public setAccessToken(accessToken: string): Thenable<void> {
public setAccessToken(accessToken: string): Thenable<void> {
@@ -55,7 +65,7 @@ export default class ExtensionStore {
@@ -55,7 +65,7 @@ export default class ExtensionStore {
log('Attempt to store undefined access token');
log('Attempt to store undefined access token');
return Promise.resolve();
return Promise.resolve();
}
}
return this.storeSecret(StoreKey.AccessTokenKey, accessToken);
return this.storeSecret(SecretStoreKey.AccessTokenKey, accessToken);
}
}
public setRefreshToken(refreshToken: string): Thenable<void> {
public setRefreshToken(refreshToken: string): Thenable<void> {
@@ -63,20 +73,23 @@ export default class ExtensionStore {
@@ -63,20 +73,23 @@ export default class ExtensionStore {
log('Attempt to store undefined refresh token');
log('Attempt to store undefined refresh token');
return Promise.resolve();
return Promise.resolve();
}
}
return this.storeSecret(StoreKey.RefreshTokenKey, refreshToken);
return this.storeSecret(SecretStoreKey.RefreshTokenKey, refreshToken);
}
}
private storeSecret(key: StoreKey, value: string): Thenable<void> {
private readSecret(key: SecretStoreKey): Thenable<string | undefined> {
return this.secretStorage.store(key, value);
return this.secretStorage.get(key);
}
}
private readSecret(key: StoreKey): Thenable<string | undefined> {
private storeSecret(key: SecretStoreKey, value: string): Thenable<void> {
return this.secretStorage.get(key);
return this.secretStorage.store(key, value);
}
}
}
}
enum StoreKey {
enum SecretStoreKey {
MissionWorkdirKey = 'mission-workdir-key',
AccessTokenKey = 'access-token-key',
AccessTokenKey = 'access-token-key',
RefreshTokenKey = 'refresh-token-key',
RefreshTokenKey = 'refresh-token-key',
}
}
 
 
enum GlobalStoreKey {
 
MissionWorkdirKey = 'mission-workdir-key',
 
}
Loading