import ArrayList from "@ohos.util.ArrayList";

/**
 * UserProfile 的专属转换器
 */
export const UserProfileMapper = (raw: Record<string, Object>): UserProfile => {
  return {
    token: (raw['token'] as string) ?? "",
    temp: (raw['temp'] as boolean) ?? false,
    name: (raw['name'] as string) ?? "",
    user_id: (raw['user_id'] as string) ?? "",
    config: ConfigMapper(raw['config'] as Record<string, Object>)
  };
};

/**
 * 配置转换器
 */
export const ConfigMapper = (raw: Record<string, Object>): ConfigEntity => {
  return {
    versionEntity: (raw['client.version.upgrade'] as VersionEntity) ?? null,
    uniVersionList: (raw['client.uni.version.upgrade'] as UniVersionEntity[]) ?? [],
    homeIconEntity: (raw['client.icon.uni.home'] as UniIconEntity[]) ?? [],
    wgtPassword: (raw['client.wgt.password'] as string) ?? null,
    isUniMpOpen: (raw['client.uni.open'] as boolean) ?? false
  };
};

// 用户配置（Profile）
export interface UserProfile {
  token: string;
  temp: boolean;
  name: string;    // 显示的文本内容
  user_id: string;
  config: ConfigEntity; // 可选的图标资源
}

// 用户配置（Config）
export interface ConfigEntity {
  versionEntity: VersionEntity | null;
  uniVersionList: UniVersionEntity[];
  homeIconEntity: UniIconEntity[];
  wgtPassword: string | null;
  isUniMpOpen: boolean | null;
}

// 用户配置（App版本）
export interface VersionEntity {
  description: string | null;
  force: boolean;
  last_version_force: string | null;
  title: string | null;
  url: string | null;
  app_size: string | null;
  version: string | null;
}

// 用户配置（UniMp版本）
export interface UniVersionEntity {
  version: string | null;
  url: string | null;
  last_version_force: string | null;
  force: boolean;
  title: string | null;
  description: string | null;
  unimp_id: string | null;
  unimp_type: string | null;
  icon: string | null;
}

// 用户配置（UniMp指定路径：Path）
export interface UniIconEntity {
  icon: string | null;
  text: string | null;
  url: string | null;
  type: string | null;
  enable: boolean;
}

// 验证码信息
export interface CaptchaProfile {
  timestamp: string;
}

// 登录信息
export interface LoginProfile {
  user_id: string | null;
  name: string | null;
  avater: string | null;
  token: string | null;
}


// 用户信息（字段由/api/user 与 /api/user/account共同提供）
export interface UserInfo {
  alipayid: string | null;
  app_id: string | null;
  appleid: string | null;
  avater: string | null;
  balance: string | null;
  client_cid: string | null;
  coupon_count: string | null;
  ip_area: string | null;
  ip_area_name: string | null;
  name: string | null;
  phone: string | null;
  role: string | null;
  temp: boolean | true;
  unionid: string | null;
  user_id: string | null;
  vip: number | 0;
  vip_expire: string | null;
  vip_expire_time: string | null;
  vip_name: string | null;
  weixinAppId: string | null;
  weixinAppIdType: string | null;
  weixinAppOpenId: string | null;
  weixinOpenId: string | null;
  //以下字段，目前由/api/user/account提供
  vip_type: number | 0;
  create_time: string | null;
  bind: ArrayList<string> | null;
}

// 支付宝授权登录参数
export interface AlipayProfile {
  param: string | null;
}

// UniMp小程序微信支付参数
export interface TradeData {
  weixinMpOriId?: string;
  outTradeNo?: string;
}

/**
 * {
 *       "icon": "https://cdn.batiao8.com/flaunt/uni_mp/icon/other/ticket.png",
 *       "text": "机票",
 *       "url": "pages/other/tickets-app/index",
 *       "type": "alipay",
 *       "enable": true
 *     }
 */
// 小程序（指定Page）
export interface UniMpItem {
  id: string;
  text: string;     // 显示的文本内容
  icon: Resource;   // 可选的图标资源
  url: string;      // 跳转路径
  type: string;     // 类型
  enable: boolean;  // 是否可用
}