parent
fb56f7747a
commit
a3752065fa
@ -0,0 +1,32 @@ |
||||
package io.openim.flutter_openim_sdk.listener; |
||||
|
||||
import io.openim.flutter_openim_sdk.util.CommonUtil; |
||||
|
||||
public class OnChannelListener implements open_im_sdk_callback.OnChannelListener { |
||||
|
||||
@Override |
||||
public void onChannelDismissed(String s) { |
||||
CommonUtil.emitEvent("channelListener", "onChannelDismissed", s); |
||||
} |
||||
|
||||
@Override |
||||
public void onChannelInfoChanged(String s) { |
||||
CommonUtil.emitEvent("channelListener", "onChannelInfoChanged", s); |
||||
} |
||||
|
||||
@Override |
||||
public void onChannelMemberAdded(String s) { |
||||
CommonUtil.emitEvent("channelListener", "onChannelMemberAdded", s); |
||||
} |
||||
|
||||
@Override |
||||
public void onChannelMemberDeleted(String s) { |
||||
CommonUtil.emitEvent("channelListener", "onChannelMemberDeleted", s); |
||||
} |
||||
|
||||
@Override |
||||
public void onChannelMemberInfoChanged(String s) { |
||||
CommonUtil.emitEvent("channelListener", "onChannelMemberInfoChanged", s); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,103 @@ |
||||
package io.openim.flutter_openim_sdk.manager; |
||||
|
||||
import io.flutter.plugin.common.MethodCall; |
||||
import io.flutter.plugin.common.MethodChannel; |
||||
import io.openim.flutter_openim_sdk.listener.OnBaseListener; |
||||
import io.openim.flutter_openim_sdk.listener.OnChannelListener; |
||||
import open_im_sdk.Open_im_sdk; |
||||
|
||||
public class ChannelManager extends BaseManager { |
||||
|
||||
public void setChannelListener(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.setChannelListener(new OnChannelListener()); |
||||
|
||||
result.success(null); |
||||
} |
||||
|
||||
|
||||
public void getChannelMembersInfo(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.getSpecifiedChannelMembersInfo( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
jsonValue(methodCall, "userIDList") |
||||
); |
||||
} |
||||
|
||||
public void getChannelMemberList(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.getChannelMemberList( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
value(methodCall, "filter"), |
||||
value(methodCall, "offset"), |
||||
value(methodCall, "count") |
||||
); |
||||
} |
||||
|
||||
|
||||
public void getChannelsInfo(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.getSpecifiedChannelsInfo( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
jsonValue(methodCall, "channelIDList") |
||||
); |
||||
} |
||||
|
||||
public void joinChannel(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.joinChannel( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
value(methodCall, "reason"), |
||||
value(methodCall, "joinSource"), |
||||
value(methodCall, "ex") |
||||
); |
||||
} |
||||
|
||||
public void quitChannel(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.quitChannel( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID") |
||||
); |
||||
} |
||||
|
||||
|
||||
|
||||
public void changeChannelMute(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.changeChannelMute( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
value(methodCall, "mute") |
||||
); |
||||
} |
||||
|
||||
public void changeChannelMemberMute(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.changeChannelMemberMute( |
||||
new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
value(methodCall, "userID"), |
||||
int2long(methodCall, "seconds") |
||||
); |
||||
} |
||||
|
||||
|
||||
|
||||
public void isJoinChannel(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.isJoinChannel(new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID") |
||||
); |
||||
} |
||||
|
||||
public void getUsersInChannel(MethodCall methodCall, MethodChannel.Result result) { |
||||
Open_im_sdk.getUsersInChannel(new OnBaseListener(result, methodCall), |
||||
value(methodCall, "operationID"), |
||||
value(methodCall, "channelID"), |
||||
jsonValue(methodCall, "userIDs") |
||||
); |
||||
} |
||||
} |
@ -0,0 +1,101 @@ |
||||
import Foundation |
||||
import OpenIMCore |
||||
|
||||
public class ChannelManager: BaseServiceManager { |
||||
|
||||
public override func registerHandlers() { |
||||
super.registerHandlers() |
||||
|
||||
// self["changeChannelMemberMute"] = changeChannelMemberMute |
||||
// self["changeChannelMute"] = changeChannelMute |
||||
|
||||
// self["getChannelMemberList"] = getChannelMemberList |
||||
|
||||
|
||||
self["getChannelMembersInfo"] = getChannelMembersInfo |
||||
self["getChannelsInfo"] = getChannelsInfo |
||||
|
||||
|
||||
self["getUsersInChannel"] = getUsersInChannel |
||||
self["isJoinChannel"] = isJoinChannel |
||||
self["joinChannel"] = joinChannel |
||||
self["quitChannel"] = quitChannel |
||||
self["setChannelListener"] = setChannelListener |
||||
|
||||
} |
||||
|
||||
// func changeChannelMemberMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
// Open_im_sdkChangeChannelMemberMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[string:"userID"], methodCall[int:"seconds"]) |
||||
// } |
||||
// |
||||
// func changeChannelMute(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
// Open_im_sdkChangeChannelMute(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[bool: "mute"]) |
||||
// } |
||||
// |
||||
// func getChannelMemberList(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
// Open_im_sdkGetChannelMemberList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[int32: "filter"], |
||||
// methodCall[int32: "offset"], methodCall[int32: "count"]) |
||||
// } |
||||
|
||||
func getChannelMembersInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkGetSpecifiedChannelMembersInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[jsonString: "userIDList"]) |
||||
} |
||||
|
||||
func getChannelsInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkGetSpecifiedChannelsInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "channelIDList"]) |
||||
} |
||||
|
||||
func getUsersInChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkGetUsersInChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], |
||||
methodCall[jsonString: "userIDs"]) |
||||
} |
||||
|
||||
func isJoinChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkIsJoinChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"]) |
||||
} |
||||
|
||||
func joinChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkJoinChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"], methodCall[string: |
||||
"reason"], methodCall[int32: "joinSource"], methodCall[jsonString: "ex"]) |
||||
} |
||||
|
||||
|
||||
func quitChannel(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkQuitChannel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "channelID"]) |
||||
} |
||||
|
||||
func setChannelListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { |
||||
Open_im_sdkSetChannelListener(ChannelListener(channel: channel)) |
||||
callBack(result) |
||||
} |
||||
} |
||||
|
||||
public class ChannelListener: NSObject, Open_im_sdk_callbackOnChannelListenerProtocol { |
||||
|
||||
private let channel: FlutterMethodChannel |
||||
|
||||
init(channel: FlutterMethodChannel) { |
||||
self.channel = channel |
||||
} |
||||
|
||||
public func onChannelDismissed(_ s: String?) { |
||||
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelDismissed", errCode: nil, errMsg: nil, data: s) |
||||
} |
||||
|
||||
public func onChannelInfoChanged(_ s: String?) { |
||||
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelInfoChanged", errCode: nil, errMsg: nil, data: s) |
||||
} |
||||
|
||||
public func onChannelMemberAdded(_ s: String?) { |
||||
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberAdded", errCode: nil, errMsg: nil, data: s) |
||||
} |
||||
|
||||
public func onChannelMemberDeleted(_ s: String?) { |
||||
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberDeleted", errCode: nil, errMsg: nil, data: s) |
||||
} |
||||
|
||||
public func onChannelMemberInfoChanged(_ s: String?) { |
||||
CommonUtil.emitEvent(channel: channel, method: "channelListener", type: "onChannelMemberInfoChanged", errCode: nil, errMsg: nil, data: s) |
||||
} |
||||
|
||||
} |
@ -0,0 +1,60 @@ |
||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; |
||||
|
||||
import '../models/channel_info.dart'; |
||||
|
||||
/// Channel Listener |
||||
class OnChannelListener { |
||||
|
||||
Function(ChannelInfo info)? onChannelDismissed; |
||||
Function(ChannelInfo info)? onChannelInfoChanged; |
||||
Function(ChannelMembersInfo info)? onChannelMemberAdded; |
||||
Function(ChannelMembersInfo info)? onChannelMemberDeleted; |
||||
Function(ChannelMembersInfo info)? onChannelMemberInfoChanged; |
||||
Function(ChannelInfo info)? onJoinedChannelAdded; |
||||
Function(ChannelInfo info)? onJoinedChannelDeleted; |
||||
|
||||
OnChannelListener({ |
||||
this.onChannelDismissed, |
||||
this.onChannelInfoChanged, |
||||
this.onChannelMemberAdded, |
||||
this.onChannelMemberDeleted, |
||||
this.onChannelMemberInfoChanged, |
||||
this.onJoinedChannelAdded, |
||||
this.onJoinedChannelDeleted, |
||||
}); |
||||
|
||||
|
||||
void channelDismissed(ChannelInfo info) { |
||||
onChannelDismissed?.call(info); |
||||
} |
||||
|
||||
/// Channel information changed |
||||
void channelInfoChanged(ChannelInfo info) { |
||||
onChannelInfoChanged?.call(info); |
||||
} |
||||
|
||||
/// Channel member added |
||||
void channelMemberAdded(ChannelMembersInfo info) { |
||||
onChannelMemberAdded?.call(info); |
||||
} |
||||
|
||||
/// Channel member deleted |
||||
void channelMemberDeleted(ChannelMembersInfo info) { |
||||
onChannelMemberDeleted?.call(info); |
||||
} |
||||
|
||||
/// Channel member information changed |
||||
void channelMemberInfoChanged(ChannelMembersInfo info) { |
||||
onChannelMemberInfoChanged?.call(info); |
||||
} |
||||
|
||||
/// Joined channel added |
||||
void joinedChannelAdded(ChannelInfo info) { |
||||
onJoinedChannelAdded?.call(info); |
||||
} |
||||
|
||||
/// Joined channel deleted |
||||
void joinedChannelDeleted(ChannelInfo info) { |
||||
onJoinedChannelDeleted?.call(info); |
||||
} |
||||
} |
@ -0,0 +1,323 @@ |
||||
import 'dart:developer'; |
||||
|
||||
import 'package:flutter/services.dart'; |
||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; |
||||
import 'package:flutter_openim_sdk/src/models/set_channel_member_info.dart'; |
||||
|
||||
import '../listener/channel_listener.dart'; |
||||
import '../models/channel_info.dart'; |
||||
|
||||
class ChannelManager { |
||||
MethodChannel _channel; |
||||
late OnChannelListener listener; |
||||
|
||||
ChannelManager(this._channel); |
||||
|
||||
/// Channel relationship listener |
||||
Future setChannelListener(OnChannelListener listener) { |
||||
this.listener = listener; |
||||
return _channel.invokeMethod('setChannelListener', _buildParam({})); |
||||
} |
||||
|
||||
/// Query channel member information |
||||
/// [channelID] Channel ID |
||||
/// [userIDList] List of user IDs |
||||
Future<List<ChannelMembersInfo>> getChannelMembersInfo({ |
||||
required String channelID, |
||||
required List<String> userIDList, |
||||
String? operationID, |
||||
}) => |
||||
_channel |
||||
.invokeMethod( |
||||
'getChannelMembersInfo', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'userIDList': userIDList, |
||||
"operationID": Utils.checkOperationID(operationID), |
||||
})) |
||||
.then((value) => |
||||
Utils.toList(value, (map) => ChannelMembersInfo.fromJson(map))); |
||||
|
||||
/// Paginate and retrieve the channel member list |
||||
/// [channelID] Channel ID |
||||
/// [filter] Member filter (0: All, 1: Channel owner, 2: Administrator, 3: Regular member, 4: Admin + Regular member, 5: Channel owner + Admin) |
||||
/// [offset] Starting index |
||||
/// [count] Total count |
||||
Future<List<ChannelMembersInfo>> getChannelMemberList({ |
||||
required String channelID, |
||||
int filter = 0, |
||||
int offset = 0, |
||||
int count = 0, |
||||
String? operationID, |
||||
}) => |
||||
_channel |
||||
.invokeMethod( |
||||
'getChannelMemberList', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'filter': filter, |
||||
'offset': offset, |
||||
'count': count, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})) |
||||
.then((value) => |
||||
Utils.toList(value, (map) => ChannelMembersInfo.fromJson(map))); |
||||
|
||||
// /// Paginate and retrieve the channel member list as a map |
||||
// /// [channelID] Channel ID |
||||
// /// [filter] Member filter (0: All, 1: Channel owner, 2: Administrator, 3: Regular member, 4: Admin + Regular member, 5: Channel owner + Admin) |
||||
// /// [offset] Starting index |
||||
// /// [count] Total count |
||||
// Future<List<dynamic>> getChannelMemberListMap({ |
||||
// required String channelID, |
||||
// int filter = 0, |
||||
// int offset = 0, |
||||
// int count = 0, |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'getChannelMemberList', |
||||
// _buildParam({ |
||||
// 'channelID': channelID, |
||||
// 'filter': filter, |
||||
// 'offset': offset, |
||||
// 'count': count, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toListMap(value)); |
||||
|
||||
// /// Query the list of joined channels |
||||
// Future<List<ChannelInfo>> getJoinedChannelList({String? operationID}) => _channel |
||||
// .invokeMethod( |
||||
// 'getJoinedChannelList', |
||||
// _buildParam({ |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toList(value, (map) => ChannelInfo.fromJson(map))); |
||||
// |
||||
// Future<List<ChannelInfo>> getJoinedChannelListPage({String? operationID, int offset = 0, int count = 40}) => _channel |
||||
// .invokeMethod( |
||||
// 'getJoinedChannelListPage', |
||||
// _buildParam({ |
||||
// 'offset': offset, |
||||
// 'count': count, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toList(value, (map) => ChannelInfo.fromJson(map))); |
||||
|
||||
// /// Query the list of joined channels |
||||
// Future<List<dynamic>> getJoinedChannelListMap({String? operationID}) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'getJoinedChannelList', |
||||
// _buildParam({ |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toListMap(value)); |
||||
|
||||
/// Check if the user has joined a channel |
||||
/// [channelID] Channel ID |
||||
Future<bool> isJoinedChannel({ |
||||
required String channelID, |
||||
String? operationID, |
||||
}) => |
||||
_channel |
||||
.invokeMethod( |
||||
'isJoinChannel', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})) |
||||
.then((value) => value == 'true' ? true : false); |
||||
|
||||
/// Query channel information |
||||
Future<List<ChannelInfo>> getChannelsInfo({ |
||||
required List<String> channelIDList, |
||||
String? operationID, |
||||
}) => |
||||
_channel |
||||
.invokeMethod( |
||||
'getChannelsInfo', |
||||
_buildParam({ |
||||
'channelIDList': channelIDList, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})) |
||||
.then((value) => |
||||
Utils.toList(value, (map) => ChannelInfo.fromJson(map))); |
||||
|
||||
/// Apply to join a channel, requiring approval from an administrator or the channel. |
||||
/// [joinSource] 2: Invited, 3: Searched, 4: Using a QR code |
||||
Future<dynamic> joinChannel( |
||||
{required String channelID, |
||||
String? reason, |
||||
String? operationID, |
||||
int joinSource = 3, |
||||
String? ex}) => |
||||
_channel.invokeMethod( |
||||
'joinChannel', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'reason': reason, |
||||
'joinSource': joinSource, |
||||
'ex': ex, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})); |
||||
|
||||
/// Exit a channel |
||||
Future<dynamic> quitChannel({ |
||||
required String channelID, |
||||
String? operationID, |
||||
}) => |
||||
_channel.invokeMethod( |
||||
'quitChannel', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})); |
||||
|
||||
// |
||||
// /// Query a channel |
||||
// /// [keywordList] Search keywords; currently, only one keyword is supported, and it cannot be empty. |
||||
// /// [isSearchChannelID] Whether to search by channel ID (Note: cannot set both to false at the same time); defaults to false if not set. |
||||
// /// [isSearchChannelName] Whether to search by channel name; defaults to false if not set. |
||||
// Future<List<ChannelInfo>> searchChannels({ |
||||
// List<String> keywordList = const [], |
||||
// bool isSearchChannelID = false, |
||||
// bool isSearchChannelName = false, |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'searchChannels', |
||||
// _buildParam({ |
||||
// 'searchParam': { |
||||
// 'keywordList': keywordList, |
||||
// 'isSearchChannelID': isSearchChannelID, |
||||
// 'isSearchChannelName': isSearchChannelName, |
||||
// }, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toList(value, (map) => ChannelInfo.fromJson(map))); |
||||
|
||||
// /// Get a channel member list based on join time |
||||
// Future<List<ChannelMembersInfo>> getChannelMemberListByJoinTime({ |
||||
// required String channelID, |
||||
// int offset = 0, |
||||
// int count = 0, |
||||
// int joinTimeBegin = 0, |
||||
// int joinTimeEnd = 0, |
||||
// List<String> filterUserIDList = const [], |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'getChannelMemberListByJoinTimeFilter', |
||||
// _buildParam({ |
||||
// 'channelID': channelID, |
||||
// 'offset': offset, |
||||
// 'count': count, |
||||
// 'joinTimeBegin': joinTimeBegin, |
||||
// 'joinTimeEnd': joinTimeEnd, |
||||
// 'excludeUserIDList': filterUserIDList, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toList(value, (map) => ChannelMembersInfo.fromJson(map))); |
||||
|
||||
// /// Search for channel members |
||||
// /// [channelID] Channel ID |
||||
// /// [keywordList] Search keywords; currently, only one keyword is supported, and it cannot be empty. |
||||
// /// [isSearchUserID] Whether to search by member ID |
||||
// /// [isSearchMemberNickname] Whether to search by member nickname |
||||
// /// [offset] Start index |
||||
// /// [count] Total count to retrieve |
||||
// Future<List<ChannelMembersInfo>> searchChannelMembers({ |
||||
// required String channelID, |
||||
// List<String> keywordList = const [], |
||||
// bool isSearchUserID = false, |
||||
// bool isSearchMemberNickname = false, |
||||
// int offset = 0, |
||||
// int count = 40, |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'searchChannelMembers', |
||||
// _buildParam({ |
||||
// 'searchParam': { |
||||
// 'channelID': channelID, |
||||
// 'keywordList': keywordList, |
||||
// 'isSearchUserID': isSearchUserID, |
||||
// 'isSearchMemberNickname': isSearchMemberNickname, |
||||
// 'offset': offset, |
||||
// 'count': count, |
||||
// }, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toList(value, (map) => ChannelMembersInfo.fromJson(map))); |
||||
|
||||
// /// Query a channel |
||||
// /// [channelID] Channel ID |
||||
// /// [keywordList] Search keyword, currently only supports searching with one keyword, and it cannot be empty |
||||
// /// [isSearchUserID] Whether to search member IDs with the keyword |
||||
// /// [isSearchMemberNickname] Whether to search member nicknames with the keyword |
||||
// /// [offset] Starting index |
||||
// /// [count] Total number to retrieve each time |
||||
// Future<List<dynamic>> searchChannelMembersListMap({ |
||||
// required String channelID, |
||||
// List<String> keywordList = const [], |
||||
// bool isSearchUserID = false, |
||||
// bool isSearchMemberNickname = false, |
||||
// int offset = 0, |
||||
// int count = 40, |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel |
||||
// .invokeMethod( |
||||
// 'searchChannelMembers', |
||||
// _buildParam({ |
||||
// 'searchParam': { |
||||
// 'channelID': channelID, |
||||
// 'keywordList': keywordList, |
||||
// 'isSearchUserID': isSearchUserID, |
||||
// 'isSearchMemberNickname': isSearchMemberNickname, |
||||
// 'offset': offset, |
||||
// 'count': count, |
||||
// }, |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })) |
||||
// .then((value) => Utils.toListMap(value)); |
||||
// |
||||
// /// Modify the ChannelMemberInfo ex field |
||||
// Future<dynamic> setChannelMemberInfo({ |
||||
// required SetChannelMemberInfo channelMembersInfo, |
||||
// String? operationID, |
||||
// }) => |
||||
// _channel.invokeMethod( |
||||
// 'setChannelMemberInfo', |
||||
// _buildParam({ |
||||
// 'info': channelMembersInfo.toJson(), |
||||
// 'operationID': Utils.checkOperationID(operationID), |
||||
// })); |
||||
|
||||
Future<dynamic> getUsersInChannel( |
||||
String channelID, |
||||
List<String> userIDs, { |
||||
String? operationID, |
||||
}) => |
||||
_channel.invokeMethod( |
||||
'getUsersInChannel', |
||||
_buildParam({ |
||||
'channelID': channelID, |
||||
'userIDs': userIDs, |
||||
'operationID': Utils.checkOperationID(operationID), |
||||
})); |
||||
|
||||
static Map _buildParam(Map<String, dynamic> param) { |
||||
param["ManagerName"] = "channelManager"; |
||||
param = Utils.cleanMap(param); |
||||
log('param: $param'); |
||||
|
||||
return param; |
||||
} |
||||
} |
@ -0,0 +1,165 @@ |
||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; |
||||
|
||||
/// Channel Information |
||||
class ChannelInfo { |
||||
/// Channel ID |
||||
String channelID; |
||||
|
||||
/// Channel Name |
||||
String? channelName; |
||||
|
||||
/// Channel Announcement |
||||
String? notification; |
||||
|
||||
/// Channel Introduction |
||||
String? introduction; |
||||
|
||||
/// Channel Avatar |
||||
String? faceURL; |
||||
|
||||
/// Creation Time |
||||
int? createTime; |
||||
|
||||
/// Number of Channel Members |
||||
int? memberCount; |
||||
|
||||
/// Channel Status: 0 - Normal, 1 - Blocked, 2 - Dissolved, 3 - Muted |
||||
int? status; |
||||
|
||||
/// Creator's ID |
||||
String? creatorUserID; |
||||
|
||||
/// Channel Type [ChannelType] |
||||
int? channelType; |
||||
|
||||
/// Extra Information |
||||
String? ex; |
||||
|
||||
|
||||
ChannelInfo({ |
||||
required this.channelID, |
||||
this.channelName, |
||||
this.notification, |
||||
this.introduction, |
||||
this.faceURL, |
||||
this.createTime, |
||||
this.memberCount, |
||||
this.status, |
||||
this.creatorUserID, |
||||
this.channelType, |
||||
this.ex, |
||||
}); |
||||
|
||||
ChannelInfo.fromJson(Map<String, dynamic> json) : channelID = json['channelID'] { |
||||
channelName = json['channelName']; |
||||
notification = json['notification']; |
||||
introduction = json['introduction']; |
||||
faceURL = json['faceURL']; |
||||
createTime = json['createTime']; |
||||
memberCount = json['memberCount']; |
||||
status = json['status']; |
||||
creatorUserID = json['creatorUserID']; |
||||
channelType = json['channelType']; |
||||
ex = json['ex']; |
||||
} |
||||
|
||||
Map<String, dynamic> toJson() { |
||||
final data = Map<String, dynamic>(); |
||||
data['channelID'] = this.channelID; |
||||
data['channelName'] = this.channelName; |
||||
data['notification'] = this.notification; |
||||
data['introduction'] = this.introduction; |
||||
data['faceURL'] = this.faceURL; |
||||
data['createTime'] = this.createTime; |
||||
data['memberCount'] = this.memberCount; |
||||
data['status'] = this.status; |
||||
data['creatorUserID'] = this.creatorUserID; |
||||
data['channelType'] = this.channelType; |
||||
data['ex'] = this.ex; |
||||
return data; |
||||
} |
||||
|
||||
/// Corresponding Conversation Type for Channel Type |
||||
int get sessionType => ConversationType.superChannel; |
||||
|
||||
@override |
||||
bool operator ==(Object other) => |
||||
identical(this, other) || other is ChannelInfo && runtimeType == other.runtimeType && channelID == other.channelID; |
||||
|
||||
@override |
||||
int get hashCode => channelID.hashCode; |
||||
} |
||||
|
||||
/// Channel Member Information |
||||
class ChannelMembersInfo { |
||||
/// Channel ID |
||||
String? channelID; |
||||
|
||||
/// User ID |
||||
String? userID; |
||||
|
||||
/// Nickname |
||||
String? nickname; |
||||
|
||||
/// Avatar |
||||
String? faceURL; |
||||
|
||||
/// Role [ChannelRoleLevel] |
||||
int? roleLevel; |
||||
|
||||
/// Join Time |
||||
int? joinTime; |
||||
|
||||
/// Extra Information |
||||
String? ex; |
||||
|
||||
/// Mute End Time (seconds) |
||||
int? muteEndTime; |
||||
|
||||
ChannelMembersInfo({ |
||||
this.channelID, |
||||
this.userID, |
||||
this.roleLevel, |
||||
this.joinTime, |
||||
this.nickname, |
||||
this.faceURL, |
||||
this.ex, |
||||
this.muteEndTime, |
||||
}); |
||||
|
||||
ChannelMembersInfo.fromJson(Map<String, dynamic> json) { |
||||
channelID = json['channelID']; |
||||
userID = json['userID']; |
||||
roleLevel = json['roleLevel']; |
||||
joinTime = json['joinTime']; |
||||
nickname = json['nickname']; |
||||
faceURL = json['faceURL']; |
||||
ex = json['ex']; |
||||
muteEndTime = json['muteEndTime']; |
||||
} |
||||
|
||||
Map<String, dynamic> toJson() { |
||||
final data = Map<String, dynamic>(); |
||||
data['channelID'] = this.channelID; |
||||
data['userID'] = this.userID; |
||||
data['roleLevel'] = this.roleLevel; |
||||
data['joinTime'] = this.joinTime; |
||||
data['nickname'] = this.nickname; |
||||
data['faceURL'] = this.faceURL; |
||||
data['ex'] = this.ex; |
||||
data['muteEndTime'] = this.muteEndTime; |
||||
|
||||
return data; |
||||
} |
||||
|
||||
@override |
||||
bool operator ==(Object other) => |
||||
identical(this, other) || |
||||
other is ChannelMembersInfo && |
||||
runtimeType == other.runtimeType && |
||||
channelID == other.channelID && |
||||
userID == other.userID; |
||||
|
||||
@override |
||||
int get hashCode => channelID.hashCode ^ userID.hashCode; |
||||
} |
@ -0,0 +1,41 @@ |
||||
class SetChannelMemberInfo { |
||||
SetChannelMemberInfo({ |
||||
required this.channelID, |
||||
required this.userID, |
||||
this.roleLevel, |
||||
this.nickname, |
||||
this.faceURL, |
||||
this.ex, |
||||
}); |
||||
|
||||
final String channelID; |
||||
final String userID; |
||||
final int? roleLevel; |
||||
final String? nickname; |
||||
final String? faceURL; |
||||
final String? ex; |
||||
|
||||
SetChannelMemberInfo.fromJson(Map<String, dynamic> json) |
||||
: channelID = json['channelID'], |
||||
userID = json['userID'], |
||||
roleLevel = json['roleLevel'], |
||||
nickname = json['nickname'], |
||||
faceURL = json['faceURL'], |
||||
ex = json['ex']; |
||||
|
||||
Map<String, dynamic> toJson() { |
||||
final data = Map<String, dynamic>(); |
||||
data['channelID'] = channelID; |
||||
data['userID'] = userID; |
||||
data['roleLevel'] = roleLevel; |
||||
data['nickname'] = nickname; |
||||
data['faceURL'] = faceURL; |
||||
data['ex'] = ex; |
||||
return data; |
||||
} |
||||
|
||||
@override |
||||
String toString() { |
||||
return 'SetChannelMemberInfo{channelID: $channelID, userID: $userID, roleLevel: $roleLevel, nickname: $nickname, faceURL: $faceURL, ex: $ex}'; |
||||
} |
||||
} |
Loading…
Reference in new issue