@soundsright/user
Version:
soundsright user sdk
130 lines (129 loc) • 4.21 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import Auth, { ThirdPlatformAuthType, WalletAuthOptions } from '@soundsright/auth';
import { BaseService } from '@soundsright/service';
export * from './types';
export declare const UserEvent: {
TokenExpired: string;
LoginSuccess: string;
Logout: string;
UserUpdate: string;
};
export default class User extends EventEmitter {
private auth;
private service;
accessToken: string;
refreshToken: string;
private refreshing;
constructor(auth: Auth, service: BaseService);
private authLogin;
/**
* 通过第三方平台登录
* @param type - 第三方登录类型:'Google' | 'Facebook' | 'Twitter'
* @returns 用户信息
*/
loginByThirdPlatform(type: ThirdPlatformAuthType): Promise<any>;
/**
* 通过钱包连接和签名登录
* @param options - 钱包授权的选项
* ```ts
* {
* connectType?: ConnectType枚举或"MetaMask"|"WalletConnect",
* signMessage?: 签名消息
* }
* @returns 用户信息
* ```
*/
loginByWallet(options?: WalletAuthOptions): Promise<any>;
/**
* 通过cookie记录的token进行登录
* @returns 用户信息
*/
loginByCookie(): Promise<any>;
private updateToken;
private removeToken;
/**
* 设置是否记住用户登录状态
* @param remember - 是否记住用户登录状态
* @param days - 记住的天数,默认为7天
*/
setRememberState(remember: boolean, days?: number): void;
/**
* 查询记住用户状态的天数
* @returns number,返回记住的天数。如果为0,则仅在Session期有效。
*/
getRememberDays(): number;
/**
* 查询是否记住用户的状态
* @returns boolean
*/
getRememberState(): boolean;
private _refresh;
/**
* 刷新用户Token
* @returns
* ```ts
* { accessToken: string, refreshToken: string }
* ```
*/
refresh(): Promise<any>;
/**
* 获取当前登录的用户基本信息
* @returns 包括 { UserCode, NickName, Picture, Email, Phone, WalletAddr, NewUser }
*/
getCurrentUser(): any;
/**
* 用户退出
*/
logout(): Promise<void>;
/**
* 查询用户是否登录
* @returns boolean
*/
isLogin(): boolean;
/**
* 查询用户是否已经绑定钱包
* @returns boolean
*/
isWalletBound(): boolean;
private authBind;
/**
* 绑定第三方平台账号
* @param type - 第三方登录类型:'Google' | 'Facebook' | 'Twitter'
* @returns 用户信息
*/
bindThirdPlatform(type: ThirdPlatformAuthType): Promise<any>;
/**
* 通过钱包连接和签名绑定钱包
* @param options - 钱包授权的选项
* ```ts
* {
* connectType?: ConnectType枚举或"MetaMask"|"WalletConnect",
* signMessage?: 签名消息
* }
* @returns 用户信息
* ```
*/
bindWallet(options?: WalletAuthOptions): Promise<any>;
/**
* 检查用户是否具备执行合约的条件。若不符合条件,则抛出相应的异常 - 该方法应作为执行合约的前置检测方法(模板方法)
* Error类型有:
* - UnauthorizedError,用户未登录,需要弹出登录窗口
* - WalletNotBoundError,用户未绑定钱包,需要弹出绑定钱包
* - WalletNotConnectedError,用户未连接钱包,需要弹出钱包连接
* - WalletNotMatchError,用户已连接的钱包地址与绑定的钱包地址不匹配
* 可以使用try catch 来处理相应的错误,可以通过error.name 来方便的判定类型。
* 在项目中结合界面操作逻辑,对该方法做进一步封装
* ```ts
* try {
* sdk.user.checkUserWeb3Condition();
* } catch (e) {
* if(e.name === 'UnauthorizedError') {
* // do something
* }
* ...
* }
* ```
*/
checkUserWeb3Condition(): void;
}