@@ -271,12 +271,21 @@ export class AuthStorage {
|
||||
}
|
||||
}
|
||||
|
||||
private persistProviderChange(provider: string, credential: AuthCredential | undefined): void {
|
||||
private persistProviderChange(provider: string, credential: AuthCredential | undefined): AuthStorageData {
|
||||
if (this.loadError) {
|
||||
return;
|
||||
this.reload();
|
||||
}
|
||||
|
||||
if (this.loadError) {
|
||||
const error = new Error(
|
||||
`Cannot update auth storage because it could not be loaded: ${this.loadError.message}`,
|
||||
);
|
||||
this.recordError(error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
try {
|
||||
let persistedData: AuthStorageData = {};
|
||||
this.storage.withLock((current) => {
|
||||
const currentData = this.parseStorageData(current);
|
||||
const merged: AuthStorageData = { ...currentData };
|
||||
@@ -285,10 +294,14 @@ export class AuthStorage {
|
||||
} else {
|
||||
delete merged[provider];
|
||||
}
|
||||
persistedData = merged;
|
||||
return { result: undefined, next: JSON.stringify(merged, null, 2) };
|
||||
});
|
||||
this.loadError = null;
|
||||
return persistedData;
|
||||
} catch (error) {
|
||||
this.recordError(error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,16 +324,14 @@ export class AuthStorage {
|
||||
* Set credential for a provider.
|
||||
*/
|
||||
set(provider: string, credential: AuthCredential): void {
|
||||
this.data[provider] = credential;
|
||||
this.persistProviderChange(provider, credential);
|
||||
this.data = this.persistProviderChange(provider, credential);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove credential for a provider.
|
||||
*/
|
||||
remove(provider: string): void {
|
||||
delete this.data[provider];
|
||||
this.persistProviderChange(provider, undefined);
|
||||
this.data = this.persistProviderChange(provider, undefined);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user