2025-05-06 17:25:49 +08:00

201 lines
9.5 KiB
C++

#include "ChannelManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
ChannelManagerService::ChannelManagerService() {
m_serviceName = "channelManager";
}
void ChannelManagerService::onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (method == "setChannelListener") {
setChannelListener(arguments, result);
} else if (method == "getChannelMembersInfo") {
getChannelMembersInfo(arguments, result);
} else if (method == "getChannelMemberList") {
getChannelMemberList(arguments, result);
} else if (method == "getChannelsInfo") {
getChannelsInfo(arguments, result);
} else if (method == "joinChannel") {
joinChannel(arguments, result);
} else if (method == "quitChannel") {
quitChannel(arguments, result);
} else if (method == "changeChannelMute") {
changeChannelMute(arguments, result);
} else if (method == "changeChannelMemberMute") {
changeChannelMemberMute(arguments, result);
} else if (method == "isJoinChannel") {
isJoinChannel(arguments, result);
} else if (method == "getUsersInChannel") {
getUsersInChannel(arguments, result);
} else {
result->NotImplemented();
}
}
void ChannelManagerService::setChannelListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
set_channel_listener(NewChannelListenCallBack());
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::getChannelMembersInfo(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
get_specified_channel_members_info(NewBaseCallBack(result), operationID_cs, channelID_cs, userIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::getChannelMemberList(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto filter = zego_value_get_int(arguments->at(flutter::EncodableValue("filter")));
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
get_channel_member_list(NewBaseCallBack(result), operationID_cs, channelID_cs, filter, offset, count);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::getChannelsInfo(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("channelIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelIDList_cs = const_cast<char*>(channelIDList.c_str());
get_specified_channels_info(NewBaseCallBack(result), operationID_cs, channelIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::joinChannel(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
auto joinSource = zego_value_get_int(arguments->at(flutter::EncodableValue("joinSource")));
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
char* reason_cs = const_cast<char*>(reason.c_str());
char* ex_cs = const_cast<char*>(ex.c_str());
join_channel(NewBaseCallBack(result), operationID_cs, channelID_cs, reason_cs, joinSource, ex_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::quitChannel(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
quit_channel(NewBaseCallBack(result), operationID_cs, channelID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::changeChannelMute(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
// if (arguments) {
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
// auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
// auto mute = zego_value_get_bool(arguments->at(flutter::EncodableValue("mute")));
// char* operationID_cs = const_cast<char*>(operationID.c_str());
// char* channelID_cs = const_cast<char*>(channelID.c_str());
// change_channel_mute(NewBaseCallBack(result), operationID_cs, channelID_cs, mute);
// } else {
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
// }
}
void ChannelManagerService::changeChannelMemberMute(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
// if (arguments) {
// auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
// auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
// auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
// auto seconds = zego_value_get_int(arguments->at(flutter::EncodableValue("seconds")));
// char* operationID_cs = const_cast<char*>(operationID.c_str());
// char* channelID_cs = const_cast<char*>(channelID.c_str());
// char* userID_cs = const_cast<char*>(userID.c_str());
// change_channel_member_mute(NewBaseCallBack(result), operationID_cs, channelID_cs, userID_cs, seconds);
// } else {
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
// }
}
void ChannelManagerService::isJoinChannel(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
is_join_channel(NewBaseCallBack(result), operationID_cs, channelID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ChannelManagerService::getUsersInChannel(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
get_users_in_channel(NewBaseCallBack(result), operationID_cs, channelID_cs, userIDs_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}