Files

53 lines
1.6 KiB
JavaScript

import {
normalizeAppProfile,
normalizeProfileUpdatePayload,
normalizeRecommendationPreference
} from './profile-contract.js'
import { requestStrict } from './request-client.js'
export const profileApi = {
async getProfile(requestOptions = {}) {
const profile = await requestStrict({
url: '/genealogy/app/auth/profile',
method: 'GET'
}, {
requestController: requestOptions.requestController ?? null
})
return normalizeAppProfile(profile)
},
async updateProfile(payload, requestOptions = {}) {
const profileChanges = normalizeProfileUpdatePayload(payload)
const profile = await requestStrict({
url: '/genealogy/app/auth/profile',
method: 'PUT',
data: profileChanges
}, {
requestController: requestOptions.requestController ?? null
})
return normalizeAppProfile(profile)
},
async getRecommendationPreference(requestOptions = {}) {
const preference = await requestStrict({
url: '/genealogy/app/recommendation-preference',
method: 'GET'
}, {
requestController: requestOptions.requestController ?? null
})
return normalizeRecommendationPreference(preference)
},
async updateRecommendationPreference(enabled, requestOptions = {}) {
if (typeof enabled !== 'boolean') throw new TypeError('个性化推荐开关必须是布尔值')
const preference = await requestStrict({
url: '/genealogy/app/recommendation-preference',
method: 'PUT',
data: { enabled }
}, {
requestController: requestOptions.requestController ?? null
})
return normalizeRecommendationPreference(preference)
}
}