locationSupport.ts 1.3 KB
/**
 * 《美国版App登录接口说明》接口 6:GET /api/app/location-support/support
 * App 只读;需登录。
 */
import { usAppApiRequest } from '../utils/usAppApiRequest'
import { fetchWithOfflineCache } from '../utils/sqliteSync'

export type LocationSupportGetOutputDto = {
  id?: string | null
  supportPhone?: string | null
  supportEmail?: string | null
}

function normalizeSupportContact(raw: unknown): LocationSupportGetOutputDto | null {
  if (raw === null || raw === undefined) return null
  if (typeof raw !== 'object' || Array.isArray(raw)) return null
  const o = raw as LocationSupportGetOutputDto
  const phone = String(o.supportPhone ?? '').trim()
  const email = String(o.supportEmail ?? '').trim()
  if (!phone && !email) return null
  return {
    id: o.id != null ? String(o.id) : null,
    supportPhone: phone || null,
    supportEmail: email || null,
  }
}

/** 在线缓存至 SQLite,离线可读 */
export async function fetchGlobalSupportContact(): Promise<LocationSupportGetOutputDto | null> {
  return fetchWithOfflineCache('support', 'global-contact', async () => {
    const raw = await usAppApiRequest<LocationSupportGetOutputDto | null>({
      path: '/api/app/location-support/support',
      method: 'GET',
      auth: true,
    })
    return normalizeSupportContact(raw)
  })
}