import type { ActivityPosterItem, ActivityPosterSelection } from '@dukang/shared-types'; import { request } from './api'; export async function listActivityPosters() { const data = await request('PARTNER_H5', '/partner/activity-posters', { silent: true, }); return Array.isArray(data) ? data : []; } export async function fetchAssocQrcodeImage(): Promise { const token = localStorage.getItem('accessToken'); const res = await fetch('/api/v1/partner/assoc/qrcode', { headers: { Authorization: token ? `Bearer ${token}` : '', 'X-Client-App': 'PARTNER_H5', }, }); if (!res.ok) throw new Error('下载二维码失败'); return res.blob(); } export async function fetchActivityPosterImage(id: string): Promise { const token = localStorage.getItem('accessToken'); const res = await fetch(`/api/v1/partner/activity-posters/${id}/image`, { headers: { Authorization: token ? `Bearer ${token}` : '', 'X-Client-App': 'PARTNER_H5', }, }); if (!res.ok) { const json = await res.json().catch(() => null) as { message?: string } | null; throw new Error(json?.message || '生成活动图失败'); } return res.blob(); } export function downloadBlob(blob: Blob, fileName: string) { const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = fileName; a.click(); URL.revokeObjectURL(url); } export async function getActivityPosterSelection() { return request('PARTNER_H5', '/partner/activity-posters/selection', { silent: true, }); } export async function saveActivityPosterSelection(posterId: string | null) { return request('PARTNER_H5', '/partner/activity-posters/selection', { method: 'PUT', body: JSON.stringify({ posterId }), silent: true, }); } export async function copyActivityCopy(text: string) { const value = text.trim(); if (!value) throw new Error('暂无文案'); try { await navigator.clipboard.writeText(value); } catch { const ta = document.createElement('textarea'); ta.value = value; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); } }