useUserApi.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import { wxLogin, getUserInfo, updateUserInfo, uploadAvatar, logout } from '../api/user.js';
  2. import { ref } from 'vue';
  3. export function useUserApi() {
  4. const loading = ref(false);
  5. const error = ref(null);
  6. // 微信登录
  7. const login = async (code, userInfo = {}) => {
  8. loading.value = true;
  9. error.value = null;
  10. try {
  11. const result = await wxLogin(code, userInfo);
  12. loading.value = false;
  13. return result;
  14. } catch (err) {
  15. loading.value = false;
  16. error.value = err;
  17. throw err;
  18. }
  19. };
  20. // 获取用户信息
  21. const fetchUserInfo = async () => {
  22. loading.value = true;
  23. error.value = null;
  24. try {
  25. const result = await getUserInfo();
  26. loading.value = false;
  27. return result;
  28. } catch (err) {
  29. loading.value = false;
  30. error.value = err;
  31. throw err;
  32. }
  33. };
  34. // 更新用户信息
  35. const updateUser = async (userData) => {
  36. loading.value = true;
  37. error.value = null;
  38. try {
  39. const result = await updateUserInfo(userData);
  40. loading.value = false;
  41. return result;
  42. } catch (err) {
  43. loading.value = false;
  44. error.value = err;
  45. throw err;
  46. }
  47. };
  48. // 上传头像
  49. const uploadUserAvatar = async (filePath) => {
  50. loading.value = true;
  51. error.value = null;
  52. try {
  53. const result = await uploadAvatar(filePath);
  54. loading.value = false;
  55. return result;
  56. } catch (err) {
  57. loading.value = false;
  58. error.value = err;
  59. throw err;
  60. }
  61. };
  62. // 退出登录
  63. const logoutUser = async () => {
  64. loading.value = true;
  65. error.value = null;
  66. try {
  67. const result = await logout();
  68. loading.value = false;
  69. return result;
  70. } catch (err) {
  71. loading.value = false;
  72. error.value = err;
  73. throw err;
  74. }
  75. };
  76. return {
  77. loading,
  78. error,
  79. login,
  80. fetchUserInfo,
  81. updateUser,
  82. uploadUserAvatar,
  83. logoutUser
  84. };
  85. }