31 lines
801 B
Plaintext
31 lines
801 B
Plaintext
import { SessionManager } from 'common';
|
||
import { mockDelay } from './MockUtil';
|
||
|
||
/**
|
||
* 会话数据仓库契约:ViewModel 只依赖此契约。
|
||
*/
|
||
export abstract class SessionRepository {
|
||
abstract isLoggedIn(): boolean;
|
||
abstract login(): Promise<void>;
|
||
abstract logout(): void;
|
||
}
|
||
|
||
/**
|
||
* 实现:封装 common 的 SessionManager(持久化 SessionStore)。
|
||
* M1 为模拟登录(写死 token);M2 起接真实微信/手机号登录。
|
||
*/
|
||
export class SessionRepositoryImpl extends SessionRepository {
|
||
isLoggedIn(): boolean {
|
||
return SessionManager.get().isLoggedIn;
|
||
}
|
||
|
||
async login(): Promise<void> {
|
||
await mockDelay(300);
|
||
SessionManager.get().setSession('mock-token-0001', '', 'u-1001', '张三');
|
||
}
|
||
|
||
logout(): void {
|
||
SessionManager.get().clear();
|
||
}
|
||
}
|