feat: add logout

This commit is contained in:
MingLiang Wang
2023-01-10 22:44:49 +08:00
parent ad5e7cb2f4
commit eab86dffb8
3 changed files with 15 additions and 5 deletions
+4 -4
View File
@@ -43,8 +43,8 @@ export class DataCenter {
}; };
}; };
// TODO: switch different provider // TODO: switch different provider
dc.registerProvider(new LocalProvider(getInitParams())); await dc.registerProvider(new LocalProvider(getInitParams()));
dc.registerProvider(new AffineProvider(getInitParams())); await dc.registerProvider(new AffineProvider(getInitParams()));
for (const provider of dc.providerMap.values()) { for (const provider of dc.providerMap.values()) {
await provider.loadWorkspaces(); await provider.loadWorkspaces();
@@ -57,12 +57,12 @@ export class DataCenter {
* Register provider. * Register provider.
* We will automatically set the first provider to default provider. * We will automatically set the first provider to default provider.
*/ */
registerProvider(provider: BaseProvider) { async registerProvider(provider: BaseProvider) {
if (!this._mainProvider) { if (!this._mainProvider) {
this._mainProvider = provider; this._mainProvider = provider;
} }
provider.init(); await provider.init();
this.providerMap.set(provider.id, provider); this.providerMap.set(provider.id, provider);
} }
@@ -16,7 +16,7 @@ import { getApis } from './apis/index.js';
import type { Apis, WorkspaceDetail, Callback } from './apis'; import type { Apis, WorkspaceDetail, Callback } from './apis';
import { setDefaultAvatar } from '../utils.js'; import { setDefaultAvatar } from '../utils.js';
import { MessageCode } from '../../message'; import { MessageCode } from '../../message';
import { blob } from 'stream/consumers'; import { token } from './apis/token.js';
export interface AffineProviderConstructorParams export interface AffineProviderConstructorParams
extends ProviderConstructorParams { extends ProviderConstructorParams {
@@ -213,6 +213,7 @@ export class AffineProvider extends BaseProvider {
public override async getUserInfo(): Promise<User | undefined> { public override async getUserInfo(): Promise<User | undefined> {
const user = this._apis.token.user; const user = this._apis.token.user;
await this.init;
return user return user
? { ? {
id: user.id, id: user.id,
@@ -359,4 +360,9 @@ export class AffineProvider extends BaseProvider {
}); });
return to; return to;
} }
public override async logout(): Promise<void> {
token.clear();
storage.removeItem('token');
}
} }
@@ -140,6 +140,10 @@ class Token {
this.callbacks.splice(index, 1); this.callbacks.splice(index, 1);
} }
} }
clear() {
this._setToken();
}
} }
export const token = new Token(); export const token = new Token();