UNPKG

@soundsright/user

Version:

soundsright user sdk

130 lines (129 loc) 4.21 kB
/// <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; }