74 lines
1.9 KiB
TypeScript
74 lines
1.9 KiB
TypeScript
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<void>('/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<void>('/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,
|
|
}
|
|
}
|