import { GET_SETTING, UPDATE_SETTING } from "./constant"; import defaultCover from "@/assets/pic.jpg"; import { params } from "@/env"; import axios from "./instance"; import { SettingResourceType } from "./setting-resource"; type ServeSetting = { settingsId?: string; pose?: string; cover?: string; back?: string; backType?: SettingResourceType; mapOpen?: boolean; openCompass?: boolean }; export type Setting = { id?: string; pose?: { position: SceneLocalPos; target: SceneLocalPos; }; cover: string; back: string; openCompass: boolean backType: SettingResourceType; mapOpen: boolean; }; const toLocal = (serviceSetting: ServeSetting): Setting => ({ ...serviceSetting, id: serviceSetting.settingsId, pose: serviceSetting.pose && JSON.parse(serviceSetting.pose), cover: serviceSetting.cover || defaultCover, back: serviceSetting.back || "none", backType: serviceSetting.backType || SettingResourceType.icon, mapOpen: false, openCompass: serviceSetting.openCompass }); const toService = (setting: Setting): ServeSetting => ({ ...setting, settingsId: setting.id, pose: setting.pose && JSON.stringify(setting.pose), cover: setting.cover, back: setting.back, }); export const fetchSetting = async () => { const data = await axios.get(GET_SETTING, { params: { caseId: params.caseId }, }); return toLocal(data[0] || {}); }; export const updateSetting = async (setting: Setting) => { await axios.post(UPDATE_SETTING, { caseId: params.caseId, ...toService(setting), }); };