test: add test case for affine

This commit is contained in:
alt0 committed 2023-01-09 18:53:15 +08:00
1 parent 5095e2f27d
commit 9316bb4222
6 files changed
+112 -35

No files matched your search

@@ -1,18 +1,16 @@
import { BaseProvider } from '../base';
import { BaseProvider } from '../base.js';
import type { ProviderConstructorParams } from '../base';
import { User, Workspace as WS, WorkspaceMeta } from '../../types';
import type { User, Workspace as WS, WorkspaceMeta } from '../../types';
import { Workspace } from '@blocksuite/store';
import { BlockSchema } from '@blocksuite/blocks/models';
import { applyUpdate } from 'yjs';
import { token, Callback } from './apis';
import { varStorage as storage } from 'lib0/storage';
import { storage } from './storage.js';
import assert from 'assert';
import { getAuthorizer } from './apis/token';
import { WebsocketProvider } from './sync';
import { WebsocketProvider } from './sync.js';
// import { IndexedDBProvider } from '../local/indexeddb';
import { getDefaultHeadImgBlob } from '../../utils';
import { getDefaultHeadImgBlob } from '../../utils/index.js';
import { getApis } from './apis/index.js';
import type { Apis, WorkspaceDetail } from './apis';
import type { Apis, WorkspaceDetail, Callback } from './apis';
export interface AffineProviderConstructorParams
extends ProviderConstructorParams {
@@ -23,8 +21,6 @@ export class AffineProvider extends BaseProvider {
public id = 'affine';
private _workspacesCache: Map<string, Workspace> = new Map();
private _onTokenRefresh?: Callback = undefined;
private readonly _authorizer = getAuthorizer();
private _user: User | undefined = undefined;
private _wsMap: Map<string, WebsocketProvider> = new Map();
private _apis: Apis;
// private _idbMap: Map<string, IndexedDBProvider> = new Map();
@@ -36,29 +32,29 @@ export class AffineProvider extends BaseProvider {
override async init() {
this._onTokenRefresh = () => {
if (token.refresh) {
storage.setItem('token', token.refresh);
if (this._apis.token.refresh) {
storage.setItem('token', this._apis.token.refresh);
}
};
token.onChange(this._onTokenRefresh);
this._apis.token.onChange(this._onTokenRefresh);
// initial login token
if (token.isExpired) {
if (this._apis.token.isExpired) {
try {
const refreshToken = storage.getItem('token');
await token.refreshToken(refreshToken);
await this._apis.token.refreshToken(refreshToken);
if (token.refresh) {
storage.set('token', token.refresh);
if (this._apis.token.refresh) {
storage.set('token', this._apis.token.refresh);
}
assert(token.isLogin);
assert(this._apis.token.isLogin);
} catch (_) {
// this._logger('Authorization failed, fallback to local mode');
}
} else {
storage.setItem('token', token.refresh);
storage.setItem('token', this._apis.token.refresh);
}
}
@@ -91,7 +87,7 @@ export class AffineProvider extends BaseProvider {
}
override async loadWorkspaces() {
if (!token.isLogin) {
if (!this._apis.token.isLogin) {
return [];
}
const workspacesList = await this._apis.getWorkspaces();
@@ -171,24 +167,26 @@ export class AffineProvider extends BaseProvider {
override async auth() {
const refreshToken = await storage.getItem('token');
if (refreshToken) {
await token.refreshToken(refreshToken);
if (token.isLogin && !token.isExpired) {
await this._apis.token.refreshToken(refreshToken);
if (this._apis.token.isLogin && !this._apis.token.isExpired) {
// login success
return;
}
}
const user = await this._authorizer[0]?.();
const user = await this._apis.signInWithGoogle?.();
assert(user);
this._user = {
id: user.id,
name: user.name,
avatar: user.avatar_url,
email: user.email,
};
}
public override async getUserInfo(): Promise<User | undefined> {
return this._user;
const user = this._apis.token.user;
return user
? {
id: user.id,
name: user.name,
avatar: user.avatar_url,
email: user.email,
}
: undefined;
}
public override async deleteWorkspace(id: string): Promise<void> {
@@ -265,7 +263,7 @@ export class AffineProvider extends BaseProvider {
owner: undefined,
isLocal: true,
memberCount: 1,
provider: 'local',
provider: 'affine',
};
if (!meta.avatar) {