export interface MiniLoginResponse {
  token: string
  mpUserId: number
  userType: string
  deptId: number | null
  deptName?: string | null
  deptLeader?: boolean | null
  avatarUrl: string | null
  companyName?: string | null
  displayName: string
}

export interface MiniAuthMeResponse {
  mpUserId: number
  userType: string
  deptId: number | null
  deptName?: string | null
  deptLeaderFlag: boolean
  nickName: string
  avatarUrl: string | null
  mobile: string
  gender?: string | null
  companyName?: string | null
}

export interface MiniUserProfile {
  mpUserId: number
  userType: string
  deptId: number | null
  deptName: string | null
  deptLeaderFlag: boolean
  avatarUrl: string | null
  displayName: string
  mobile: string | null
  gender: string | null
  companyName: string | null
}

export interface MiniProfileUpdateRequest {
  nickName: string
  gender?: string | null
  companyName?: string | null
  avatarUrl?: string | null
}

export function normalizeProfileDisplayName(value?: string | null) {
  return (value || '').trim()
}

export function normalizeLoginProfile(data: MiniLoginResponse): MiniUserProfile {
  return {
    mpUserId: data.mpUserId,
    userType: data.userType,
    deptId: data.deptId ?? null,
    deptName: data.deptName ?? null,
    deptLeaderFlag: false,
    avatarUrl: data.avatarUrl ?? null,
    displayName: normalizeProfileDisplayName(data.displayName),
    mobile: null,
    gender: null,
    companyName: data.companyName ?? null,
  }
}

export function normalizeMeProfile(data: MiniAuthMeResponse): MiniUserProfile {
  return {
    mpUserId: data.mpUserId,
    userType: data.userType,
    deptId: data.deptId ?? null,
    deptName: data.deptName ?? null,
    deptLeaderFlag: false,
    avatarUrl: data.avatarUrl ?? null,
    displayName: normalizeProfileDisplayName(data.nickName),
    mobile: data.mobile ?? null,
    gender: data.gender ?? null,
    companyName: data.companyName ?? null,
  }
}
