获取昵称修改状态、优化昵称修改逻辑

This commit is contained in:
2025-12-03 11:53:36 +08:00
parent 159b4ab1d2
commit 7c1a1fafc1
6 changed files with 146 additions and 65 deletions

View File

@@ -9,16 +9,21 @@ import { convert_db_gender_to_display } from "@/utils/genderUtils";
import { EditModal, GeneralNavbar } from "@/components";
// import img from "@/config/images";
import CommonDialog from "@/components/CommonDialog";
import { useUserActions, useUserInfo } from "@/store/userStore";
import {
useUserActions,
useUserInfo,
useNicknameChangeStatus,
} from "@/store/userStore";
import { UserInfoType } from "@/services/userService";
import { useCities, useProfessions } from "@/store/pickerOptionsStore";
import { handleCustomerService } from "@/services/userService";
import evaluateService from "@/services/evaluateService";
const EditProfilePage: React.FC = () => {
const { updateUserInfo } = useUserActions();
const { updateUserInfo, updateNickname } = useUserActions();
// 直接从store获取用户信息确保响应式更新
const user_info = useUserInfo();
const nickname_change_status = useNicknameChangeStatus();
// 表单状态基于store中的用户信息初始化
const getInitialFormData = () => {
@@ -190,6 +195,13 @@ const EditProfilePage: React.FC = () => {
return;
}
if (field === "nickname") {
if (!nickname_change_status.can_change) {
return Taro.showToast({
title: `30天内仅可修改4次昵称${nickname_change_status.next_period_start_time}后可修改`,
icon: "none",
duration: 2000,
});
}
// 手动输入
setEditingField(field);
setEditModalVisible(true);
@@ -211,8 +223,9 @@ const EditProfilePage: React.FC = () => {
}
// 调用更新用户信息接口,只传递修改的字段
const update_data = { [editing_field]: value };
await updateUserInfo(update_data);
editing_field === "nickname"
? await updateNickname(value)
: await updateUserInfo(update_data);
// 更新表单状态store会自动更新
setFormData((prev) => ({ ...prev, [editing_field]: value }));
@@ -811,7 +824,7 @@ const EditProfilePage: React.FC = () => {
onCancel={handle_edit_modal_cancel}
validationMessage={
editing_field === "nickname"
? "请填写 2-24 个字符,不包括 @<>/等无效字符。30 天内可修改 4 次昵称,12.5 前还可修改 4 次。"
? `请填写 2-24 个字符,不包括 @<>/等无效字符。30 天内可修改 4 次昵称,${nickname_change_status.next_period_start_time} 前还可修改 ${nickname_change_status.remaining_count} 次。`
: "请填写 2-100 个字符"
}
/>