no message

This commit is contained in:
cpdl
2025-05-06 17:25:49 +08:00
parent 43515d8058
commit 67bf71c998
35 changed files with 4216 additions and 296 deletions

View File

@@ -0,0 +1,201 @@
#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");
}
}

View File

@@ -0,0 +1,56 @@
#ifndef CHANNEL_MANAGER_SERVICE_H
#define CHANNEL_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class ChannelManagerService : public FLTService
{
public:
ChannelManagerService();
void onMethodCalled(
const std::string &method,
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setChannelListener(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getChannelMembersInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getChannelMemberList(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getChannelsInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void joinChannel(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void quitChannel(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void changeChannelMute(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void changeChannelMemberMute(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void isJoinChannel(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getUsersInChannel(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // CHANNEL_MANAGER_SERVICE_H

View File

@@ -45,10 +45,14 @@ enum class ConstDefine {
MSG_DELETED,
RECV_NEW_MESSAGES,
RECV_OFFLINE_NEW_MESSAGES,
SELF_INFO_UPDATED,
USER_STATUS_CHANGED,
RECV_CUSTOM_BUSINESS_MESSAGE,
MESSAGE_KV_INFO_CHANGED,
OPEN,
PART_SIZE,
HASH_PART_PROGRESS,
@@ -59,9 +63,22 @@ enum class ConstDefine {
COMPLETE,
CONVERSATION_USER_INPUT_STATUS_CHANGED,
RECV_ONLINE_ONLY_MESSAGE,
RECV_MESSAGE_EDIT,
NEW_RECV_MESSAGE_EDIT,
USER_TOKEN_INVALID,
ON_PROGRESS
ON_PROGRESS,
JOINED_CHANNEL_ADDED,
JOINED_CHANNEL_DELETED,
CHANNEL_MEMBER_ADDED,
CHANNEL_MEMBER_DELETED,
CHANNEL_APPLICATION_ADDED,
CHANNEL_APPLICATION_DELETED,
CHANNEL_INFO_CHANGED,
CHANNEL_DISMISSED,
CHANNEL_MEMBER_INFO_CHANGED,
CHANNEL_APPLICATION_ACCEPTED,
CHANNEL_APPLICATION_REJECTED,
};

View File

@@ -0,0 +1,341 @@
#include "ConversationManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
ConversationManagerService::ConversationManagerService() {
m_serviceName = "conversationManager";
}
void ConversationManagerService::onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (method == "setConversationListener") {
setConversationListener(arguments, result);
} else if (method == "getAllConversationList") {
getAllConversationList(arguments, result);
} else if (method == "getConversationListSplit") {
getConversationListSplit(arguments, result);
} else if (method == "getOneConversation") {
getOneConversation(arguments, result);
} else if (method == "getMultipleConversation") {
getMultipleConversation(arguments, result);
} else if (method == "setConversationDraft") {
setConversationDraft(arguments, result);
} else if (method == "hideConversation") {
hideConversation(arguments, result);
} else if (method == "markConversationMessageAsRead") {
markConversationMessageAsRead(arguments, result);
} else if (method == "getTotalUnreadMsgCount") {
getTotalUnreadMsgCount(arguments, result);
} else if (method == "getConversationIDBySessionType") {
getConversationIDBySessionType(arguments, result);
} else if (method == "clearConversationAndDeleteAllMsg") {
clearConversationAndDeleteAllMsg(arguments, result);
} else if (method == "deleteConversationAndDeleteAllMsg") {
deleteConversationAndDeleteAllMsg(arguments, result);
} else if (method == "getAtAllTag") {
getAtAllTag(arguments, result);
} else if (method == "hideAllConversations") {
hideAllConversations(arguments, result);
} else if (method == "searchConversation") {
searchConversation(arguments, result);
} else if (method == "changeInputStates") {
changeInputStates(arguments, result);
} else if (method == "getInputStates") {
getInputStates(arguments, result);
} else if (method == "setConversation") {
setConversation(arguments, result);
} else if (method == "searchConversations") {
searchConversations(arguments, result);
} else {
result->NotImplemented();
}
}
void ConversationManagerService::setConversationListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
set_conversation_listener(NewConversationListenerCallBack());
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getAllConversationList(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_all_conversation_list(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getConversationListSplit(
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 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());
get_conversation_list_split(NewBaseCallBack(result), operationID_cs, offset, count);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getOneConversation(
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 sessionType = zego_value_get_int(arguments->at(flutter::EncodableValue("sessionType")));
auto sourceID = zego_value_get_string(arguments->at(flutter::EncodableValue("sourceID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* sourceID_cs = const_cast<char*>(sourceID.c_str());
get_one_conversation(NewBaseCallBack(result), operationID_cs, sessionType, sourceID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getMultipleConversation(
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 conversationIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationIDList_cs = const_cast<char*>(conversationIDList.c_str());
get_multiple_conversation(NewBaseCallBack(result), operationID_cs, conversationIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::setConversationDraft(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto draftText = zego_value_get_string(arguments->at(flutter::EncodableValue("draftText")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* draftText_cs = const_cast<char*>(draftText.c_str());
set_conversation_draft(NewBaseCallBack(result), operationID_cs, conversationID_cs, draftText_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::hideConversation(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
hide_conversation(NewBaseCallBack(result), operationID_cs, conversationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::markConversationMessageAsRead(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
mark_conversation_message_as_read(NewBaseCallBack(result), operationID_cs, conversationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getTotalUnreadMsgCount(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_total_unread_msg_count(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getConversationIDBySessionType(
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 sourceID = zego_value_get_string(arguments->at(flutter::EncodableValue("sourceID")));
auto sessionType = zego_value_get_int(arguments->at(flutter::EncodableValue("sessionType")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* sourceID_cs = const_cast<char*>(sourceID.c_str());
std::string conversationID = get_conversation_id_by_session_type(operationID_cs, sourceID_cs, sessionType);
result->Success(flutter::EncodableValue(conversationID));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::clearConversationAndDeleteAllMsg(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
clear_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::deleteConversationAndDeleteAllMsg(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
delete_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getAtAllTag(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
std::string tag = get_at_all_tag(operationID_cs);
result->Success(flutter::EncodableValue(tag));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::hideAllConversations(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
hide_all_conversations(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::searchConversation(
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 name = zego_value_get_string(arguments->at(flutter::EncodableValue("name")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* name_cs = const_cast<char*>(name.c_str());
search_conversation(NewBaseCallBack(result), operationID_cs, name_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::changeInputStates(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto focus = zego_value_get_bool(arguments->at(flutter::EncodableValue("focus")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
change_input_states(NewBaseCallBack(result), operationID_cs, conversationID_cs, focus);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::getInputStates(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
get_input_states(NewBaseCallBack(result), operationID_cs, conversationID_cs, userID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::setConversation(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto req = zego_value_get_string(arguments->at(flutter::EncodableValue("req")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* req_cs = const_cast<char*>(req.c_str());
set_conversation(NewBaseCallBack(result), operationID_cs, conversationID_cs, req_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void ConversationManagerService::searchConversations(
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 name = zego_value_get_string(arguments->at(flutter::EncodableValue("name")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* name_cs = const_cast<char*>(name.c_str());
search_conversations(NewBaseCallBack(result), operationID_cs, name_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -0,0 +1,82 @@
#ifndef CONVERSATION_MANAGER_SERVICE_H
#define CONVERSATION_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class ConversationManagerService: public FLTService {
public:
ConversationManagerService();
void onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setConversationListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getAllConversationList(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getConversationListSplit(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getOneConversation(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getMultipleConversation(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setConversationDraft(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void hideConversation(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void markConversationMessageAsRead(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getTotalUnreadMsgCount(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getConversationIDBySessionType(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void clearConversationAndDeleteAllMsg(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteConversationAndDeleteAllMsg(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getAtAllTag(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void hideAllConversations(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchConversation(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void changeInputStates(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getInputStates(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setConversation(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchConversations(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // CONVERSATION_MANAGER_SERVICE_H

View File

@@ -0,0 +1,383 @@
#include "FriendManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
FriendshipManagerService::FriendshipManagerService()
{
m_serviceName = "friendshipManager";
}
void FriendshipManagerService::onMethodCalled(
const std::string &method,
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
{
if (method == "setFriendListener")
{
setFriendListener(arguments, result);
}
else if (method == "getFriendsInfo")
{
getFriendsInfo(arguments, result);
}
else if (method == "addFriend")
{
addFriend(arguments, result);
}
else if (method == "getFriendApplicationListAsRecipient")
{
getFriendApplicationListAsRecipient(arguments, result);
}
else if (method == "getFriendApplicationListAsApplicant")
{
getFriendApplicationListAsApplicant(arguments, result);
}
else if (method == "getFriendList")
{
getFriendList(arguments, result);
}
else if (method == "getFriendListPage")
{
getFriendListPage(arguments, result);
}
else if (method == "addBlacklist")
{
addBlacklist(arguments, result);
}
else if (method == "getBlacklist")
{
getBlacklist(arguments, result);
}
else if (method == "removeBlacklist")
{
removeBlacklist(arguments, result);
}
else if (method == "checkFriend")
{
checkFriend(arguments, result);
}
else if (method == "deleteFriend")
{
deleteFriend(arguments, result);
}
else if (method == "acceptFriendApplication")
{
acceptFriendApplication(arguments, result);
}
else if (method == "refuseFriendApplication")
{
refuseFriendApplication(arguments, result);
}
else if (method == "searchFriends")
{
searchFriends(arguments, result);
}
else if (method == "updateFriends")
{
updateFriends(arguments, result);
}
else
{
result->NotImplemented();
}
}
void FriendshipManagerService::setFriendListener(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
{
if (arguments)
{
set_friend_listener(NewFriendshipListenCallBack());
result->Success(flutter::EncodableValue());
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getFriendsInfo(
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 userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
auto filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *userIDList_cs = const_cast<char *>(userIDList.c_str());
get_specified_friends_info(NewBaseCallBack(result), operationID_cs, userIDList_cs, filterBlack);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::addFriend(
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 friendInfo = map_2_json(*arguments);
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *friendInfo_cs = const_cast<char *>(friendInfo.c_str());
add_friend(NewBaseCallBack(result), operationID_cs, friendInfo_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getFriendApplicationListAsRecipient(
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")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
get_friend_application_list_as_recipient(NewBaseCallBack(result), operationID_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getFriendApplicationListAsApplicant(
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")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
get_friend_application_list_as_applicant(NewBaseCallBack(result), operationID_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getFriendList(
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 filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
get_friend_list(NewBaseCallBack(result), operationID_cs, filterBlack);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getFriendListPage(
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 offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
auto filterBlack = zego_value_get_bool(arguments->at(flutter::EncodableValue("filterBlack")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
get_friend_list_page(NewBaseCallBack(result), operationID_cs, offset, count, filterBlack);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::addBlacklist(
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 userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *userID_cs = const_cast<char *>(userID.c_str());
char *ex_cs = const_cast<char *>(ex.c_str());
add_black(NewBaseCallBack(result), operationID_cs, userID_cs, ex_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::getBlacklist(
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")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
get_black_list(NewBaseCallBack(result), operationID_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::removeBlacklist(
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 userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *userID_cs = const_cast<char *>(userID.c_str());
remove_black(NewBaseCallBack(result), operationID_cs, userID_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::checkFriend(
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 userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *userIDList_cs = const_cast<char *>(userIDList.c_str());
check_friend(NewBaseCallBack(result), operationID_cs, userIDList_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::deleteFriend(
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 userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *userID_cs = const_cast<char *>(userID.c_str());
delete_friend(NewBaseCallBack(result), operationID_cs, userID_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::acceptFriendApplication(
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 applicationInfo = map_2_json(*arguments);
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *applicationInfo_cs = const_cast<char *>(applicationInfo.c_str());
accept_friend_application(NewBaseCallBack(result), operationID_cs, applicationInfo_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::refuseFriendApplication(
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 applicationInfo = map_2_json(*arguments);
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *applicationInfo_cs = const_cast<char *>(applicationInfo.c_str());
refuse_friend_application(NewBaseCallBack(result), operationID_cs, applicationInfo_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::searchFriends(
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 searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *searchParam_cs = const_cast<char *>(searchParam.c_str());
search_friends(NewBaseCallBack(result), operationID_cs, searchParam_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void FriendshipManagerService::updateFriends(
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 req = zego_value_get_string(arguments->at(flutter::EncodableValue("req")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *req_cs = const_cast<char *>(req.c_str());
update_friends(NewBaseCallBack(result), operationID_cs, req_cs);
}
else
{
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -0,0 +1,74 @@
#ifndef FRIENDSHIP_MANAGER_SERVICE_H
#define FRIENDSHIP_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class FriendshipManagerService : public FLTService
{
public:
FriendshipManagerService();
void onMethodCalled(
const std::string &method,
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setFriendListener(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getFriendsInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void addFriend(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getFriendApplicationListAsRecipient(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getFriendApplicationListAsApplicant(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getFriendList(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getFriendListPage(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void addBlacklist(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getBlacklist(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void removeBlacklist(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void checkFriend(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteFriend(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void acceptFriendApplication(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void refuseFriendApplication(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchFriends(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void updateFriends(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // FRIENDSHIP_MANAGER_SERVICE_H

View File

@@ -0,0 +1,508 @@
#include "GroupManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
GroupManagerService::GroupManagerService() {
m_serviceName = "groupManager";
}
void GroupManagerService::onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (method == "setGroupListener") {
setGroupListener(arguments, result);
} else if (method == "inviteUserToGroup") {
inviteUserToGroup(arguments, result);
} else if (method == "kickGroupMember") {
kickGroupMember(arguments, result);
} else if (method == "getGroupMembersInfo") {
getGroupMembersInfo(arguments, result);
} else if (method == "getGroupMemberList") {
getGroupMemberList(arguments, result);
} else if (method == "getJoinedGroupList") {
getJoinedGroupList(arguments, result);
} else if (method == "getJoinedGroupListPage") {
getJoinedGroupListPage(arguments, result);
} else if (method == "createGroup") {
createGroup(arguments, result);
} else if (method == "setGroupInfo") {
setGroupInfo(arguments, result);
} else if (method == "getGroupsInfo") {
getGroupsInfo(arguments, result);
} else if (method == "joinGroup") {
joinGroup(arguments, result);
} else if (method == "quitGroup") {
quitGroup(arguments, result);
} else if (method == "transferGroupOwner") {
transferGroupOwner(arguments, result);
} else if (method == "getGroupApplicationListAsRecipient") {
getGroupApplicationListAsRecipient(arguments, result);
} else if (method == "getGroupApplicationListAsApplicant") {
getGroupApplicationListAsApplicant(arguments, result);
} else if (method == "acceptGroupApplication") {
acceptGroupApplication(arguments, result);
} else if (method == "refuseGroupApplication") {
refuseGroupApplication(arguments, result);
} else if (method == "dismissGroup") {
dismissGroup(arguments, result);
} else if (method == "changeGroupMute") {
changeGroupMute(arguments, result);
} else if (method == "changeGroupMemberMute") {
changeGroupMemberMute(arguments, result);
} else if (method == "searchGroups") {
searchGroups(arguments, result);
} else if (method == "getGroupMemberListByJoinTimeFilter") {
getGroupMemberListByJoinTimeFilter(arguments, result);
} else if (method == "getGroupMemberOwnerAndAdmin") {
getGroupMemberOwnerAndAdmin(arguments, result);
} else if (method == "searchGroupMembers") {
searchGroupMembers(arguments, result);
} else if (method == "setGroupMemberInfo") {
setGroupMemberInfo(arguments, result);
} else if (method == "isJoinGroup") {
isJoinGroup(arguments, result);
} else if (method == "getUsersInGroup") {
getUsersInGroup(arguments, result);
} else {
result->NotImplemented();
}
}
void GroupManagerService::setGroupListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
set_group_listener(NewGroupListenerCallBack());
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::inviteUserToGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* reason_cs = const_cast<char*>(reason.c_str());
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
invite_user_to_group(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, userIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::kickGroupMember(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto reason = zego_value_get_string(arguments->at(flutter::EncodableValue("reason")));
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* reason_cs = const_cast<char*>(reason.c_str());
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
kick_group_member(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, userIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupMembersInfo(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
get_specified_group_members_info(NewBaseCallBack(result), operationID_cs, groupID_cs, userIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupMemberList(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
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* groupID_cs = const_cast<char*>(groupID.c_str());
get_group_member_list(NewBaseCallBack(result), operationID_cs, groupID_cs, filter, offset, count);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getJoinedGroupList(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_joined_group_list(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getJoinedGroupListPage(
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 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());
get_joined_group_list_page(NewBaseCallBack(result), operationID_cs, offset, count);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::createGroup(
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 groupInfo = map_2_json(*arguments);
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupInfo_cs = const_cast<char*>(groupInfo.c_str());
create_group(NewBaseCallBack(result), operationID_cs, groupInfo_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::setGroupInfo(
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 groupInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("groupInfo")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupInfo_cs = const_cast<char*>(groupInfo.c_str());
set_group_info(NewBaseCallBack(result), operationID_cs, groupInfo_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupsInfo(
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 groupIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("groupIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupIDList_cs = const_cast<char*>(groupIDList.c_str());
get_specified_groups_info(NewBaseCallBack(result), operationID_cs, groupIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::joinGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
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* groupID_cs = const_cast<char*>(groupID.c_str());
char* reason_cs = const_cast<char*>(reason.c_str());
char* ex_cs = const_cast<char*>(ex.c_str());
join_group(NewBaseCallBack(result), operationID_cs, groupID_cs, reason_cs, joinSource, ex_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::quitGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
quit_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::transferGroupOwner(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
transfer_group_owner(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupApplicationListAsRecipient(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_group_application_list_as_recipient(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupApplicationListAsApplicant(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_group_application_list_as_applicant(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::acceptGroupApplication(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto handleMsg = zego_value_get_string(arguments->at(flutter::EncodableValue("handleMsg")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
char* handleMsg_cs = const_cast<char*>(handleMsg.c_str());
accept_group_application(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, handleMsg_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::refuseGroupApplication(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto handleMsg = zego_value_get_string(arguments->at(flutter::EncodableValue("handleMsg")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
char* handleMsg_cs = const_cast<char*>(handleMsg.c_str());
refuse_group_application(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, handleMsg_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::dismissGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
dismiss_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::changeGroupMute(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto mute = zego_value_get_bool(arguments->at(flutter::EncodableValue("mute")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
change_group_mute(NewBaseCallBack(result), operationID_cs, groupID_cs, mute);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::changeGroupMemberMute(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
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* groupID_cs = const_cast<char*>(groupID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
change_group_member_mute(NewBaseCallBack(result), operationID_cs, groupID_cs, userID_cs, seconds);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::searchGroups(
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 searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* searchParam_cs = const_cast<char*>(searchParam.c_str());
search_groups(NewBaseCallBack(result), operationID_cs, searchParam_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupMemberListByJoinTimeFilter(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto offset = zego_value_get_int(arguments->at(flutter::EncodableValue("offset")));
auto count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
auto joinTimeBegin = zego_value_get_int(arguments->at(flutter::EncodableValue("joinTimeBegin")));
auto joinTimeEnd = zego_value_get_int(arguments->at(flutter::EncodableValue("joinTimeEnd")));
auto excludeUserIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("excludeUserIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* excludeUserIDList_cs = const_cast<char*>(excludeUserIDList.c_str());
get_group_member_list_by_join_time_filter(NewBaseCallBack(result), operationID_cs, groupID_cs, offset, count, joinTimeBegin, joinTimeEnd, excludeUserIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getGroupMemberOwnerAndAdmin(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
get_group_member_owner_and_admin(NewBaseCallBack(result), operationID_cs, groupID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::searchGroupMembers(
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 searchParam = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParam")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* searchParam_cs = const_cast<char*>(searchParam.c_str());
search_group_members(NewBaseCallBack(result), operationID_cs, searchParam_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::setGroupMemberInfo(
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 info = zego_value_get_string(arguments->at(flutter::EncodableValue("info")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* info_cs = const_cast<char*>(info.c_str());
set_group_member_info(NewBaseCallBack(result), operationID_cs, info_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::isJoinGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
is_join_group(NewBaseCallBack(result), operationID_cs, groupID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void GroupManagerService::getUsersInGroup(
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 groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
get_users_in_group(NewBaseCallBack(result), operationID_cs, groupID_cs, userIDs_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -0,0 +1,107 @@
#ifndef GROUP_MANAGER_SERVICE_H
#define GROUP_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class GroupManagerService : public FLTService
{
public:
GroupManagerService();
void onMethodCalled(
const std::string &method,
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setGroupListener(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void inviteUserToGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void kickGroupMember(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupMembersInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupMemberList(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getJoinedGroupList(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getJoinedGroupListPage(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setGroupInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupsInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void joinGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void quitGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void transferGroupOwner(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupApplicationListAsRecipient(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupApplicationListAsApplicant(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void acceptGroupApplication(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void refuseGroupApplication(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void dismissGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void changeGroupMute(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void changeGroupMemberMute(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchGroups(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupMemberListByJoinTimeFilter(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getGroupMemberOwnerAndAdmin(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchGroupMembers(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setGroupMemberInfo(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void isJoinGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getUsersInGroup(
const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // GROUP_MANAGER_SERVICE_H

View File

@@ -12,90 +12,14 @@
#include <libopenimsdk.h>
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
IMManagerService::IMManagerService() {
m_serviceName = "imManager";
_im_manager_listener.onInitSdk = [](int state, char *msg) {
// friend added, handle friendInfo
flutter::EncodableMap arguments;
switch (ConstDefine(state)) {
case ConstDefine::CONNECTING:
arguments.insert(std::make_pair("type", "onConnecting"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::CONNECT_SUCCESS:
arguments.insert(std::make_pair("type", "onConnectSuccess"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::CONNECT_FAILED:
arguments.insert(std::make_pair("type", "onConnectFailed"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::KICKED_OFFLINE:
arguments.insert(std::make_pair("type", "onKickedOffline"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::USER_TOKEN_EXPIRED:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::USER_TOKEN_INVALID:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
}
notifyEvent("connectListener", arguments);
};
_im_manager_listener.baseCallBack = [](char *opid, int errCode, char *errMsg, char *msg) {
CallBaseCallBack(msg, errCode, errMsg, msg);
};
_im_manager_listener.uploadCallback = [](int state, char *msg) {
// upload progress
flutter::EncodableMap arguments;
switch (ConstDefine(state)) {
case ConstDefine::OPEN:
arguments.insert(std::make_pair("type", "onConnecting"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::PART_SIZE:
arguments.insert(std::make_pair("type", "onConnectSuccess"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::HASH_PART_PROGRESS:
arguments.insert(std::make_pair("type", "onConnectFailed"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::HASH_PART_COMPLETE:
arguments.insert(std::make_pair("type", "onKickedOffline"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::UPLOAD_ID:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::UPLOAD_PART_COMPLETE:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::UPLOAD_COMPLETE:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
case ConstDefine::COMPLETE:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", *msg));
break;
}
notifyEvent("uploadFileListener", arguments);
};
}
void IMManagerService::onMethodCalled(
const std::string &method, const flutter::EncodableMap *arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
@@ -138,7 +62,7 @@ void IMManagerService::initializeSDK(
char *config_cs = const_cast<char *>(config.c_str());
auto error = init_sdk(_im_manager_listener.onInitSdk,
auto error = init_sdk(NewInitListenCallBack(),
operationID_cs,
config_cs);
if (error == 0) {
@@ -181,9 +105,7 @@ void IMManagerService::login(
char *userID_cs = const_cast<char *>(userID.c_str());
char *token_cs = const_cast<char *>(token.c_str());
NewBaseCallBack(operationID, result);
::login(_im_manager_listener.baseCallBack, operationID_cs, userID_cs, token_cs);
::login(NewBaseCallBack(result), operationID_cs, userID_cs, token_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
@@ -197,8 +119,8 @@ void IMManagerService::logout(
auto operationID = zego_value_get_string(
arguments->at(flutter::EncodableValue("operationID")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
NewBaseCallBack(operationID, result);
::logout(_im_manager_listener.baseCallBack, operationID_cs);
::logout(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
@@ -225,67 +147,61 @@ void IMManagerService::getLoginStatus(
void IMManagerService::uploadFile(
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 id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
// auto fileInfo = map_2_json(*arguments);
// char* operationID_cs = const_cast<char*>(operationID.c_str());
// char* fileInfo_cs = const_cast<char*>(fileInfo.c_str());
// uploadFileResult = result;
// upload_file(_im_manager_listener.onUploadFile, operationID_cs, fileInfo_cs, _im_manager_listener.uploadCallback);
// }
// else {
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
// }
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
auto fileInfo = map_2_json(*arguments);
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* fileInfo_cs = const_cast<char*>(fileInfo.c_str());
upload_file(NewBaseCallBack(result), operationID_cs, fileInfo_cs, NewUploadFileListenCallBack(id));
}
else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void IMManagerService::uploadLogs(
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 line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
// auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
// char *operationID_cs = const_cast<char *>(operationID.c_str());
// char *ex_cs = const_cast<char *>(ex.c_str());
//
// upload_logs(_im_manager_listener.onUploadLogs, operationID_cs, line, ex_cs);
//
// } else {
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
// }
if (arguments) {
auto operationID = zego_value_get_string(
arguments->at(flutter::EncodableValue("operationID")));
auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
auto ex = zego_value_get_string(arguments->at(flutter::EncodableValue("ex")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *ex_cs = const_cast<char *>(ex.c_str());
::upload_logs(NewBaseCallBack(result), operationID_cs, line, ex_cs, NewUploadLogsListenCallBack());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void IMManagerService::logs(
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 logLevel = zego_value_get_int(arguments->at(flutter::EncodableValue("logLevel")));
// auto file = zego_value_get_string(arguments->at(flutter::EncodableValue("file")));
// auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
// auto msgs = zego_value_get_string(arguments->at(flutter::EncodableValue("msgs")));
// auto err = zego_value_get_string(arguments->at(flutter::EncodableValue("err")));
// auto keyAndValue = zego_value_get_string(arguments->at(flutter::EncodableValue("keyAndValue")));
// char* operationID_cs = const_cast<char*>(operationID.c_str());
// char* file_cs = const_cast<char*>(file.c_str());
// char* msgs_cs = const_cast<char*>(msgs.c_str());
// char* err_cs = const_cast<char*>(err.c_str());
// char* keyAndValue_cs = const_cast<char*>(keyAndValue.c_str());
//
// auto error = logs(_im_manager_listener.onLogs, operationID_cs, logLevel, file_cs, line, msgs_cs, err_cs, keyAndValue_cs);
// if (error != 0) {
// std::string msg = "Logging failed";
// result->Error("", "", NimResult::getErrorResult(error, msg));
// }
// else {
// result->Success(NimResult::getSuccessResult());
// }
// }
// else {
// result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
// }
if (arguments) {
auto operationID = zego_value_get_string(arguments->at(flutter::EncodableValue("operationID")));
auto logLevel = zego_value_get_int(arguments->at(flutter::EncodableValue("logLevel")));
auto file = zego_value_get_string(arguments->at(flutter::EncodableValue("file")));
auto line = zego_value_get_int(arguments->at(flutter::EncodableValue("line")));
auto msgs = zego_value_get_string(arguments->at(flutter::EncodableValue("msgs")));
auto err = zego_value_get_string(arguments->at(flutter::EncodableValue("err")));
auto keyAndValue = zego_value_get_string(arguments->at(flutter::EncodableValue("keyAndValue")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* file_cs = const_cast<char*>(file.c_str());
char* msgs_cs = const_cast<char*>(msgs.c_str());
char* err_cs = const_cast<char*>(err.c_str());
char* keyAndValue_cs = const_cast<char*>(keyAndValue.c_str());
::logs(NewBaseCallBack(result), operationID_cs, logLevel, file_cs, line, msgs_cs, err_cs, keyAndValue_cs);
}
else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void IMManagerService::updateFcmToken(
@@ -298,8 +214,8 @@ void IMManagerService::updateFcmToken(
auto expireTime = zego_value_get_int(arguments->at(flutter::EncodableValue("expireTime")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
char *fcmToken_cs = const_cast<char *>(fcmToken.c_str());
NewBaseCallBack(operationID, result);
update_fcm_token(_im_manager_listener.baseCallBack, operationID_cs, fcmToken_cs,
::update_fcm_token(NewBaseCallBack(result), operationID_cs, fcmToken_cs,
expireTime);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
@@ -309,31 +225,31 @@ void IMManagerService::updateFcmToken(
void IMManagerService::setAppBackgroundStatus(
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 isBackground = zego_value_get_bool(arguments->at(flutter::EncodableValue("isBackground")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
NewBaseCallBack(operationID, result);
set_app_background_status(_im_manager_listener.baseCallBack, operationID_cs, isBackground);
if (arguments) {
auto operationID = zego_value_get_string(
arguments->at(flutter::EncodableValue("operationID")));
auto isBackground = zego_value_get_bool(
arguments->at(flutter::EncodableValue("isBackground")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
}
else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
set_app_background_status(NewBaseCallBack(result), operationID_cs, isBackground);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void IMManagerService::networkStatusChanged(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
NewBaseCallBack(operationID, result);
network_status_changed(_im_manager_listener.baseCallBack, operationID_cs);
if (arguments) {
auto operationID = zego_value_get_string(
arguments->at(flutter::EncodableValue("operationID")));
char *operationID_cs = const_cast<char *>(operationID.c_str());
network_status_changed(NewBaseCallBack(result), operationID_cs);
}
else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -8,11 +8,7 @@
#include "../FLTService.h"
#include "Listen.h"
struct IMManagerServiceListener {
CB_I_S onInitSdk;
CB_S_I_S_S baseCallBack;
CB_I_S uploadCallback;
};
class IMManagerService : public FLTService {
public:
@@ -67,7 +63,6 @@ class IMManagerService : public FLTService {
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
IMManagerServiceListener _im_manager_listener;
};

View File

@@ -1,20 +1,621 @@
#include "Listen.h"
#include <unordered_map>
std::unordered_map <std::string, std::unique_ptr<BaseCallBack>> g_baseCallBackMap;
std::mutex g_baseCallBackMapMutex;
#include "wrapp_cpp_function.inc"
#include "ConstDefine.h"
#include "../FLTService.h"
#include "../ThreadUtil.h"
#include "../json.hpp"
using json = nlohmann::json;
void NewBaseCallBack(std::string opid,
std::shared_ptr <flutter::MethodResult<flutter::EncodableValue>> result) {
std::lock_guard <std::mutex> lock(g_baseCallBackMapMutex);
g_baseCallBackMap[opid] = std::make_unique<BaseCallBack>(result);
CB_S_I_S_S NewBaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
{
auto t = std::make_shared<BaseCallBack>(result);
auto f = [t](const std::string &operationID, int errCode, const std::string &errMsg, const std::string &data)
{
t->HandleCallback(operationID, errCode, errMsg, data);
};
return _wrapper_callonce_cpp_function(f);
}
void CallBaseCallBack(char *opid, int errCode, char *errMsg, char *msg) {
std::lock_guard <std::mutex> lock(g_baseCallBackMapMutex);
auto it = g_baseCallBackMap.find(std::string(opid));
if (it != g_baseCallBackMap.end()) {
auto ctx = std::move(it->second); //unique_ptr
ctx->HandleCallback(opid, errCode, errMsg, msg);
///////////////////////////////////////////////////////////////////////////////////////////////
void InitListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
switch (ConstDefine(state))
{
case ConstDefine::CONNECTING:
arguments.insert(std::make_pair("type", "onConnecting"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CONNECT_SUCCESS:
arguments.insert(std::make_pair("type", "onConnectSuccess"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CONNECT_FAILED:
arguments.insert(std::make_pair("type", "onConnectFailed"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::KICKED_OFFLINE:
arguments.insert(std::make_pair("type", "onKickedOffline"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::USER_TOKEN_EXPIRED:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::USER_TOKEN_INVALID:
arguments.insert(std::make_pair("type", "onUserTokenExpired"));
arguments.insert(std::make_pair("data", msg));
break;
}
}
notifyEvent("connectListener", arguments);
}
CB_I_S NewInitListenCallBack()
{
auto t = std::make_shared<InitListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void UploadFileListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::OPEN:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("size", std::stoi(msg)));
arguments.insert(std::make_pair("type", "open"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::PART_SIZE:
// 需要使用json反序列化对象msg使用临时结构
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("partSize", j.at("partSize").get<int>()));
data.insert(std::make_pair("num", j.at("num").get<int>()));
arguments.insert(std::make_pair("type", "partSize"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::HASH_PART_PROGRESS:
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("index", j.at("index").get<int>()));
data.insert(std::make_pair("size", j.at("size").get<int>()));
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
arguments.insert(std::make_pair("type", "hashPartProgress"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::HASH_PART_COMPLETE:
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
data.insert(std::make_pair("fileHash", j.at("fileHash").get<std::string>()));
arguments.insert(std::make_pair("type", "hashPartComplete"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::UPLOAD_ID:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("uploadID", msg));
arguments.insert(std::make_pair("type", "uploadID"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::UPLOAD_PART_COMPLETE:
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("index", j.at("index").get<int>()));
data.insert(std::make_pair("partSize", j.at("partSize").get<int>()));
data.insert(std::make_pair("partHash", j.at("partHash").get<std::string>()));
arguments.insert(std::make_pair("type", "uploadPartComplete"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::UPLOAD_COMPLETE:
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("fileSize", j.at("fileSize").get<int>()));
data.insert(std::make_pair("streamSize", j.at("streamSize").get<int>()));
data.insert(std::make_pair("storageSize", j.at("storageSize").get<int>()));
arguments.insert(std::make_pair("type", "uploadProgress"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::COMPLETE:
j = json::parse(msg);
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("size", j.at("fileSize").get<int>()));
data.insert(std::make_pair("url", j.at("url").get<std::string>()));
data.insert(std::make_pair("type", j.at("fileSize").get<int>()));
arguments.insert(std::make_pair("type", "complete"));
arguments.insert(std::make_pair("data", data));
break;
}
notifyEvent("uploadFileListener", arguments);
}
CB_I_S NewUploadFileListenCallBack(std::string id)
{
auto t = std::make_shared<UploadFileListenCallBack>(id);
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void UploadLogsListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::ON_PROGRESS:
j = json::parse(msg);
data.insert(std::make_pair("current", j.at("current").get<int>()));
data.insert(std::make_pair("size", j.at("size").get<int>()));
arguments.insert(std::make_pair("type", "onProgress"));
arguments.insert(std::make_pair("data", data));
break;
}
notifyEvent("uploadLogsListener", arguments);
}
CB_I_S NewUploadLogsListenCallBack()
{
auto t = std::make_shared<UploadLogsListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void UserListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::SELF_INFO_UPDATED:
arguments.insert(std::make_pair("type", "onSelfInfoUpdated"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::USER_STATUS_CHANGED:
arguments.insert(std::make_pair("type", "onUserStatusChanged"));
arguments.insert(std::make_pair("data", msg));
break;
}
notifyEvent("userListener", arguments);
}
CB_I_S NewUserListenCallBack()
{
auto t = std::make_shared<UserListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void AdvancedMsgListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::MSG_DELETED:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("message", msg));
arguments.insert(std::make_pair("type", "onMsgDeleted"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::NEW_RECV_MESSAGE_REVOKED:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("messageRevoked", msg));
arguments.insert(std::make_pair("type", "onNewRecvMessageRevoked"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::NEW_RECV_MESSAGE_EDIT:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("messageEdited", msg));
arguments.insert(std::make_pair("type", "onNewRecvMessageEdited"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::RECV_C2C_READ_RECEIPT:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("msgReceiptList", msg));
arguments.insert(std::make_pair("type", "onRecvC2CReadReceipt"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::RECV_NEW_MESSAGE:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("message", msg));
arguments.insert(std::make_pair("type", "onRecvNewMessage"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::RECV_OFFLINE_NEW_MESSAGE:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("message", msg));
arguments.insert(std::make_pair("type", "onRecvOfflineNewMessage"));
arguments.insert(std::make_pair("data", data));
break;
case ConstDefine::RECV_ONLINE_ONLY_MESSAGE:
data.insert(std::make_pair("id", id));
data.insert(std::make_pair("message", msg));
arguments.insert(std::make_pair("type", "onRecvOnlineOnlyMessage"));
arguments.insert(std::make_pair("data", data));
break;
}
notifyEvent("advancedMsgListener", arguments);
}
CB_I_S NewAdvancedMsgListenCallBack(std::string id)
{
auto t = std::make_shared<AdvancedMsgListenCallBack>(id);
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void MsgSendListenerCallBack::HandleCallback(const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress)
{
if (result == nullptr)
{
return;
}
if (state == 0 && progress == 0 && msg.empty())
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
data.insert(std::make_pair("clientMsgID", clientMsgID));
data.insert(std::make_pair("progress", progress));
arguments.insert(std::make_pair("type", "onProgress"));
arguments.insert(std::make_pair("data", data));
notifyEvent("msgSendProgressListener", arguments);
}
else
{
// Create shared pointers for the data to ensure copy constructibility
auto resultCopy = result;
auto dataCopy = std::make_shared<std::string>(msg);
auto errCodeCopy = state;
auto errMsgCopy = std::make_shared<std::string>(error);
// Ensure callback runs on the platform thread
ThreadUtil::RunOnPlatformThread([resultCopy, errCodeCopy, errMsgCopy, dataCopy]()
{
if (errCodeCopy == 0) {
resultCopy->Success(flutter::EncodableValue(*dataCopy));
} else {
resultCopy->Error(std::to_string(errCodeCopy), *errMsgCopy,
flutter::EncodableValue(*dataCopy));
} });
}
}
CB_S_I_S_S_I NewMsgSendCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result, std::string clientMsgID)
{
auto t = std::make_shared<MsgSendListenerCallBack>(result, clientMsgID);
auto f = [t](const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress)
{
t->HandleCallback(operationID, state, error, msg, progress);
};
return _wrapper_callonce_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void CustomBusinessListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::RECV_CUSTOM_BUSINESS_MESSAGE:
arguments.insert(std::make_pair("type", "onRecvCustomBusinessMessage"));
arguments.insert(std::make_pair("data", msg));
break;
}
notifyEvent("customBusinessListener", arguments);
}
CB_I_S NewCustomBusinessListenCallBack()
{
auto t = std::make_shared<CustomBusinessListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_callonce_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void GroupListenerCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
switch (ConstDefine(state))
{
case ConstDefine::GROUP_APPLICATION_ACCEPTED:
arguments.insert(std::make_pair("type", "onGroupApplicationAccepted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_APPLICATION_ADDED:
arguments.insert(std::make_pair("type", "onGroupApplicationAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_APPLICATION_DELETED:
arguments.insert(std::make_pair("type", "onGroupApplicationDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_APPLICATION_REJECTED:
arguments.insert(std::make_pair("type", "onGroupApplicationRejected"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_DISMISSED:
arguments.insert(std::make_pair("type", "onGroupDismissed"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_INFO_CHANGED:
arguments.insert(std::make_pair("type", "onGroupInfoChanged"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_MEMBER_ADDED:
arguments.insert(std::make_pair("type", "onGroupMemberAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_MEMBER_DELETED:
arguments.insert(std::make_pair("type", "onGroupMemberDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::GROUP_MEMBER_INFO_CHANGED:
arguments.insert(std::make_pair("type", "onGroupMemberInfoChanged"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::JOINED_GROUP_ADDED:
arguments.insert(std::make_pair("type", "onJoinedGroupAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::JOINED_GROUP_DELETED:
arguments.insert(std::make_pair("type", "onJoinedGroupDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
}
notifyEvent("groupListener", arguments);
}
CB_I_S NewGroupListenerCallBack()
{
auto t = std::make_shared<GroupListenerCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void ConversationListenerCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
json j;
switch (ConstDefine(state))
{
case ConstDefine::CONVERSATION_CHANGED:
arguments.insert(std::make_pair("type", "onConversationChanged"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CONVERSATION_USER_INPUT_STATUS_CHANGED:
arguments.insert(std::make_pair("type", "onConversationUserInputStatusChanged"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::NEW_CONVERSATION:
arguments.insert(std::make_pair("type", "onNewConversation"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::SYNC_SERVER_FAILED:
j = json::parse(msg);
arguments.insert(std::make_pair("type", "onSyncServerFailed"));
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
break;
case ConstDefine::SYNC_SERVER_FINISH:
j = json::parse(msg);
arguments.insert(std::make_pair("type", "onSyncServerFinish"));
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
break;
case ConstDefine::SYNC_SERVER_START:
j = json::parse(msg);
arguments.insert(std::make_pair("type", "onSyncServerStart"));
arguments.insert(std::make_pair("data", j.at("reinstalled").get<bool>()));
break;
case ConstDefine::SYNC_SERVER_PROGRESS:
j = json::parse(msg);
arguments.insert(std::make_pair("type", "onSyncServerProgress"));
arguments.insert(std::make_pair("data", j.at("progress").get<int>()));
break;
case ConstDefine::TOTAL_UNREAD_MESSAGE_COUNT_CHANGED:
j = json::parse(msg);
arguments.insert(std::make_pair("type", "onTotalUnreadMessageCountChanged"));
arguments.insert(std::make_pair("data", j.at("count").get<int>()));
break;
}
notifyEvent("conversationListener", arguments);
}
CB_I_S NewConversationListenerCallBack()
{
auto t = std::make_shared<ConversationListenerCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void FriendshipListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
switch (ConstDefine(state))
{
case ConstDefine::BLACK_ADDED:
arguments.insert(std::make_pair("type", "onBlackAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::BLACK_DELETED:
arguments.insert(std::make_pair("type", "onBlackDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_ADDED:
arguments.insert(std::make_pair("type", "onFriendAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_APPLICATION_ACCEPTED:
arguments.insert(std::make_pair("type", "onFriendApplicationAccepted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_APPLICATION_ADDED:
arguments.insert(std::make_pair("type", "onFriendApplicationAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_APPLICATION_DELETED:
arguments.insert(std::make_pair("type", "onFriendApplicationDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_APPLICATION_REJECTED:
arguments.insert(std::make_pair("type", "onFriendApplicationRejected"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_DELETED:
arguments.insert(std::make_pair("type", "onFriendDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::FRIEND_INFO_CHANGED:
arguments.insert(std::make_pair("type", "onFriendInfoChanged"));
arguments.insert(std::make_pair("data", msg));
break;
}
notifyEvent("friendListener", arguments);
}
CB_I_S NewFriendshipListenCallBack()
{
auto t = std::make_shared<FriendshipListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void ChannelListenCallBack::HandleCallback(int state, const std::string &msg)
{
flutter::EncodableMap arguments;
flutter::EncodableMap data;
switch (ConstDefine(state))
{
case ConstDefine::CHANNEL_DISMISSED:
arguments.insert(std::make_pair("type", "onChannelDismissed"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CHANNEL_INFO_CHANGED:
arguments.insert(std::make_pair("type", "onChannelInfoChanged"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CHANNEL_MEMBER_ADDED:
arguments.insert(std::make_pair("type", "onChannelMemberAdded"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CHANNEL_MEMBER_DELETED:
arguments.insert(std::make_pair("type", "onChannelMemberDeleted"));
arguments.insert(std::make_pair("data", msg));
break;
case ConstDefine::CHANNEL_MEMBER_INFO_CHANGED:
arguments.insert(std::make_pair("type", "onChannelMemberInfoChanged"));
arguments.insert(std::make_pair("data", msg));
break;
}
notifyEvent("channelListener", arguments);
}
CB_I_S NewChannelListenCallBack()
{
auto t = std::make_shared<ChannelListenCallBack>();
auto f = [t](int state, const std::string &msg)
{
t->HandleCallback(state, msg);
};
return _wrapper_cpp_function(f);
}

View File

@@ -1,58 +1,203 @@
#ifndef LISTEN_H
#define LISTEN_H
#include <libopenimsdk.h>
#include "flutter/encodable_value.h"
#include "flutter/method_result.h"
#include <libopenimsdk.h>
#include <functional>
#include <string>
#include <memory>
#include <iostream>
#include <bitset>
#include <atomic>
#include <thread>
#include <chrono>
#include <mutex>
#include "../ThreadUtil.h"
class BaseCallBack {
class BaseCallBack
{
public:
BaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
this->result = result;
}
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
void HandleCallback(char* opid, int errCode, char* errMsg, char* msg) {
if (result == nullptr) {
return;
}
if (errCode == 0) {
result->Success(flutter::EncodableValue(std::string(msg)));
}
else {
result->Error(std::to_string(errCode), std::string(errMsg), flutter::EncodableValue(std::string(msg)));
}
}
};
// 全局映射表
extern std::unordered_map<std::string, std::unique_ptr<BaseCallBack>> g_baseCallBackMap;
extern std::mutex g_baseCallBackMapMutex;
void NewBaseCallBack(std::string opid, std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void CallBaseCallBack(char* opid, int errCode, char* errMsg, char* msg);
//todo 没想好怎么实现
class uploadFileCallBack {
public:
uploadFileCallBack(std::string id) {
this->id = id;
BaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result_ptr)
: result(result_ptr)
{
}
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
void HandleCallback(const std::string &operationID, int errCode, const std::string &errMsg,
const std::string &data)
{
if (result == nullptr)
{
return;
}
// Create shared pointers for the data to ensure copy constructibility
auto resultCopy = result;
auto dataCopy = std::make_shared<std::string>(data);
auto errCodeCopy = errCode;
auto errMsgCopy = std::make_shared<std::string>(errMsg);
// Ensure callback runs on the platform thread
ThreadUtil::RunOnPlatformThread([resultCopy, errCodeCopy, errMsgCopy, dataCopy]()
{
if (errCodeCopy == 0) {
resultCopy->Success(flutter::EncodableValue(*dataCopy));
} else {
resultCopy->Error(std::to_string(errCodeCopy), *errMsgCopy,
flutter::EncodableValue(*dataCopy));
} });
}
};
CB_S_I_S_S NewBaseCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
/////////////////////////////////////////////////////////////////////////////////////////////////
class InitListenCallBack
{
public:
InitListenCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewInitListenCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class UploadFileListenCallBack
{
public:
UploadFileListenCallBack(std::string id) : id(id)
{
}
std::string id = "";
void HandleCallback(char* opid, int errCode, char* errMsg, char* msg) {
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewUploadFileListenCallBack(std::string id);
/////////////////////////////////////////////////////////////////////////////////////////////////
class UploadLogsListenCallBack
{
public:
UploadLogsListenCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewUploadLogsListenCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class UserListenCallBack
{
public:
UserListenCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewUserListenCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class AdvancedMsgListenCallBack
{
public:
AdvancedMsgListenCallBack(std::string id) : id(id)
{
}
std::string id = "";
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewAdvancedMsgListenCallBack(std::string id);
/////////////////////////////////////////////////////////////////////////////////////////////////
class MsgSendListenerCallBack
{
public:
MsgSendListenerCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result_ptr, std::string clientMsgID) : result(result_ptr), clientMsgID(clientMsgID)
{
}
std::string clientMsgID = "";
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result = nullptr;
void HandleCallback(const std::string &operationID, int state, const std::string &error, const std::string &msg, long progress);
};
CB_S_I_S_S_I NewMsgSendCallBack(std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result, std::string clientMsgID);
/////////////////////////////////////////////////////////////////////////////////////////////////
class CustomBusinessListenCallBack
{
public:
CustomBusinessListenCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewCustomBusinessListenCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class GroupListenerCallBack
{
public:
GroupListenerCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewGroupListenerCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
class ConversationListenerCallBack
{
public:
ConversationListenerCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewConversationListenerCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class FriendshipListenCallBack
{
public:
FriendshipListenCallBack()
{
}
void HandleCallback(int state, const std::string &msg);
};
CB_I_S NewFriendshipListenCallBack();
/////////////////////////////////////////////////////////////////////////////////////////////////
class ChannelListenCallBack {
public:
ChannelListenCallBack() {
}
void HandleCallback(int state, const std::string& msg);
};
CB_I_S NewChannelListenCallBack();
#endif

View File

@@ -0,0 +1,894 @@
#include "MessageManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
MessageManagerService::MessageManagerService() {
m_serviceName = "messageManager";
}
void MessageManagerService::onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (method == "setAdvancedMsgListener") {
setAdvancedMsgListener(arguments, result);
} else if (method == "sendMessage") {
sendMessage(arguments, result);
} else if (method == "revokeMessage") {
revokeMessage(arguments, result);
} else if (method == "editMessage") {
editMessage(arguments, result);
} else if (method == "deleteMessageFromLocalStorage") {
deleteMessageFromLocalStorage(arguments, result);
} else if (method == "deleteMessageFromLocalAndSvr") {
deleteMessageFromLocalAndSvr(arguments, result);
} else if (method == "deleteAllMsgFromLocal") {
deleteAllMsgFromLocal(arguments, result);
} else if (method == "deleteAllMsgFromLocalAndSvr") {
deleteAllMsgFromLocalAndSvr(arguments, result);
} else if (method == "insertSingleMessageToLocalStorage") {
insertSingleMessageToLocalStorage(arguments, result);
} else if (method == "insertGroupMessageToLocalStorage") {
insertGroupMessageToLocalStorage(arguments, result);
} else if (method == "markMessagesAsReadByMsgID") {
markMessagesAsReadByMsgID(arguments, result);
} else if (method == "typingStatusUpdate") {
typingStatusUpdate(arguments, result);
} else if (method == "createTextMessage") {
createTextMessage(arguments, result);
} else if (method == "createTextAtMessage") {
createTextAtMessage(arguments, result);
} else if (method == "createImageMessage") {
createImageMessage(arguments, result);
} else if (method == "createImageMessageFromFullPath") {
createImageMessageFromFullPath(arguments, result);
} else if (method == "createSoundMessage") {
createSoundMessage(arguments, result);
} else if (method == "createSoundMessageFromFullPath") {
createSoundMessageFromFullPath(arguments, result);
} else if (method == "createVideoMessage") {
createVideoMessage(arguments, result);
} else if (method == "createVideoMessageFromFullPath") {
createVideoMessageFromFullPath(arguments, result);
} else if (method == "createFileMessage") {
createFileMessage(arguments, result);
} else if (method == "createFileMessageFromFullPath") {
createFileMessageFromFullPath(arguments, result);
} else if (method == "createMergerMessage") {
createMergerMessage(arguments, result);
} else if (method == "createForwardMessage") {
createForwardMessage(arguments, result);
} else if (method == "createLocationMessage") {
createLocationMessage(arguments, result);
} else if (method == "createCustomMessage") {
createCustomMessage(arguments, result);
} else if (method == "createQuoteMessage") {
createQuoteMessage(arguments, result);
} else if (method == "createCardMessage") {
createCardMessage(arguments, result);
} else if (method == "createFaceMessage") {
createFaceMessage(arguments, result);
} else if (method == "createAdvancedTextMessage") {
createAdvancedTextMessage(arguments, result);
} else if (method == "createAdvancedQuoteMessage") {
createAdvancedQuoteMessage(arguments, result);
} else if (method == "searchLocalMessages") {
searchLocalMessages(arguments, result);
} else if (method == "clearConversationAndDeleteAllMsg") {
clearConversationAndDeleteAllMsg(arguments, result);
} else if (method == "getAdvancedHistoryMessageList") {
getAdvancedHistoryMessageList(arguments, result);
} else if (method == "getAdvancedHistoryMessageListReverse") {
getAdvancedHistoryMessageListReverse(arguments, result);
} else if (method == "findMessageList") {
findMessageList(arguments, result);
} else if (method == "setMessageLocalEx") {
setMessageLocalEx(arguments, result);
} else if (method == "setAppBadge") {
setAppBadge(arguments, result);
} else if (method == "sendMessageNotOss") {
sendMessageNotOss(arguments, result);
} else if (method == "createImageMessageByURL") {
createImageMessageByURL(arguments, result);
} else if (method == "createSoundMessageByURL") {
createSoundMessageByURL(arguments, result);
} else if (method == "createVideoMessageByURL") {
createVideoMessageByURL(arguments, result);
} else if (method == "createFileMessageByURL") {
createFileMessageByURL(arguments, result);
} else if (method == "fetchSurroundingMessages") {
fetchSurroundingMessages(arguments, result);
} else if (method == "setCustomBusinessListener") {
setCustomBusinessListener(arguments, result);
} else {
result->NotImplemented();
}
}
void MessageManagerService::setAdvancedMsgListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
auto id = zego_value_get_string(arguments->at(flutter::EncodableValue("id")));
set_advanced_msg_listener(NewAdvancedMsgListenCallBack(id));
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::sendMessage(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto offlinePushInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("offlinePushInfo")));
auto isOnlineOnly = zego_value_get_bool(arguments->at(flutter::EncodableValue("isOnlineOnly")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
char* offlinePushInfo_cs = const_cast<char*>(offlinePushInfo.c_str());
send_message(NewMsgSendCallBack(result,clientMsgID), operationID_cs, message_cs, userID_cs, groupID_cs, channelID_cs, offlinePushInfo_cs, isOnlineOnly);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::revokeMessage(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
revoke_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::editMessage(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
auto message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
edit_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs, message_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::deleteMessageFromLocalStorage(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
delete_message_from_local_storage(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::deleteMessageFromLocalAndSvr(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
delete_message(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::deleteAllMsgFromLocal(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
delete_all_msg_from_local(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::deleteAllMsgFromLocalAndSvr(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
delete_all_msg_from_local_and_svr(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::insertSingleMessageToLocalStorage(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
auto receiverID = zego_value_get_string(arguments->at(flutter::EncodableValue("receiverID")));
auto senderID = zego_value_get_string(arguments->at(flutter::EncodableValue("senderID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
char* receiverID_cs = const_cast<char*>(receiverID.c_str());
char* senderID_cs = const_cast<char*>(senderID.c_str());
insert_single_message_to_local_storage(NewBaseCallBack(result), operationID_cs, message_cs, receiverID_cs, senderID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::insertGroupMessageToLocalStorage(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto channelID = zego_value_get_string(arguments->at(flutter::EncodableValue("channelID")));
auto senderID = zego_value_get_string(arguments->at(flutter::EncodableValue("senderID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* channelID_cs = const_cast<char*>(channelID.c_str());
char* senderID_cs = const_cast<char*>(senderID.c_str());
insert_group_message_to_local_storage(NewBaseCallBack(result), operationID_cs, message_cs, groupID_cs, channelID_cs, senderID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::markMessagesAsReadByMsgID(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto messageIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("messageIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* messageIDList_cs = const_cast<char*>(messageIDList.c_str());
mark_messages_as_read_by_msg_id(NewBaseCallBack(result), operationID_cs, conversationID_cs, messageIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::typingStatusUpdate(
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 userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto msgTip = zego_value_get_string(arguments->at(flutter::EncodableValue("msgTip")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
char* msgTip_cs = const_cast<char*>(msgTip.c_str());
typing_status_update(NewBaseCallBack(result), operationID_cs, userID_cs, msgTip_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createTextMessage(
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 text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* text_cs = const_cast<char*>(text.c_str());
std::string message = create_text_message(operationID_cs, text_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createTextAtMessage(
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 text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
auto atUserIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("atUserIDList")));
auto atUserInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("atUserInfoList")));
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* text_cs = const_cast<char*>(text.c_str());
char* atUserIDList_cs = const_cast<char*>(atUserIDList.c_str());
char* atUserInfoList_cs = const_cast<char*>(atUserInfoList.c_str());
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
std::string message = create_text_at_message(operationID_cs, text_cs, atUserIDList_cs, atUserInfoList_cs, quoteMessage_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createImageMessage(
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 imagePath = zego_value_get_string(arguments->at(flutter::EncodableValue("imagePath")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* imagePath_cs = const_cast<char*>(imagePath.c_str());
std::string message = create_image_message(operationID_cs, imagePath_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createImageMessageFromFullPath(
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 imagePath = zego_value_get_string(arguments->at(flutter::EncodableValue("imagePath")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* imagePath_cs = const_cast<char*>(imagePath.c_str());
std::string message = create_image_message_from_full_path(operationID_cs, imagePath_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createSoundMessage(
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 soundPath = zego_value_get_string(arguments->at(flutter::EncodableValue("soundPath")));
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* soundPath_cs = const_cast<char*>(soundPath.c_str());
std::string message = create_sound_message(operationID_cs, soundPath_cs, duration);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createSoundMessageFromFullPath(
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 soundPath = zego_value_get_string(arguments->at(flutter::EncodableValue("soundPath")));
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* soundPath_cs = const_cast<char*>(soundPath.c_str());
std::string message = create_sound_message_from_full_path(operationID_cs, soundPath_cs, duration);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createVideoMessage(
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 videoPath = zego_value_get_string(arguments->at(flutter::EncodableValue("videoPath")));
auto videoType = zego_value_get_string(arguments->at(flutter::EncodableValue("videoType")));
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
auto snapshotPath = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPath")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* videoPath_cs = const_cast<char*>(videoPath.c_str());
char* videoType_cs = const_cast<char*>(videoType.c_str());
char* snapshotPath_cs = const_cast<char*>(snapshotPath.c_str());
std::string message = create_video_message(operationID_cs, videoPath_cs, videoType_cs, duration, snapshotPath_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createVideoMessageFromFullPath(
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 videoPath = zego_value_get_string(arguments->at(flutter::EncodableValue("videoPath")));
auto videoType = zego_value_get_string(arguments->at(flutter::EncodableValue("videoType")));
auto duration = zego_value_get_int(arguments->at(flutter::EncodableValue("duration")));
auto snapshotPath = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPath")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* videoPath_cs = const_cast<char*>(videoPath.c_str());
char* videoType_cs = const_cast<char*>(videoType.c_str());
char* snapshotPath_cs = const_cast<char*>(snapshotPath.c_str());
std::string message = create_video_message_from_full_path(operationID_cs, videoPath_cs, videoType_cs, duration, snapshotPath_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createFileMessage(
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 filePath = zego_value_get_string(arguments->at(flutter::EncodableValue("filePath")));
auto fileName = zego_value_get_string(arguments->at(flutter::EncodableValue("fileName")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* filePath_cs = const_cast<char*>(filePath.c_str());
char* fileName_cs = const_cast<char*>(fileName.c_str());
std::string message = create_file_message(operationID_cs, filePath_cs, fileName_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createFileMessageFromFullPath(
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 filePath = zego_value_get_string(arguments->at(flutter::EncodableValue("filePath")));
auto fileName = zego_value_get_string(arguments->at(flutter::EncodableValue("fileName")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* filePath_cs = const_cast<char*>(filePath.c_str());
char* fileName_cs = const_cast<char*>(fileName.c_str());
std::string message = create_file_message_from_full_path(operationID_cs, filePath_cs, fileName_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createMergerMessage(
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 messageList = zego_value_get_string(arguments->at(flutter::EncodableValue("messageList")));
auto title = zego_value_get_string(arguments->at(flutter::EncodableValue("title")));
auto summaryList = zego_value_get_string(arguments->at(flutter::EncodableValue("summaryList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* messageList_cs = const_cast<char*>(messageList.c_str());
char* title_cs = const_cast<char*>(title.c_str());
char* summaryList_cs = const_cast<char*>(summaryList.c_str());
std::string message = create_merger_message(operationID_cs, messageList_cs, title_cs, summaryList_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createForwardMessage(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
std::string resultMessage = create_forward_message(operationID_cs, message_cs);
result->Success(flutter::EncodableValue(resultMessage));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createLocationMessage(
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 description = zego_value_get_string(arguments->at(flutter::EncodableValue("description")));
auto longitude = zego_value_get_double(arguments->at(flutter::EncodableValue("longitude")));
auto latitude = zego_value_get_double(arguments->at(flutter::EncodableValue("latitude")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* description_cs = const_cast<char*>(description.c_str());
std::string message = create_location_message(operationID_cs, description_cs, longitude, latitude);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createCustomMessage(
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 data = zego_value_get_string(arguments->at(flutter::EncodableValue("data")));
auto extension = zego_value_get_string(arguments->at(flutter::EncodableValue("extension")));
auto description = zego_value_get_string(arguments->at(flutter::EncodableValue("description")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* data_cs = const_cast<char*>(data.c_str());
char* extension_cs = const_cast<char*>(extension.c_str());
char* description_cs = const_cast<char*>(description.c_str());
std::string message = create_custom_message(operationID_cs, data_cs, extension_cs, description_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createQuoteMessage(
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 quoteText = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteText")));
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* quoteText_cs = const_cast<char*>(quoteText.c_str());
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
std::string message = create_quote_message(operationID_cs, quoteText_cs, quoteMessage_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createCardMessage(
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 cardMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("cardMessage")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* cardMessage_cs = const_cast<char*>(cardMessage.c_str());
std::string message = create_card_message(operationID_cs, cardMessage_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createFaceMessage(
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 index = zego_value_get_int(arguments->at(flutter::EncodableValue("index")));
auto data = zego_value_get_string(arguments->at(flutter::EncodableValue("data")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* data_cs = const_cast<char*>(data.c_str());
std::string message = create_face_message(operationID_cs, index, data_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createAdvancedTextMessage(
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 text = zego_value_get_string(arguments->at(flutter::EncodableValue("text")));
auto richMessageInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("richMessageInfoList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* text_cs = const_cast<char*>(text.c_str());
char* richMessageInfoList_cs = const_cast<char*>(richMessageInfoList.c_str());
std::string message = create_advanced_text_message(operationID_cs, text_cs, richMessageInfoList_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createAdvancedQuoteMessage(
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 quoteText = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteText")));
auto quoteMessage = zego_value_get_string(arguments->at(flutter::EncodableValue("quoteMessage")));
auto richMessageInfoList = zego_value_get_string(arguments->at(flutter::EncodableValue("richMessageInfoList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* quoteText_cs = const_cast<char*>(quoteText.c_str());
char* quoteMessage_cs = const_cast<char*>(quoteMessage.c_str());
char* richMessageInfoList_cs = const_cast<char*>(richMessageInfoList.c_str());
std::string message = create_advanced_quote_message(operationID_cs, quoteText_cs, quoteMessage_cs, richMessageInfoList_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::searchLocalMessages(
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 filter = zego_value_get_string(arguments->at(flutter::EncodableValue("filter")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* filter_cs = const_cast<char*>(filter.c_str());
search_local_messages(NewBaseCallBack(result), operationID_cs, filter_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::clearConversationAndDeleteAllMsg(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
clear_conversation_and_delete_all_msg(NewBaseCallBack(result), operationID_cs, conversationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::getAdvancedHistoryMessageList(
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 params = map_2_json(*arguments);
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* params_cs = const_cast<char*>(params.c_str());
get_advanced_history_message_list(NewBaseCallBack(result), operationID_cs, params_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::getAdvancedHistoryMessageListReverse(
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 params = map_2_json(*arguments);
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* params_cs = const_cast<char*>(params.c_str());
get_advanced_history_message_list_reverse(NewBaseCallBack(result), operationID_cs, params_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::findMessageList(
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 searchParams = zego_value_get_string(arguments->at(flutter::EncodableValue("searchParams")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* searchParams_cs = const_cast<char*>(searchParams.c_str());
find_message_list(NewBaseCallBack(result), operationID_cs, searchParams_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::setMessageLocalEx(
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 conversationID = zego_value_get_string(arguments->at(flutter::EncodableValue("conversationID")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
auto localEx = zego_value_get_string(arguments->at(flutter::EncodableValue("localEx")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* conversationID_cs = const_cast<char*>(conversationID.c_str());
char* clientMsgID_cs = const_cast<char*>(clientMsgID.c_str());
char* localEx_cs = const_cast<char*>(localEx.c_str());
set_message_local_ex(NewBaseCallBack(result), operationID_cs, conversationID_cs, clientMsgID_cs, localEx_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::setAppBadge(
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 count = zego_value_get_int(arguments->at(flutter::EncodableValue("count")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
set_app_Badge(NewBaseCallBack(result), operationID_cs, count);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::sendMessageNotOss(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
auto userID = zego_value_get_string(arguments->at(flutter::EncodableValue("userID")));
auto groupID = zego_value_get_string(arguments->at(flutter::EncodableValue("groupID")));
auto channelId = zego_value_get_string(arguments->at(flutter::EncodableValue("channelId")));
auto offlinePushInfo = zego_value_get_string(arguments->at(flutter::EncodableValue("offlinePushInfo")));
auto clientMsgID = zego_value_get_string(arguments->at(flutter::EncodableValue("clientMsgID")));
auto isOnlineOnly = zego_value_get_bool(arguments->at(flutter::EncodableValue("isOnlineOnly")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
char* userID_cs = const_cast<char*>(userID.c_str());
char* groupID_cs = const_cast<char*>(groupID.c_str());
char* channelId_cs = const_cast<char*>(channelId.c_str());
char* offlinePushInfo_cs = const_cast<char*>(offlinePushInfo.c_str());
send_message_not_oss(NewMsgSendCallBack(result,clientMsgID), operationID_cs, message_cs, userID_cs, groupID_cs, channelId_cs, offlinePushInfo_cs, isOnlineOnly);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createImageMessageByURL(
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 sourcePath = zego_value_get_string(arguments->at(flutter::EncodableValue("sourcePath")));
auto sourcePicture = zego_value_get_string(arguments->at(flutter::EncodableValue("sourcePicture")));
auto bigPicture = zego_value_get_string(arguments->at(flutter::EncodableValue("bigPicture")));
auto snapshotPicture = zego_value_get_string(arguments->at(flutter::EncodableValue("snapshotPicture")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* sourcePath_cs = const_cast<char*>(sourcePath.c_str());
char* sourcePicture_cs = const_cast<char*>(sourcePicture.c_str());
char* bigPicture_cs = const_cast<char*>(bigPicture.c_str());
char* snapshotPicture_cs = const_cast<char*>(snapshotPicture.c_str());
std::string message = create_image_message_by_url(operationID_cs, sourcePath_cs, sourcePicture_cs, bigPicture_cs, snapshotPicture_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createSoundMessageByURL(
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 soundElem = zego_value_get_string(arguments->at(flutter::EncodableValue("soundElem")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* soundElem_cs = const_cast<char*>(soundElem.c_str());
std::string message = create_sound_message_by_url(operationID_cs, soundElem_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createVideoMessageByURL(
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 videoElem = zego_value_get_string(arguments->at(flutter::EncodableValue("videoElem")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* videoElem_cs = const_cast<char*>(videoElem.c_str());
std::string message = create_video_message_by_url(operationID_cs, videoElem_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::createFileMessageByURL(
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 fileElem = zego_value_get_string(arguments->at(flutter::EncodableValue("fileElem")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* fileElem_cs = const_cast<char*>(fileElem.c_str());
std::string message = create_file_message_by_url(operationID_cs, fileElem_cs);
result->Success(flutter::EncodableValue(message));
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::fetchSurroundingMessages(
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 message = zego_value_get_string(arguments->at(flutter::EncodableValue("message")));
auto before = zego_value_get_int(arguments->at(flutter::EncodableValue("before")));
auto after = zego_value_get_int(arguments->at(flutter::EncodableValue("after")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* message_cs = const_cast<char*>(message.c_str());
fetch_surrounding_messages(NewBaseCallBack(result), operationID_cs, message_cs, before, after);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void MessageManagerService::setCustomBusinessListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
set_custom_business_listener(NewCustomBusinessListenCallBack());
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -0,0 +1,159 @@
#ifndef MESSAGE_MANAGER_SERVICE_H
#define MESSAGE_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class MessageManagerService : public FLTService {
public:
MessageManagerService();
void onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setAdvancedMsgListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void sendMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void revokeMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void editMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteMessageFromLocalStorage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteMessageFromLocalAndSvr(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteAllMsgFromLocal(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void deleteAllMsgFromLocalAndSvr(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void insertSingleMessageToLocalStorage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void insertGroupMessageToLocalStorage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void markMessagesAsReadByMsgID(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void typingStatusUpdate(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createTextMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createTextAtMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createImageMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createImageMessageFromFullPath(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createSoundMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createSoundMessageFromFullPath(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createVideoMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createVideoMessageFromFullPath(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createFileMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createFileMessageFromFullPath(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createMergerMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createForwardMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createLocationMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createCustomMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createQuoteMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createCardMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createFaceMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createAdvancedTextMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createAdvancedQuoteMessage(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void searchLocalMessages(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void clearConversationAndDeleteAllMsg(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getAdvancedHistoryMessageList(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getAdvancedHistoryMessageListReverse(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void findMessageList(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setMessageLocalEx(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setAppBadge(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void sendMessageNotOss(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createImageMessageByURL(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createSoundMessageByURL(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createVideoMessageByURL(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void createFileMessageByURL(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void fetchSurroundingMessages(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setCustomBusinessListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // MESSAGE_MANAGER_SERVICE_H

View File

@@ -0,0 +1,150 @@
#include "UserManager.h"
#include <libopenimsdk.h>
#include "../NimResult.h"
#include "../ZegoDataUtils.h"
#include "ConstDefine.h"
#include "Listen.h"
UserManagerService::UserManagerService() {
m_serviceName = "userManager";
}
void UserManagerService::onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (method == "setUserListener") {
setUserListener(arguments, result);
} else if (method == "getUsersInfo") {
getUsersInfo(arguments, result);
} else if (method == "setSelfInfo") {
setSelfInfo(arguments, result);
} else if (method == "getSelfUserInfo") {
getSelfUserInfo(arguments, result);
} else if (method == "subscribeUsersStatus") {
subscribeUsersStatus(arguments, result);
} else if (method == "unsubscribeUsersStatus") {
unsubscribeUsersStatus(arguments, result);
} else if (method == "getSubscribeUsersStatus") {
getSubscribeUsersStatus(arguments, result);
} else if (method == "getUserStatus") {
getUserStatus(arguments, result);
} else {
result->NotImplemented();
}
}
void UserManagerService::setUserListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (arguments) {
set_user_listener(NewUserListenCallBack());
result->Success(flutter::EncodableValue());
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::getUsersInfo(
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 userIDList = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDList")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userIDList_cs = const_cast<char*>(userIDList.c_str());
get_users_info(NewBaseCallBack(result), operationID_cs, userIDList_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::setSelfInfo(
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 userInfo = map_2_json(*arguments);
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userInfo_cs = const_cast<char*>(userInfo.c_str());
set_self_info(NewBaseCallBack(result), operationID_cs, userInfo_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::getSelfUserInfo(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_self_user_info(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::subscribeUsersStatus(
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 userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
subscribe_users_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::unsubscribeUsersStatus(
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 userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
unsubscribe_users_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::getSubscribeUsersStatus(
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")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
get_subscribe_users_status(NewBaseCallBack(result), operationID_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}
void UserManagerService::getUserStatus(
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 userIDs = zego_value_get_string(arguments->at(flutter::EncodableValue("userIDs")));
char* operationID_cs = const_cast<char*>(operationID.c_str());
char* userIDs_cs = const_cast<char*>(userIDs.c_str());
get_user_status(NewBaseCallBack(result), operationID_cs, userIDs_cs);
} else {
result->Error("INVALID_ARGUMENT", "Arguments cannot be null");
}
}

View File

@@ -0,0 +1,49 @@
#ifndef USER_MANAGER_SERVICE_H
#define USER_MANAGER_SERVICE_H
#include "../FLTService.h"
#include "Listen.h"
#include <flutter/standard_method_codec.h>
#include <memory>
#include <string>
class UserManagerService : public FLTService {
public:
UserManagerService();
void onMethodCalled(
const std::string& method,
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
// Method handlers
void setUserListener(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getUsersInfo(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void setSelfInfo(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getSelfUserInfo(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void subscribeUsersStatus(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void unsubscribeUsersStatus(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getSubscribeUsersStatus(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
void getUserStatus(
const flutter::EncodableMap* arguments,
std::shared_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
private:
std::string m_serviceName;
};
#endif // USER_MANAGER_SERVICE_H