53 lines
1.6 KiB
JavaScript
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)
|
|
}
|
|
}
|