import { useApi } from '@/composables/useApi' const JSON_HEADERS = { 'Content-Type': 'application/json' } export function useProfile() { const { request, requestFile } = useApi() function updateDisplayName(displayName: string) { return request<{ display_name?: string | null }>('/v1/user/me', { method: 'PATCH', headers: JSON_HEADERS, body: JSON.stringify({ display_name: displayName }), }) } function sendPasswordReset(email: string) { return request('/v1/auth/password-reset', { method: 'POST', headers: JSON_HEADERS, body: JSON.stringify({ email }), }) } function requestEmailChange(newEmail: string, currentPassword: string) { return request<{ pending_email: string }>('/v1/auth/email/change', { method: 'POST', headers: JSON_HEADERS, body: JSON.stringify({ new_email: newEmail, current_password: currentPassword }), }) } function resendEmailChange() { return request<{ pending_email: string }>('/v1/auth/email/resend', { method: 'POST' }) } function cancelEmailChange() { return request('/v1/auth/email/change', { method: 'DELETE' }) } function confirmEmailChange(code: string) { return request<{ email: string }>('/v1/auth/email/confirm', { method: 'POST', headers: JSON_HEADERS, body: JSON.stringify({ code }), onUnauthorized: 'passthrough', onForbidden: 'passthrough', }) } function downloadMyData() { return requestFile('/v1/user/me/export') } function deleteAccount(currentPassword: string, confirmation: string) { return request('/v1/user/me', { method: 'DELETE', headers: JSON_HEADERS, body: JSON.stringify({ current_password: currentPassword, confirmation }), onUnauthorized: 'passthrough', }) } return { deleteAccount, downloadMyData, updateDisplayName, sendPasswordReset, requestEmailChange, resendEmailChange, cancelEmailChange, confirmEmailChange, } }