42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { useUserData } from "./useUserData";
|
|
import { useEffect } from "react";
|
|
import logger from "@/utils/logger";
|
|
import type { IUserInfo } from "@/interfaces/database/user-setting";
|
|
import userService from "@/services/user_service";
|
|
import { rsaPsw } from "../utils/encryption";
|
|
|
|
export function useProfileSetting() {
|
|
const {fetchUserInfo, userInfo} = useUserData();
|
|
|
|
useEffect(() => {
|
|
fetchUserInfo();
|
|
}, [fetchUserInfo]);
|
|
|
|
const updateUserInfo = async (newUserInfo: Partial<IUserInfo>) => {
|
|
try {
|
|
await userService.updateSetting(newUserInfo);
|
|
} catch (error) {
|
|
logger.error('更新用户信息失败:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
const changeUserPassword = async (data: { password: string; new_password: string }) => {
|
|
try {
|
|
const newPassword = rsaPsw(data.new_password);
|
|
const oldPassword = rsaPsw(data.password);
|
|
const res = await userService.updatePassword({
|
|
password: oldPassword,
|
|
new_password: newPassword,
|
|
});
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
return {
|
|
userInfo,
|
|
updateUserInfo,
|
|
changeUserPassword,
|
|
};
|
|
} |