setting.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { GET_SETTING, UPDATE_SETTING } from "./constant";
  2. import defaultCover from "@/assets/pic.jpg";
  3. import { params } from "@/env";
  4. import axios from "./instance";
  5. import { SettingResourceType } from "./setting-resource";
  6. type ServeSetting = {
  7. settingsId?: string;
  8. pose?: string;
  9. cover?: string;
  10. back?: string;
  11. backType?: SettingResourceType;
  12. mapOpen?: boolean;
  13. openCompass?: boolean
  14. };
  15. export type Setting = {
  16. id?: string;
  17. pose?: {
  18. position: SceneLocalPos;
  19. target: SceneLocalPos;
  20. };
  21. cover: string;
  22. back: string;
  23. openCompass: boolean
  24. backType: SettingResourceType;
  25. mapOpen: boolean;
  26. };
  27. const toLocal = (serviceSetting: ServeSetting): Setting => ({
  28. ...serviceSetting,
  29. id: serviceSetting.settingsId,
  30. pose: serviceSetting.pose && JSON.parse(serviceSetting.pose),
  31. cover: serviceSetting.cover || defaultCover,
  32. back: serviceSetting.back || "none",
  33. backType: serviceSetting.backType || SettingResourceType.icon,
  34. mapOpen: false,
  35. openCompass: serviceSetting.openCompass
  36. });
  37. const toService = (setting: Setting): ServeSetting => ({
  38. ...setting,
  39. settingsId: setting.id,
  40. pose: setting.pose && JSON.stringify(setting.pose),
  41. cover: setting.cover,
  42. back: setting.back,
  43. });
  44. export const fetchSetting = async () => {
  45. const data = await axios.get<ServeSetting[]>(GET_SETTING, {
  46. params: { caseId: params.caseId },
  47. });
  48. return toLocal(data[0] || {});
  49. };
  50. export const updateSetting = async (setting: Setting) => {
  51. await axios.post(UPDATE_SETTING, {
  52. caseId: params.caseId,
  53. ...toService(setting),
  54. });
  55. };