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;
  });
}

