para-bridge-demo
Version:
a bridge api for js-ios/andriod rest
62 lines (54 loc) • 1.58 kB
text/typescript
import { BridgePlugin } from '../bridge';
interface IUserLoginParam {
mobile?: string;
// 打开样式,默认"1":登录对话框;
openType?: '1';
// 是否强制登陆显示登录框, 默认true.
forceLogin?: 'true' | 'false';
}
interface IUserLoginResult {
// 0:标识已登陆成功, 1:未登录(登录失败,取消等)
status: '0' | '1';
userInfo?: {
// 姓名
realName: string;
// 上次登录名
lastLoginTime?: string;
// 性别
gender: string;
// 昵称
nickName: string;
// 头像
photo: string;
// userId
userId: string;
};
}
export class UserLogin<K> extends BridgePlugin<IUserLoginParam, K> {
protected get ntvPluginName() {
return '_ntv_user_user_login';
}
protected get availableMinVersion() {
return '1.0.0';
}
protected bridgeExecChrome(pluginName?: string | undefined): void {
// 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性.
throw new Error('UserLogin() 未针对当前环境实现');
}
}
/**
* 强制用户登陆,如果用户已经登陆则返回用户信息
*/
export const forceLogin = () => {
return new UserLogin<IUserLoginResult>({ forceLogin: 'true' }).invokeOnce().then(result => {
return result.cbData;
});
}
/**
* 尝试用户登陆,如果用户已经登陆则返回用户信息,如果未登录则返回空的用户数据
*/
export const tryLogin = () => {
return new UserLogin<IUserLoginResult>({ forceLogin: 'false' }).invokeOnce().then(result => {
return result.cbData;
});
}