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

View File

@@ -43,8 +43,8 @@ export class DataCenter {
};
};
// TODO: switch different provider
dc.registerProvider(new LocalProvider(getInitParams()));
dc.registerProvider(new AffineProvider(getInitParams()));
await dc.registerProvider(new LocalProvider(getInitParams()));
await dc.registerProvider(new AffineProvider(getInitParams()));
for (const provider of dc.providerMap.values()) {
await provider.loadWorkspaces();
@@ -57,12 +57,12 @@ export class DataCenter {
* Register provider.
* We will automatically set the first provider to default provider.
*/
registerProvider(provider: BaseProvider) {
async registerProvider(provider: BaseProvider) {
if (!this._mainProvider) {
this._mainProvider = provider;
}
provider.init();
await provider.init();
this.providerMap.set(provider.id, provider);
}

View File

@@ -16,7 +16,7 @@ import { getApis } from './apis/index.js';
import type { Apis, WorkspaceDetail, Callback } from './apis';
import { setDefaultAvatar } from '../utils.js';
import { MessageCode } from '../../message';
import { blob } from 'stream/consumers';
import { token } from './apis/token.js';
export interface AffineProviderConstructorParams
extends ProviderConstructorParams {
@@ -213,6 +213,7 @@ export class AffineProvider extends BaseProvider {
public override async getUserInfo(): Promise<User | undefined> {
const user = this._apis.token.user;
await this.init;
return user
? {
id: user.id,
@@ -359,4 +360,9 @@ export class AffineProvider extends BaseProvider {
});
return to;
}
public override async logout(): Promise<void> {
token.clear();
storage.removeItem('token');
}
}

View File

@@ -140,6 +140,10 @@ class Token {
this.callbacks.splice(index, 1);
}
}
clear() {
this._setToken();
}
}
export const token = new Token();