add button functionality

This commit is contained in:
xyz
2025-07-30 11:38:07 +08:00
parent 01c4baf04d
commit 83f3f4f74e
10 changed files with 623 additions and 26 deletions

View File

@ -433,4 +433,190 @@ namespace network {
//统一更新会话列表的消息预览
emit dataCenter->updateLastMessage(chatSessionId);
}
void NetClient::changeNickname(const QString& loginSessionId, const QString& nickname)
{
//通过 protobuf 构造请求body
bite_im::SetUserNicknameReq pbReq;
pbReq.setRequestId(makeRequestId());;
pbReq.setSessionId(loginSessionId);
pbReq.setNickname(nickname);
QByteArray body = pbReq.serialize(&serializer);
LOG() << "修改用户昵称->发送请求 requestId= " << pbReq.requestId() << ", loginSessionId= " << pbReq.sessionId()
<< ", nickname= " << pbReq.nickname();
//发送HTTP请求
QNetworkReply* resp = this->sendHttpRequest("/service/user/set_nickname", body);
//处理HTTP响应
connect(resp, & QNetworkReply::finished, this, [=]() {
//解析响应
bool ok = false;
QString reason;
auto pbResp = this->handleHttpResponse<bite_im::SetUserNicknameRsp>(resp, &ok, &reason);
//判定响应是否正确
if (!ok) {
LOG() << "修改用户昵称->处理出错 reason= " << reason;
return;
}
//把结果写入到DataCenter中
dataCenter->resetNickname(nickname);
//通知调用者,响应已经处理完毕
emit dataCenter->changeNicknameDone();
LOG() << "修改用户昵称->响应处理完毕 requestId= " << pbResp->requestId();
});
}
void NetClient::changeDescription(const QString& loginSessionId, const QString& desc)
{
//通过 protobuf 构造请求body
bite_im::SetUserDescriptionReq pbReq;
pbReq.setRequestId(makeRequestId());
pbReq.setSessionId(loginSessionId);
pbReq.setDescription(desc);
QByteArray body = pbReq.serialize(&serializer);
LOG() << "修改用户描述->发送请求 requestId= " << pbReq.requestId() << ", loginSessionId= " << pbReq.sessionId()
<< ", description= " << pbReq.description();
//发送HTTP请求
QNetworkReply* resp = this->sendHttpRequest("/service/user/set_description", body);
//处理HTTP响应
connect(resp, &QNetworkReply::finished, this, [=]() {
//解析响应
bool ok = false;
QString reason;
auto pbResp = this->handleHttpResponse<bite_im::SetUserDescriptionRsp>(resp, &ok, &reason);
//判定响应是否正确
if (!ok) {
LOG() << "修改用户描述->处理出错 reason= " << reason;
return;
}
//把得到的结果写入到DataCenter中
dataCenter->resetDescription(desc);
//发送信号,通知修改完成
emit dataCenter->changeDescriptionDone();
//打印日志
LOG() << "修改用户描述->响应处理完毕 requestId= " << pbResp->requestId();
});
}
void NetClient::getVerifyCode(const QString& email)
{
//构造请求body
bite_im::PhoneVerifyCodeReq pbReq;
pbReq.setRequestId(makeRequestId());
pbReq.setPhoneNumber(email);
QByteArray body = pbReq.serialize(&serializer);
LOG() << "获取验证码->发送请求 requestId= " << pbReq.requestId() << ", email= " << pbReq.phoneNumber();
//发送HTTP请求
QNetworkReply* resp = this->sendHttpRequest("/service/user/get_phone_verify_code", body);
//处理HTTP响应
connect(resp, &QNetworkReply::finished, this, [=]() {
//解析响应
bool ok = false;
QString reason;
auto pbResp = this->handleHttpResponse<bite_im::PhoneVerifyCodeRsp>(resp, &ok, &reason);
//判定响应是否正确
if (!ok) {
LOG() << "获取验证码->处理出错 reason= " << reason;
return;
}
//把得到的结果写入到DataCenter中
dataCenter->resetVerifyCodeId(pbResp->verifyCodeId());
//发送信号给调用者
emit dataCenter->getVerifyCodeDone();
//打印日志
LOG() << "获取验证码->响应处理完毕 requestId= " << pbResp->requestId() << "Id= " << dataCenter->getVerifyCodeId();
});
}
void NetClient::changeEmail(const QString& loginSessionId, const QString& email, const QString& verifyCodeId, const QString& verifyCode)
{
//构造请求body
bite_im::SetUserPhoneNumberReq pbReq;
pbReq.setRequestId(makeRequestId());
pbReq.setSessionId(loginSessionId);
pbReq.setPhoneNumber(email);
pbReq.setPhoneVerifyCodeId(verifyCodeId);
pbReq.setPhoneVerifyCode(verifyCode);
QByteArray body = pbReq.serialize(&serializer);
LOG() << "修改用户邮箱->发送请求 requestId= " << pbReq.requestId() << ", loginSessionId= " << pbReq.sessionId()
<< ", email= " << pbReq.phoneNumber() << ", verifyCodeId= " << pbReq.phoneVerifyCodeId()
<< ", verifyCode= " << pbReq.phoneVerifyCode();
//发送HTTP请求
QNetworkReply* resp = this->sendHttpRequest("/service/user/set_phone", body);
//处理HTTP响应
connect(resp, &QNetworkReply::finished, this, [=]() {
bool ok = false;
QString reason;
auto pbResp = this->handleHttpResponse<bite_im::SetUserPhoneNumberRsp>(resp, &ok, &reason);
//判定响应是否正确
if (!ok) {
LOG() << "修改用户邮箱->处理出错 reason= " << reason;
return;
}
//把结果记录到DataCenter中
dataCenter->resetPhone(email);
//打印日志
LOG() << "修改用户邮箱->响应处理完毕 requestId= " << pbResp->requestId();
});
//发送信号,通知调用者完成
emit dataCenter->changePhoneDone();
}
void NetClient::changeAvatar(const QString& loginSessionId, const QByteArray& avatar)
{
//构造请求body
bite_im::SetUserAvatarReq pbReq;
pbReq.setRequestId(makeRequestId());
pbReq.setSessionId(loginSessionId);
pbReq.setAvatar(avatar);
QByteArray body = pbReq.serialize(&serializer);
LOG() << "修改用户头像->发送请求 requestId= " << pbReq.requestId() << ", loginSessionId= " << pbReq.sessionId()
<< ", avatar size= " << pbReq.avatar().size();
//发送HTTP请求
QNetworkReply* resp = this->sendHttpRequest("/service/user/set_avatar", body);
//处理HTTP响应
connect(resp, &QNetworkReply::finished, this, [=]() {
//解析响应
bool ok = false;
QString reason;
auto pbResp = this->handleHttpResponse<bite_im::SetUserAvatarRsp>(resp, &ok, &reason);
//判定响应是否正确
if (!ok) {
LOG() << "修改用户头像->处理出错 reason= " << reason;
return;
}
//把数据写入到DataCenter
dataCenter->resetAvatar(avatar);
//发送信号
emit dataCenter->changeAvatarDone();
//打印日志
LOG() << "修改用户头像->响应处理完成 requestId= " << pbResp->requestId();
});
}
} //end namespace network