import { unwrapApiResponse } from '@/utils/api-response' import { request } from '@/utils/request' import type { ApiResponse, SignatureUploadInput, SignatureUploadResponse, TokenConsumeRequest, TokenConsumeResponse, } from './types' export function consumeSigningToken(payload: TokenConsumeRequest): Promise { return request .post>('/v1/sign-deliveries/token/consume', payload, { headers: { 'Idempotency-Key': createIdempotencyKey(), }, }) .then(unwrapApiResponse) } function createIdempotencyKey(value?: string) { if (value) { return value } if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') { return `patient-h5-${crypto.randomUUID()}` } return `patient-h5-${Date.now()}-${Math.random().toString(36).slice(2)}` } export function uploadSigningSignature( payload: SignatureUploadInput, ): Promise { const formData = new FormData() formData.append('file', payload.file, 'signature.png') formData.append('metadata', payload.metadata) return request .post>( `/v1/sign-deliveries/${encodeURIComponent(payload.taskId)}/signature`, formData, { params: { deliveryId: payload.deliveryId, uploadToken: payload.uploadToken, }, headers: { 'Idempotency-Key': createIdempotencyKey(payload.idempotencyKey), }, }, ) .then(unwrapApiResponse) }