import { StrUtil } from '@pura/harmony-utils';
import { UserEntity } from '../entity/UserEntity';
import { PrefUtils } from '../utils/PrefUtils';
import { ConfigManager } from './UserConfigManager';
import { JSON } from '@kit.ArkTS';
import { plainToInstance } from 'class-transformer';

class LoginGlobalManager {

  private userInfo?: UserEntity;

  /**
   * 保存当前用户基本信息
   * @param userEntity
   */
  setUserInfo(userEntity: UserEntity) {
    this.userInfo = userEntity;
  }

  /**
   * 获取当前用户基本信息
   * @returns
   */
  getUserInfo(): UserEntity | undefined {
    return this.userInfo;
  }

  /**
   * 保存上一个用户基本信息
   * @param userEntity
   */
  saveLastUserInfo(userEntity: UserEntity) {
    PrefUtils.put('last_userinfo', JSON.stringify(userEntity));
  }

  /**
   * 获取上一个用户基本信息
   * @returns
   */
  getLastUserInfo(): UserEntity | null {
    const str = PrefUtils.getString('last_userinfo');
    if (StrUtil.isNotEmpty(str)) {
      const userEntity = plainToInstance(UserEntity, JSON.parse(str));
      return userEntity;
    }
    return null;
  }

  /**
   * 保存上次登录方式
   * @param userEntity
   */
  saveLastLoginType(type: string) {
    PrefUtils.put('last_login_type', type);
  }

  /**
   * 获取上次登录方式
   * @returns
   */
  getLastLoginType(): string {
    return PrefUtils.getString('last_login_type');
  }

  /**
   * 用户token
   * @param token
   */
  saveToken(token: string) {
    PrefUtils.put('x-token', token);
  }

  getToken(): string {
    return PrefUtils.getString('x-token');
  }

  /**
   * 是否已登录
   * @returns
   */
  isLogin(): boolean {
    return !ConfigManager.isTemp();
  }

  logout() {
    PrefUtils.remove('x-role');
    PrefUtils.remove('x-token');
    PrefUtils.remove('userConfig')
  }
}

export const LoginManager = new LoginGlobalManager();