Compare commits
10 Commits
3.2.0-alph
...
3.2.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1356f13fb3 | ||
|
|
1c7f1e7c19 | ||
|
|
034f95e96e | ||
|
|
946474ad02 | ||
|
|
6bd8ec0d2b | ||
|
|
de511cf90d | ||
|
|
a9f2e267cf | ||
|
|
642cc61a2e | ||
|
|
de8c192055 | ||
|
|
05cb6c430c |
@@ -52,5 +52,5 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
// 本地依赖,现将aar复制到libs/io/openim/core-sdk/0.0.1/ 下,命名core-sdk-0.0.1.aar
|
// 本地依赖,现将aar复制到libs/io/openim/core-sdk/0.0.1/ 下,命名core-sdk-0.0.1.aar
|
||||||
// implementation 'io.openim:core-sdk:0.0.1@aar'
|
// implementation 'io.openim:core-sdk:0.0.1@aar'
|
||||||
implementation 'io.openim:core-sdk:3.2.0-alpha.0@aar'
|
implementation 'io.openim:core-sdk:3.2.1@aar'
|
||||||
}
|
}
|
||||||
@@ -8,4 +8,9 @@ public class OnUserListener implements open_im_sdk_callback.OnUserListener {
|
|||||||
public void onSelfInfoUpdated(String s) {
|
public void onSelfInfoUpdated(String s) {
|
||||||
CommonUtil.emitEvent("userListener", "onSelfInfoUpdated", s);
|
CommonUtil.emitEvent("userListener", "onSelfInfoUpdated", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserStatusChanged(String s) {
|
||||||
|
CommonUtil.emitEvent("userListener", "onUserStatusChanged", s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -382,7 +382,15 @@ public class MessageManager extends BaseManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMessageLocalEx(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.setMessageLocalEx(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
value(methodCall, "conversationID"),
|
||||||
|
value(methodCall, "clientMsgID"),
|
||||||
|
value(methodCall, "localEx")
|
||||||
|
);
|
||||||
|
}
|
||||||
public void sendMessageNotOss(MethodCall methodCall, MethodChannel.Result result) {
|
public void sendMessageNotOss(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
Open_im_sdk.sendMessageNotOss(
|
Open_im_sdk.sendMessageNotOss(
|
||||||
new OnMsgSendListener(result, methodCall),
|
new OnMsgSendListener(result, methodCall),
|
||||||
|
|||||||
@@ -34,4 +34,39 @@ public class UserManager extends BaseManager {
|
|||||||
value(methodCall, "operationID")
|
value(methodCall, "operationID")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
public void subscribeUsersStatus(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.subscribeUsersStatus(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "userIDs"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unsubscribeUsersStatus(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.unsubscribeUsersStatus(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "userIDs"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getSubscribeUsersStatus(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getSubscribeUsersStatus(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getUserStatus(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getUserStatus(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "userIDs"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getUsersInfoStranger(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getUsersInfoStranger(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "userIDs"),
|
||||||
|
value(methodCall, "groupID"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class ConversationManager: BaseServiceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func setConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkSetConversationRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "conversationID"], methodCall[int: "status"])
|
Open_im_sdkSetConversationRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[int: "status"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func getConversationRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ public class MessageManager: BaseServiceManager {
|
|||||||
self["getAdvancedHistoryMessageListReverse"] = getAdvancedHistoryMessageListReverse
|
self["getAdvancedHistoryMessageListReverse"] = getAdvancedHistoryMessageListReverse
|
||||||
|
|
||||||
self["findMessageList"] = findMessageList
|
self["findMessageList"] = findMessageList
|
||||||
|
self["setMessageLocalEx"] = setMessageLocalEx
|
||||||
|
|
||||||
self["sendMessageNotOss"] = sendMessageNotOss
|
self["sendMessageNotOss"] = sendMessageNotOss
|
||||||
self["createImageMessageByURL"] = createImageMessageByURL
|
self["createImageMessageByURL"] = createImageMessageByURL
|
||||||
@@ -217,6 +218,10 @@ public class MessageManager: BaseServiceManager {
|
|||||||
func findMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func findMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
Open_im_sdkFindMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParams"])
|
Open_im_sdkFindMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParams"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setMessageLocalEx(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkSetMessageLocalEx(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "clientMsgID"], methodCall[string: "localEx"])
|
||||||
|
}
|
||||||
|
|
||||||
func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
//import Foundation
|
|
||||||
//import OpenIMCore
|
|
||||||
//
|
|
||||||
//public class OrganizationManager: BaseServiceManager {
|
|
||||||
//
|
|
||||||
// public override func registerHandlers() {
|
|
||||||
// super.registerHandlers()
|
|
||||||
// self["setOrganizationListener"] = setOrganizationListener
|
|
||||||
// self["getSubDepartment"] = getSubDepartment
|
|
||||||
// self["getDepartmentMember"] = getDepartmentMember
|
|
||||||
// self["getUserInDepartment"] = getUserInDepartment
|
|
||||||
// self["getDepartmentMemberAndSubDepartment"] = getDepartmentMemberAndSubDepartment
|
|
||||||
// self["getDepartmentInfo"] = getDepartmentInfo
|
|
||||||
// self["searchOrganization"] = searchOrganization
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func setOrganizationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSetOrganizationListener(OrganizationListener(channel: channel))
|
|
||||||
// callBack(result)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getSubDepartment(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetSubDepartment(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "departmentID"], methodCall[int: "offset"], methodCall[int: "count"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getDepartmentMember(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetDepartmentMember(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "departmentID"], methodCall[int: "offset"], methodCall[int: "count"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getUserInDepartment(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetUserInDepartment(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getDepartmentMemberAndSubDepartment(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetDepartmentMemberAndSubDepartment(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "departmentID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getDepartmentInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetDepartmentInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "departmentID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func searchOrganization(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkSearchOrganization(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"], methodCall[int: "offset"], methodCall[int: "count"])
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//public class OrganizationListener: NSObject, Open_im_sdk_callbackOnOrganizationListenerProtocol {
|
|
||||||
//
|
|
||||||
// private let channel:FlutterMethodChannel
|
|
||||||
//
|
|
||||||
// init(channel:FlutterMethodChannel) {
|
|
||||||
// self.channel = channel
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onOrganizationUpdated() {
|
|
||||||
// CommonUtil.emitEvent(channel: self.channel, method: "organizationListener", type: "onOrganizationUpdated", errCode: nil, errMsg: nil, data: nil)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
//import Foundation
|
|
||||||
//import OpenIMCore
|
|
||||||
//
|
|
||||||
//public class SignalingManager: BaseServiceManager {
|
|
||||||
//
|
|
||||||
// public override func registerHandlers() {
|
|
||||||
// super.registerHandlers()
|
|
||||||
// self["setSignalingListener"] = setSignalingListener
|
|
||||||
// self["signalingInvite"] = signalingInvite
|
|
||||||
// self["signalingInviteInGroup"] = signalingInviteInGroup
|
|
||||||
// self["signalingAccept"] = signalingAccept
|
|
||||||
// self["signalingReject"] = signalingReject
|
|
||||||
// self["signalingCancel"] = signalingCancel
|
|
||||||
// self["signalingHungUp"] = signalingHungUp
|
|
||||||
// self["signalingGetRoomByGroupID"] = signalingGetRoomByGroupID
|
|
||||||
// self["signalingGetTokenByRoomID"] = signalingGetTokenByRoomID
|
|
||||||
// self["signalingUpdateMeetingInfo"] = signalingUpdateMeetingInfo
|
|
||||||
// self["signalingCreateMeeting"] = signalingCreateMeeting
|
|
||||||
// self["signalingJoinMeeting"] = signalingJoinMeeting
|
|
||||||
// self["signalingOperateStream"] = signalingOperateStream
|
|
||||||
// self["signalingGetMeetings"] = signalingGetMeetings
|
|
||||||
// self["signalingCloseRoom"] = signalingCloseRoom
|
|
||||||
// self["signalingSendCustomSignal"] = signalingSendCustomSignal
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func setSignalingListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSetSignalingListener(SignalingListener(channel: channel))
|
|
||||||
// callBack(result)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingInvite(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingInvite(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingInviteInGroup(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingInviteInGroup(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingAccept(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingAccept(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingReject(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingReject(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingCancel(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingCancel(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingHungUp(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingHungUp(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "signalingInfo"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingGetRoomByGroupID(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingGetRoomByGroupID(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingGetTokenByRoomID(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingGetTokenByRoomID(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "roomID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingUpdateMeetingInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingUpdateMeetingInfo(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "info"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingCreateMeeting(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingCreateMeeting(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "info"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingJoinMeeting(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingJoinMeeting(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "info"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingOperateStream(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingOperateStream(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "streamType"], methodCall[string: "roomID"], methodCall[string: "userID"], methodCall[bool: "mute"], methodCall[bool: "muteAll"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingGetMeetings(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingGetMeetings(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingCloseRoom(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingCloseRoom(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "roomID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func signalingSendCustomSignal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSignalingSendCustomSignal(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "customInfo"], methodCall[string: "roomID"])
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// private let channel:FlutterMethodChannel
|
|
||||||
//
|
|
||||||
// init(channel:FlutterMethodChannel) {
|
|
||||||
// self.channel = channel
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInvitationCancelled(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInvitationCancelled", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInvitationTimeout(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInvitationTimeout", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInviteeAccepted(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInviteeAccepted", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInviteeAccepted(byOtherDevice s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInviteeAcceptedByOtherDevice", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInviteeRejected(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInviteeRejected", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onInviteeRejected(byOtherDevice s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onInviteeRejectedByOtherDevice", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onReceiveNewInvitation(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveNewInvitation", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onHangUp(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onHangUp", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onRoomParticipantConnected(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onRoomParticipantConnected", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onRoomParticipantDisconnected(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onRoomParticipantDisconnected", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onStreamChange(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onStreamChange", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onReceiveCustomSignal(_ s: String?) {
|
|
||||||
// CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveCustomSignal", errCode: nil, errMsg: nil, data: s)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
@@ -9,6 +9,11 @@ public class UserManager: BaseServiceManager {
|
|||||||
self["getUsersInfo"] = getUsersInfo
|
self["getUsersInfo"] = getUsersInfo
|
||||||
self["setSelfInfo"] = setSelfInfo
|
self["setSelfInfo"] = setSelfInfo
|
||||||
self["getSelfUserInfo"] = getSelfUserInfo
|
self["getSelfUserInfo"] = getSelfUserInfo
|
||||||
|
self["subscribeUsersStatus"] = subscribeUsersStatus
|
||||||
|
self["unsubscribeUsersStatus"] = unsubscribeUsersStatus
|
||||||
|
self["getSubscribeUsersStatus"] = getSubscribeUsersStatus
|
||||||
|
self["getUserStatus"] = getUserStatus
|
||||||
|
self["getUsersInfoStranger"] = getUsersInfoStranger
|
||||||
}
|
}
|
||||||
|
|
||||||
func setUserListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
func setUserListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
@@ -27,6 +32,26 @@ public class UserManager: BaseServiceManager {
|
|||||||
func getSelfUserInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
func getSelfUserInfo(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
Open_im_sdkGetSelfUserInfo(BaseCallback(result: result), methodCall[string: "operationID"])
|
Open_im_sdkGetSelfUserInfo(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func subscribeUsersStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkSubscribeUsersStatus(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func unsubscribeUsersStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkUnsubscribeUsersStatus(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getSubscribeUsersStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetSubscribeUsersStatus(BaseCallback(result: result), methodCall[string: "operationID"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getUserStatus(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetUserStatus(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func getUsersInfoStranger(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
||||||
|
Open_im_sdkGetUsersInfoStranger(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "userIDs"], methodCall[string: "groupID"])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UserListener: NSObject, Open_im_sdk_callbackOnUserListenerProtocol {
|
public class UserListener: NSObject, Open_im_sdk_callbackOnUserListenerProtocol {
|
||||||
@@ -40,4 +65,9 @@ public class UserListener: NSObject, Open_im_sdk_callbackOnUserListenerProtocol
|
|||||||
public func onSelfInfoUpdated(_ userInfo: String?) {
|
public func onSelfInfoUpdated(_ userInfo: String?) {
|
||||||
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onSelfInfoUpdated", errCode: nil, errMsg: nil, data: userInfo)
|
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onSelfInfoUpdated", errCode: nil, errMsg: nil, data: userInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func onUserStatusChanged(_ statusInfo: String?) {
|
||||||
|
CommonUtil.emitEvent(channel: self.channel, method: "userListener", type: "onUserStatusChanged", errCode: nil, errMsg: nil, data: statusInfo)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
//import Foundation
|
|
||||||
//import OpenIMCore
|
|
||||||
//
|
|
||||||
//public class WorkMomentsManager: BaseServiceManager {
|
|
||||||
//
|
|
||||||
// public override func registerHandlers() {
|
|
||||||
// super.registerHandlers()
|
|
||||||
// self["setWorkMomentsListener"] = setWorkMomentsListener
|
|
||||||
// self["getWorkMomentsUnReadCount"] = getWorkMomentsUnReadCount
|
|
||||||
// self["getWorkMomentsNotification"] = getWorkMomentsNotification
|
|
||||||
// self["clearWorkMomentsNotification"] = clearWorkMomentsNotification
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func setWorkMomentsListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
||||||
// Open_im_sdkSetWorkMomentsListener(WorkMomentsListener(channel: channel))
|
|
||||||
// callBack(result)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getWorkMomentsUnReadCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetWorkMomentsUnReadCount(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func getWorkMomentsNotification(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkGetWorkMomentsNotification(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "offset"], methodCall[int: "count"])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// func clearWorkMomentsNotification(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
||||||
// Open_im_sdkClearWorkMomentsNotification(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//public class WorkMomentsListener: NSObject, Open_im_sdk_callbackOnWorkMomentsListenerProtocol {
|
|
||||||
//
|
|
||||||
// private let channel:FlutterMethodChannel
|
|
||||||
//
|
|
||||||
// init(channel:FlutterMethodChannel) {
|
|
||||||
// self.channel = channel
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public func onRecvNewNotification() {
|
|
||||||
// CommonUtil.emitEvent(channel: self.channel, method: "workMomentsListener", type: "OnRecvNewNotification", errCode: nil, errMsg: nil, data: nil)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
@@ -17,7 +17,7 @@ A new Flutter project.
|
|||||||
s.dependency 'Flutter'
|
s.dependency 'Flutter'
|
||||||
s.platform = :ios, '11.0'
|
s.platform = :ios, '11.0'
|
||||||
|
|
||||||
s.dependency 'OpenIMSDKCore','3.2.0-alpha.0'
|
s.dependency 'OpenIMSDKCore','3.2.1'
|
||||||
s.static_framework = true
|
s.static_framework = true
|
||||||
# s.vendored_frameworks = 'Framework/*.framework'
|
# s.vendored_frameworks = 'Framework/*.framework'
|
||||||
# Flutter.framework does not contain a i386 slice.
|
# Flutter.framework does not contain a i386 slice.
|
||||||
|
|||||||
@@ -33,9 +33,7 @@ export 'src/models/group_info.dart';
|
|||||||
export 'src/models/meeting_info.dart';
|
export 'src/models/meeting_info.dart';
|
||||||
export 'src/models/message.dart';
|
export 'src/models/message.dart';
|
||||||
export 'src/models/notification_info.dart';
|
export 'src/models/notification_info.dart';
|
||||||
export 'src/models/organization_info.dart';
|
|
||||||
export 'src/models/search_info.dart';
|
export 'src/models/search_info.dart';
|
||||||
export 'src/models/signaling_info.dart';
|
|
||||||
export 'src/models/user_info.dart';
|
export 'src/models/user_info.dart';
|
||||||
export 'src/openim.dart';
|
export 'src/openim.dart';
|
||||||
export 'src/utils.dart';
|
export 'src/utils.dart';
|
||||||
|
|||||||
@@ -4,11 +4,16 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
|||||||
class OnUserListener {
|
class OnUserListener {
|
||||||
/// The information of the logged-in user has been updated
|
/// The information of the logged-in user has been updated
|
||||||
Function(UserInfo info)? onSelfInfoUpdated;
|
Function(UserInfo info)? onSelfInfoUpdated;
|
||||||
|
Function(UserStatusInfo info)? onUserStatusChanged;
|
||||||
|
|
||||||
OnUserListener({this.onSelfInfoUpdated});
|
OnUserListener({this.onSelfInfoUpdated, this.onUserStatusChanged});
|
||||||
|
|
||||||
/// 自身信息发送变化回调
|
/// 自身信息发送变化回调
|
||||||
void selfInfoUpdated(UserInfo info) {
|
void selfInfoUpdated(UserInfo info) {
|
||||||
onSelfInfoUpdated?.call(info);
|
onSelfInfoUpdated?.call(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void userStatusChanged(UserStatusInfo info) {
|
||||||
|
onUserStatusChanged?.call(info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,29 +63,29 @@ class IMManager {
|
|||||||
userInfo = Utils.toObj(data, (map) => UserInfo.fromJson(map));
|
userInfo = Utils.toObj(data, (map) => UserInfo.fromJson(map));
|
||||||
userManager.listener.selfInfoUpdated(userInfo);
|
userManager.listener.selfInfoUpdated(userInfo);
|
||||||
break;
|
break;
|
||||||
|
case 'onUserStatusChanged':
|
||||||
|
final status = Utils.toObj(data, (map) => UserStatusInfo.fromJson(map));
|
||||||
|
userManager.listener.userStatusChanged(status);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (call.method == ListenerType.groupListener) {
|
} else if (call.method == ListenerType.groupListener) {
|
||||||
String type = call.arguments['type'];
|
String type = call.arguments['type'];
|
||||||
dynamic data = call.arguments['data'];
|
dynamic data = call.arguments['data'];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'onGroupApplicationAccepted':
|
case 'onGroupApplicationAccepted':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupApplicationAccepted(i);
|
groupManager.listener.groupApplicationAccepted(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupApplicationAdded':
|
case 'onGroupApplicationAdded':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupApplicationAdded(i);
|
groupManager.listener.groupApplicationAdded(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupApplicationDeleted':
|
case 'onGroupApplicationDeleted':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupApplicationDeleted(i);
|
groupManager.listener.groupApplicationDeleted(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupApplicationRejected':
|
case 'onGroupApplicationRejected':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupApplicationRejected(i);
|
groupManager.listener.groupApplicationRejected(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupDismissed':
|
case 'onGroupDismissed':
|
||||||
@@ -97,18 +97,15 @@ class IMManager {
|
|||||||
groupManager.listener.groupInfoChanged(i);
|
groupManager.listener.groupInfoChanged(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupMemberAdded':
|
case 'onGroupMemberAdded':
|
||||||
final i =
|
final i = Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupMemberAdded(i);
|
groupManager.listener.groupMemberAdded(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupMemberDeleted':
|
case 'onGroupMemberDeleted':
|
||||||
final i =
|
final i = Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupMemberDeleted(i);
|
groupManager.listener.groupMemberDeleted(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupMemberInfoChanged':
|
case 'onGroupMemberInfoChanged':
|
||||||
final i =
|
final i = Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
|
||||||
groupManager.listener.groupMemberInfoChanged(i);
|
groupManager.listener.groupMemberInfoChanged(i);
|
||||||
break;
|
break;
|
||||||
case 'onJoinedGroupAdded':
|
case 'onJoinedGroupAdded':
|
||||||
@@ -136,36 +133,31 @@ class IMManager {
|
|||||||
break;
|
break;
|
||||||
case 'onRecvC2CReadReceipt':
|
case 'onRecvC2CReadReceipt':
|
||||||
var value = call.arguments['data']['msgReceiptList'];
|
var value = call.arguments['data']['msgReceiptList'];
|
||||||
var list =
|
var list = Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
||||||
Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
|
||||||
messageManager.msgListener.recvC2CReadReceipt(list);
|
messageManager.msgListener.recvC2CReadReceipt(list);
|
||||||
break;
|
break;
|
||||||
case 'onRecvGroupReadReceipt':
|
case 'onRecvGroupReadReceipt':
|
||||||
var value = call.arguments['data']['groupMsgReceiptList'];
|
var value = call.arguments['data']['groupMsgReceiptList'];
|
||||||
var list =
|
var list = Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
||||||
Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
|
||||||
messageManager.msgListener.recvGroupReadReceipt(list);
|
messageManager.msgListener.recvGroupReadReceipt(list);
|
||||||
break;
|
break;
|
||||||
case 'onRecvMessageExtensionsAdded':
|
case 'onRecvMessageExtensionsAdded':
|
||||||
var msgID = call.arguments['data']['msgID'];
|
var msgID = call.arguments['data']['msgID'];
|
||||||
var value = call.arguments['data']['reactionExtensionList'];
|
var value = call.arguments['data']['reactionExtensionList'];
|
||||||
var list = Utils.toList(value, (map) => KeyValue.fromJson(map));
|
var list = Utils.toList(value, (map) => KeyValue.fromJson(map));
|
||||||
messageManager.msgListener
|
messageManager.msgListener.recvMessageExtensionsAdded(msgID, list);
|
||||||
.recvMessageExtensionsAdded(msgID, list);
|
|
||||||
break;
|
break;
|
||||||
case 'onRecvMessageExtensionsChanged':
|
case 'onRecvMessageExtensionsChanged':
|
||||||
var msgID = call.arguments['data']['msgID'];
|
var msgID = call.arguments['data']['msgID'];
|
||||||
var value = call.arguments['data']['reactionExtensionList'];
|
var value = call.arguments['data']['reactionExtensionList'];
|
||||||
var list = Utils.toList(value, (map) => KeyValue.fromJson(map));
|
var list = Utils.toList(value, (map) => KeyValue.fromJson(map));
|
||||||
messageManager.msgListener
|
messageManager.msgListener.recvMessageExtensionsChanged(msgID, list);
|
||||||
.recvMessageExtensionsChanged(msgID, list);
|
|
||||||
break;
|
break;
|
||||||
case 'onRecvMessageExtensionsDeleted':
|
case 'onRecvMessageExtensionsDeleted':
|
||||||
var msgID = call.arguments['data']['msgID'];
|
var msgID = call.arguments['data']['msgID'];
|
||||||
var value = call.arguments['data']['reactionExtensionKeyList'];
|
var value = call.arguments['data']['reactionExtensionKeyList'];
|
||||||
var list = Utils.toList(value, (map) => '$map');
|
var list = Utils.toList(value, (map) => '$map');
|
||||||
messageManager.msgListener
|
messageManager.msgListener.recvMessageExtensionsDeleted(msgID, list);
|
||||||
.recvMessageExtensionsDeleted(msgID, list);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'onRecvNewMessage':
|
case 'onRecvNewMessage':
|
||||||
@@ -207,18 +199,15 @@ class IMManager {
|
|||||||
conversationManager.listener.syncServerFailed();
|
conversationManager.listener.syncServerFailed();
|
||||||
break;
|
break;
|
||||||
case 'onNewConversation':
|
case 'onNewConversation':
|
||||||
var list =
|
var list = Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
||||||
Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
|
||||||
conversationManager.listener.newConversation(list);
|
conversationManager.listener.newConversation(list);
|
||||||
break;
|
break;
|
||||||
case 'onConversationChanged':
|
case 'onConversationChanged':
|
||||||
var list =
|
var list = Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
||||||
Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
|
||||||
conversationManager.listener.conversationChanged(list);
|
conversationManager.listener.conversationChanged(list);
|
||||||
break;
|
break;
|
||||||
case 'onTotalUnreadMessageCountChanged':
|
case 'onTotalUnreadMessageCountChanged':
|
||||||
conversationManager.listener
|
conversationManager.listener.totalUnreadMessageCountChanged(data ?? 0);
|
||||||
.totalUnreadMessageCountChanged(data ?? 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (call.method == ListenerType.friendListener) {
|
} else if (call.method == ListenerType.friendListener) {
|
||||||
@@ -239,23 +228,19 @@ class IMManager {
|
|||||||
friendshipManager.listener.friendAdded(u);
|
friendshipManager.listener.friendAdded(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendApplicationAccepted':
|
case 'onFriendApplicationAccepted':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
friendshipManager.listener.friendApplicationAccepted(u);
|
friendshipManager.listener.friendApplicationAccepted(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendApplicationAdded':
|
case 'onFriendApplicationAdded':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
friendshipManager.listener.friendApplicationAdded(u);
|
friendshipManager.listener.friendApplicationAdded(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendApplicationDeleted':
|
case 'onFriendApplicationDeleted':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
friendshipManager.listener.friendApplicationDeleted(u);
|
friendshipManager.listener.friendApplicationDeleted(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendApplicationRejected':
|
case 'onFriendApplicationRejected':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
friendshipManager.listener.friendApplicationRejected(u);
|
friendshipManager.listener.friendApplicationRejected(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendDeleted':
|
case 'onFriendDeleted':
|
||||||
@@ -272,8 +257,7 @@ class IMManager {
|
|||||||
String data = call.arguments['data'];
|
String data = call.arguments['data'];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'onRecvCustomBusinessMessage':
|
case 'onRecvCustomBusinessMessage':
|
||||||
messageManager.customBusinessListener
|
messageManager.customBusinessListener?.recvCustomBusinessMessage(data);
|
||||||
?.recvCustomBusinessMessage(data);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (call.method == ListenerType.messageKvInfoListener) {
|
} else if (call.method == ListenerType.messageKvInfoListener) {
|
||||||
@@ -281,8 +265,7 @@ class IMManager {
|
|||||||
String data = call.arguments['data'];
|
String data = call.arguments['data'];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'onMessageKvInfoChanged':
|
case 'onMessageKvInfoChanged':
|
||||||
final list =
|
final list = Utils.toList(data, (map) => MessageKv.fromJson(map)).toList();
|
||||||
Utils.toList(data, (map) => MessageKv.fromJson(map)).toList();
|
|
||||||
messageManager.messageKvInfoListener?.messageKvInfoChanged(list);
|
messageManager.messageKvInfoListener?.messageKvInfoChanged(list);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -291,23 +274,19 @@ class IMManager {
|
|||||||
String data = call.arguments['data'];
|
String data = call.arguments['data'];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'onFriendApplicationAccepted':
|
case 'onFriendApplicationAccepted':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
_listenerForService?.friendApplicationAccepted(u);
|
_listenerForService?.friendApplicationAccepted(u);
|
||||||
break;
|
break;
|
||||||
case 'onFriendApplicationAdded':
|
case 'onFriendApplicationAdded':
|
||||||
final u = Utils.toObj(
|
final u = Utils.toObj(data, (map) => FriendApplicationInfo.fromJson(map));
|
||||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
|
||||||
_listenerForService?.friendApplicationAdded(u);
|
_listenerForService?.friendApplicationAdded(u);
|
||||||
break;
|
break;
|
||||||
case 'onGroupApplicationAccepted':
|
case 'onGroupApplicationAccepted':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
_listenerForService?.groupApplicationAccepted(i);
|
_listenerForService?.groupApplicationAccepted(i);
|
||||||
break;
|
break;
|
||||||
case 'onGroupApplicationAdded':
|
case 'onGroupApplicationAdded':
|
||||||
final i = Utils.toObj(
|
final i = Utils.toObj(data, (map) => GroupApplicationInfo.fromJson(map));
|
||||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
|
||||||
_listenerForService?.groupApplicationAdded(i);
|
_listenerForService?.groupApplicationAdded(i);
|
||||||
break;
|
break;
|
||||||
case 'onRecvNewMessage':
|
case 'onRecvNewMessage':
|
||||||
@@ -355,8 +334,7 @@ class IMManager {
|
|||||||
int fileSize = data['fileSize'];
|
int fileSize = data['fileSize'];
|
||||||
int streamSize = data['streamSize'];
|
int streamSize = data['streamSize'];
|
||||||
int storageSize = data['storageSize'];
|
int storageSize = data['storageSize'];
|
||||||
_uploadFileListener?.uploadProgress(
|
_uploadFileListener?.uploadProgress(id, fileSize, streamSize, storageSize);
|
||||||
id, fileSize, streamSize, storageSize);
|
|
||||||
break;
|
break;
|
||||||
case 'uploadID':
|
case 'uploadID':
|
||||||
String id = data['id'];
|
String id = data['id'];
|
||||||
@@ -368,14 +346,12 @@ class IMManager {
|
|||||||
int index = data['index'];
|
int index = data['index'];
|
||||||
int partSize = data['partSize'];
|
int partSize = data['partSize'];
|
||||||
String partHash = data['partHash'];
|
String partHash = data['partHash'];
|
||||||
_uploadFileListener?.uploadPartComplete(
|
_uploadFileListener?.uploadPartComplete(id, index, partSize, partHash);
|
||||||
id, index, partSize, partHash);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
Logger.print(
|
Logger.print("回调失败了。${call.method} ${call.arguments['type']} ${call.arguments['data']} $error $stackTrace");
|
||||||
"回调失败了。${call.method} ${call.arguments['type']} ${call.arguments['data']} $error $stackTrace");
|
|
||||||
}
|
}
|
||||||
return Future.value(null);
|
return Future.value(null);
|
||||||
});
|
});
|
||||||
@@ -428,7 +404,7 @@ class IMManager {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 反初始化SDK
|
/// 反初始化SDK
|
||||||
Future<dynamic> unInitSDK() {
|
Future<dynamic> unInitSDK() {
|
||||||
return _channel.invokeMethod('unInitSDK', _buildParam({}));
|
return _channel.invokeMethod('unInitSDK', _buildParam({}));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -531,8 +531,7 @@ class MessageManager {
|
|||||||
},
|
},
|
||||||
'operationID': Utils.checkOperationID(operationID),
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toObj(value, (map) => SearchResult.fromJson(map)));
|
||||||
Utils.toObj(value, (map) => SearchResult.fromJson(map)));
|
|
||||||
|
|
||||||
/// 撤回消息
|
/// 撤回消息
|
||||||
/// [message] 被撤回的消息体
|
/// [message] 被撤回的消息体
|
||||||
@@ -587,8 +586,7 @@ class MessageManager {
|
|||||||
'lastMinSeq': lastMinSeq ?? 0,
|
'lastMinSeq': lastMinSeq ?? 0,
|
||||||
'operationID': Utils.checkOperationID(operationID),
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
|
||||||
Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
|
|
||||||
|
|
||||||
/// 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息
|
/// 获取聊天记录(以startMsg为节点,新收到的聊天记录),用在全局搜索定位某一条消息,然后此条消息后新增的消息
|
||||||
/// [conversationID] 会话id,查询通知时可用
|
/// [conversationID] 会话id,查询通知时可用
|
||||||
@@ -611,8 +609,7 @@ class MessageManager {
|
|||||||
'lastMinSeq': lastMinSeq ?? 0,
|
'lastMinSeq': lastMinSeq ?? 0,
|
||||||
'operationID': Utils.checkOperationID(operationID),
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
|
||||||
Utils.toObj(value, (map) => AdvancedMessage.fromJson(map)));
|
|
||||||
|
|
||||||
/// 查找消息详细
|
/// 查找消息详细
|
||||||
/// [conversationID] 会话id
|
/// [conversationID] 会话id
|
||||||
@@ -628,8 +625,7 @@ class MessageManager {
|
|||||||
'searchParams': searchParams.map((e) => e.toJson()).toList(),
|
'searchParams': searchParams.map((e) => e.toJson()).toList(),
|
||||||
'operationID': Utils.checkOperationID(operationID),
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toObj(value, (map) => SearchResult.fromJson(map)));
|
||||||
Utils.toObj(value, (map) => SearchResult.fromJson(map)));
|
|
||||||
|
|
||||||
/// 富文本消息
|
/// 富文本消息
|
||||||
/// [text] 输入内容
|
/// [text] 输入内容
|
||||||
@@ -763,6 +759,22 @@ class MessageManager {
|
|||||||
return _channel.invokeMethod('setCustomBusinessListener', _buildParam({}));
|
return _channel.invokeMethod('setCustomBusinessListener', _buildParam({}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future setMessageLocalEx({
|
||||||
|
required String conversationID,
|
||||||
|
required String clientMsgID,
|
||||||
|
required String localEx,
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel.invokeMethod(
|
||||||
|
'setMessageLocalEx',
|
||||||
|
_buildParam({
|
||||||
|
"conversationID": conversationID,
|
||||||
|
"clientMsgID": clientMsgID,
|
||||||
|
"localEx": localEx,
|
||||||
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
Future setMessageKvInfoListener(OnMessageKvInfoListener listener) {
|
Future setMessageKvInfoListener(OnMessageKvInfoListener listener) {
|
||||||
this.messageKvInfoListener = listener;
|
this.messageKvInfoListener = listener;
|
||||||
@@ -782,8 +794,7 @@ class MessageManager {
|
|||||||
'list': list.map((e) => e.toJson()).toList(),
|
'list': list.map((e) => e.toJson()).toList(),
|
||||||
"operationID": Utils.checkOperationID(operationID),
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
||||||
Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
|
||||||
|
|
||||||
Future<List<TypeKeySetResult>> deleteMessageReactionExtensions({
|
Future<List<TypeKeySetResult>> deleteMessageReactionExtensions({
|
||||||
required Message message,
|
required Message message,
|
||||||
@@ -798,8 +809,7 @@ class MessageManager {
|
|||||||
'list': list,
|
'list': list,
|
||||||
"operationID": Utils.checkOperationID(operationID),
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
||||||
Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
|
||||||
|
|
||||||
Future<List<MessageTypeKeyMapping>> getMessageListReactionExtensions({
|
Future<List<MessageTypeKeyMapping>> getMessageListReactionExtensions({
|
||||||
List<Message> messageList = const [],
|
List<Message> messageList = const [],
|
||||||
@@ -812,8 +822,7 @@ class MessageManager {
|
|||||||
'messageList': messageList.map((e) => e.toJson()).toList(),
|
'messageList': messageList.map((e) => e.toJson()).toList(),
|
||||||
"operationID": Utils.checkOperationID(operationID),
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) => Utils.toList(
|
.then((value) => Utils.toList(value, (map) => MessageTypeKeyMapping.fromJson(map)));
|
||||||
value, (map) => MessageTypeKeyMapping.fromJson(map)));
|
|
||||||
|
|
||||||
Future<List<TypeKeySetResult>> addMessageReactionExtensions({
|
Future<List<TypeKeySetResult>> addMessageReactionExtensions({
|
||||||
required Message message,
|
required Message message,
|
||||||
@@ -828,8 +837,7 @@ class MessageManager {
|
|||||||
'list': list.map((e) => e.toJson()).toList(),
|
'list': list.map((e) => e.toJson()).toList(),
|
||||||
"operationID": Utils.checkOperationID(operationID),
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) =>
|
.then((value) => Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
||||||
Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
|
||||||
|
|
||||||
Future<List<MessageTypeKeyMapping>> getMessageListSomeReactionExtensions({
|
Future<List<MessageTypeKeyMapping>> getMessageListSomeReactionExtensions({
|
||||||
List<Message> messageList = const [],
|
List<Message> messageList = const [],
|
||||||
@@ -844,8 +852,7 @@ class MessageManager {
|
|||||||
'list': kvList.map((e) => e.toJson()).toList(),
|
'list': kvList.map((e) => e.toJson()).toList(),
|
||||||
"operationID": Utils.checkOperationID(operationID),
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
}))
|
}))
|
||||||
.then((value) => Utils.toList(
|
.then((value) => Utils.toList(value, (map) => MessageTypeKeyMapping.fromJson(map)));
|
||||||
value, (map) => MessageTypeKeyMapping.fromJson(map)));
|
|
||||||
|
|
||||||
static Map _buildParam(Map param) {
|
static Map _buildParam(Map param) {
|
||||||
param["ManagerName"] = "messageManager";
|
param["ManagerName"] = "messageManager";
|
||||||
|
|||||||
@@ -75,6 +75,76 @@ class UserManager {
|
|||||||
'operationID': Utils.checkOperationID(operationID),
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
Future<List<UserStatusInfo>> subscribeUsersStatus(
|
||||||
|
List<String> userIDs, {
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel
|
||||||
|
.invokeMethod(
|
||||||
|
'subscribeUsersStatus',
|
||||||
|
_buildParam({
|
||||||
|
'userIDs': userIDs,
|
||||||
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(value, (map) => UserStatusInfo.fromJson(map)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<UserStatusInfo>> unsubscribeUsersStatus(
|
||||||
|
List<String> userIDs, {
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel
|
||||||
|
.invokeMethod(
|
||||||
|
'unsubscribeUsersStatus',
|
||||||
|
_buildParam({
|
||||||
|
'userIDs': userIDs,
|
||||||
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(value, (map) => UserStatusInfo.fromJson(map)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<UserStatusInfo>> getSubscribeUsersStatus({
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel
|
||||||
|
.invokeMethod(
|
||||||
|
'getSubscribeUsersStatus',
|
||||||
|
_buildParam({
|
||||||
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(value, (map) => UserStatusInfo.fromJson(map)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<UserStatusInfo>> getUserStatus(
|
||||||
|
List<String> userIDs, {
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel
|
||||||
|
.invokeMethod(
|
||||||
|
'getUserStatus',
|
||||||
|
_buildParam({
|
||||||
|
'userIDs': userIDs,
|
||||||
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(value, (map) => UserStatusInfo.fromJson(map)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<UserInfo>> getUsersInfoStranger(
|
||||||
|
List<String> userIDs, {
|
||||||
|
String? groupID,
|
||||||
|
String? operationID,
|
||||||
|
}) {
|
||||||
|
return _channel
|
||||||
|
.invokeMethod(
|
||||||
|
'getUsersInfoStranger',
|
||||||
|
_buildParam({
|
||||||
|
'userIDs': userIDs,
|
||||||
|
'groupID': groupID,
|
||||||
|
'operationID': Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(value, (map) => UserInfo.fromJson(map)));
|
||||||
|
}
|
||||||
|
|
||||||
static Map _buildParam(Map param) {
|
static Map _buildParam(Map param) {
|
||||||
param["ManagerName"] = "userManager";
|
param["ManagerName"] = "userManager";
|
||||||
return param;
|
return param;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class Message {
|
|||||||
int? contentType;
|
int? contentType;
|
||||||
|
|
||||||
/// 平台[Platform]
|
/// 平台[Platform]
|
||||||
int? platformID;
|
int? senderPlatformID;
|
||||||
|
|
||||||
/// 发送者昵称
|
/// 发送者昵称
|
||||||
String? senderNickname;
|
String? senderNickname;
|
||||||
@@ -131,7 +131,7 @@ class Message {
|
|||||||
this.recvID,
|
this.recvID,
|
||||||
this.msgFrom,
|
this.msgFrom,
|
||||||
this.contentType,
|
this.contentType,
|
||||||
this.platformID,
|
this.senderPlatformID,
|
||||||
this.senderNickname,
|
this.senderNickname,
|
||||||
this.senderFaceUrl,
|
this.senderFaceUrl,
|
||||||
this.groupID,
|
this.groupID,
|
||||||
@@ -173,7 +173,7 @@ class Message {
|
|||||||
recvID = json['recvID'];
|
recvID = json['recvID'];
|
||||||
msgFrom = json['msgFrom'];
|
msgFrom = json['msgFrom'];
|
||||||
contentType = json['contentType'];
|
contentType = json['contentType'];
|
||||||
platformID = json['platformID'];
|
senderPlatformID = json['senderPlatformID'];
|
||||||
senderNickname = json['senderNickname'];
|
senderNickname = json['senderNickname'];
|
||||||
senderFaceUrl = json['senderFaceUrl'];
|
senderFaceUrl = json['senderFaceUrl'];
|
||||||
groupID = json['groupID'];
|
groupID = json['groupID'];
|
||||||
@@ -248,7 +248,7 @@ class Message {
|
|||||||
data['recvID'] = this.recvID;
|
data['recvID'] = this.recvID;
|
||||||
data['msgFrom'] = this.msgFrom;
|
data['msgFrom'] = this.msgFrom;
|
||||||
data['contentType'] = this.contentType;
|
data['contentType'] = this.contentType;
|
||||||
data['platformID'] = this.platformID;
|
data['senderPlatformID'] = this.senderPlatformID;
|
||||||
data['senderNickname'] = this.senderNickname;
|
data['senderNickname'] = this.senderNickname;
|
||||||
data['senderFaceUrl'] = this.senderFaceUrl;
|
data['senderFaceUrl'] = this.senderFaceUrl;
|
||||||
data['groupID'] = this.groupID;
|
data['groupID'] = this.groupID;
|
||||||
@@ -302,7 +302,7 @@ class Message {
|
|||||||
recvID = message.recvID;
|
recvID = message.recvID;
|
||||||
msgFrom = message.msgFrom;
|
msgFrom = message.msgFrom;
|
||||||
contentType = message.contentType;
|
contentType = message.contentType;
|
||||||
platformID = message.platformID;
|
senderPlatformID = message.senderPlatformID;
|
||||||
senderNickname = message.senderNickname;
|
senderNickname = message.senderNickname;
|
||||||
senderFaceUrl = message.senderFaceUrl;
|
senderFaceUrl = message.senderFaceUrl;
|
||||||
groupID = message.groupID;
|
groupID = message.groupID;
|
||||||
|
|||||||
@@ -1,381 +0,0 @@
|
|||||||
/// 部门信息
|
|
||||||
class DeptInfo {
|
|
||||||
/// 部门id
|
|
||||||
String? departmentID;
|
|
||||||
|
|
||||||
/// 头像
|
|
||||||
String? faceURL;
|
|
||||||
|
|
||||||
/// 显示名
|
|
||||||
String? name;
|
|
||||||
|
|
||||||
/// 上一级部门id
|
|
||||||
String? parentID;
|
|
||||||
|
|
||||||
/// 排序方式
|
|
||||||
int? order;
|
|
||||||
|
|
||||||
/// 部门类型
|
|
||||||
int? departmentType;
|
|
||||||
|
|
||||||
/// 创建时间
|
|
||||||
int? createTime;
|
|
||||||
|
|
||||||
/// 子部门数量
|
|
||||||
int? subDepartmentNum;
|
|
||||||
|
|
||||||
/// 成员数量
|
|
||||||
int? memberNum;
|
|
||||||
|
|
||||||
/// 扩展字段
|
|
||||||
String? ex;
|
|
||||||
|
|
||||||
/// 附加信息
|
|
||||||
String? attachedInfo;
|
|
||||||
|
|
||||||
String? relatedGroupID;
|
|
||||||
|
|
||||||
DeptInfo(
|
|
||||||
{this.departmentID,
|
|
||||||
this.faceURL,
|
|
||||||
this.name,
|
|
||||||
this.parentID,
|
|
||||||
this.order,
|
|
||||||
this.departmentType,
|
|
||||||
this.createTime,
|
|
||||||
this.subDepartmentNum,
|
|
||||||
this.memberNum,
|
|
||||||
this.ex,
|
|
||||||
this.attachedInfo,
|
|
||||||
this.relatedGroupID});
|
|
||||||
|
|
||||||
DeptInfo.fromJson(Map<String, dynamic> json) {
|
|
||||||
departmentID = json['departmentID'];
|
|
||||||
faceURL = json['faceURL'];
|
|
||||||
name = json['name'];
|
|
||||||
parentID = json['parentID'];
|
|
||||||
order = json['order'];
|
|
||||||
departmentType = json['departmentType'];
|
|
||||||
createTime = json['createTime'];
|
|
||||||
subDepartmentNum = json['subDepartmentNum'];
|
|
||||||
memberNum = json['memberNum'];
|
|
||||||
ex = json['ex'];
|
|
||||||
attachedInfo = json['attachedInfo'];
|
|
||||||
relatedGroupID = json['relatedGroupID'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
data['departmentID'] = this.departmentID;
|
|
||||||
data['faceURL'] = this.faceURL;
|
|
||||||
data['name'] = this.name;
|
|
||||||
data['parentID'] = this.parentID;
|
|
||||||
data['order'] = this.order;
|
|
||||||
data['departmentType'] = this.departmentType;
|
|
||||||
data['createTime'] = this.createTime;
|
|
||||||
data['subDepartmentNum'] = this.subDepartmentNum;
|
|
||||||
data['memberNum'] = this.memberNum;
|
|
||||||
data['ex'] = this.ex;
|
|
||||||
data['attachedInfo'] = this.attachedInfo;
|
|
||||||
data['relatedGroupID'] = this.relatedGroupID;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) =>
|
|
||||||
identical(this, other) ||
|
|
||||||
other is DeptInfo &&
|
|
||||||
runtimeType == other.runtimeType &&
|
|
||||||
departmentID == other.departmentID;
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => departmentID.hashCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 部门成员信息
|
|
||||||
class DeptMemberInfo {
|
|
||||||
/// 用户id
|
|
||||||
String? userID;
|
|
||||||
|
|
||||||
/// 用户昵称
|
|
||||||
String? nickname;
|
|
||||||
|
|
||||||
/// 英文名
|
|
||||||
String? englishName;
|
|
||||||
|
|
||||||
/// 头像
|
|
||||||
String? faceURL;
|
|
||||||
|
|
||||||
/// 性别
|
|
||||||
int? gender;
|
|
||||||
|
|
||||||
/// 手机号
|
|
||||||
String? mobile;
|
|
||||||
|
|
||||||
/// 座机
|
|
||||||
String? telephone;
|
|
||||||
|
|
||||||
/// 出生时间
|
|
||||||
int? birth;
|
|
||||||
|
|
||||||
/// 邮箱
|
|
||||||
String? email;
|
|
||||||
|
|
||||||
/// 所在部门的id
|
|
||||||
String? departmentID;
|
|
||||||
|
|
||||||
/// 排序方式
|
|
||||||
int? order;
|
|
||||||
|
|
||||||
/// 职位
|
|
||||||
String? position;
|
|
||||||
|
|
||||||
/// 是否是领导
|
|
||||||
int? leader;
|
|
||||||
|
|
||||||
/// 状态
|
|
||||||
int? status;
|
|
||||||
|
|
||||||
/// 创建时间
|
|
||||||
int? createTime;
|
|
||||||
|
|
||||||
/// 入职时间
|
|
||||||
int? entryTime;
|
|
||||||
|
|
||||||
/// 离职时间
|
|
||||||
int? terminationTime;
|
|
||||||
|
|
||||||
/// 扩展字段
|
|
||||||
String? ex;
|
|
||||||
|
|
||||||
/// 附加信息
|
|
||||||
String? attachedInfo;
|
|
||||||
|
|
||||||
/// 搜索时使用
|
|
||||||
String? departmentName;
|
|
||||||
|
|
||||||
/// 所在部门的所有上级部门
|
|
||||||
List<DeptInfo>? parentDepartmentList;
|
|
||||||
|
|
||||||
/// 当前部门信息
|
|
||||||
DeptInfo? department;
|
|
||||||
|
|
||||||
DeptMemberInfo({
|
|
||||||
this.userID,
|
|
||||||
this.nickname,
|
|
||||||
this.englishName,
|
|
||||||
this.faceURL,
|
|
||||||
this.gender,
|
|
||||||
this.mobile,
|
|
||||||
this.telephone,
|
|
||||||
this.birth,
|
|
||||||
this.email,
|
|
||||||
this.departmentID,
|
|
||||||
this.order,
|
|
||||||
this.position,
|
|
||||||
this.leader,
|
|
||||||
this.status,
|
|
||||||
this.createTime,
|
|
||||||
this.ex,
|
|
||||||
this.attachedInfo,
|
|
||||||
this.departmentName,
|
|
||||||
this.parentDepartmentList,
|
|
||||||
this.department,
|
|
||||||
});
|
|
||||||
|
|
||||||
DeptMemberInfo.fromJson(Map<String, dynamic> json) {
|
|
||||||
userID = json['userID'];
|
|
||||||
nickname = json['nickname'];
|
|
||||||
englishName = json['englishName'];
|
|
||||||
faceURL = json['faceURL'];
|
|
||||||
gender = json['gender'];
|
|
||||||
mobile = json['mobile'];
|
|
||||||
telephone = json['telephone'];
|
|
||||||
birth = json['birth'];
|
|
||||||
email = json['email'];
|
|
||||||
departmentID = json['departmentID'];
|
|
||||||
order = json['order'];
|
|
||||||
position = json['position'];
|
|
||||||
leader = json['leader'];
|
|
||||||
status = json['status'];
|
|
||||||
createTime = json['createTime'];
|
|
||||||
ex = json['ex'];
|
|
||||||
attachedInfo = json['attachedInfo'];
|
|
||||||
departmentName = json['departmentName'];
|
|
||||||
if (json['parentDepartmentList'] != null) {
|
|
||||||
parentDepartmentList = <DeptInfo>[];
|
|
||||||
json['parentDepartmentList'].forEach((v) {
|
|
||||||
parentDepartmentList!.add(DeptInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
department = json['department'] == null
|
|
||||||
? null
|
|
||||||
: DeptInfo.fromJson(json['department']);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['userID'] = this.userID;
|
|
||||||
data['nickname'] = this.nickname;
|
|
||||||
data['englishName'] = this.englishName;
|
|
||||||
data['faceURL'] = this.faceURL;
|
|
||||||
data['gender'] = this.gender;
|
|
||||||
data['mobile'] = this.mobile;
|
|
||||||
data['telephone'] = this.telephone;
|
|
||||||
data['birth'] = this.birth;
|
|
||||||
data['email'] = this.email;
|
|
||||||
data['departmentID'] = this.departmentID;
|
|
||||||
data['order'] = this.order;
|
|
||||||
data['position'] = this.position;
|
|
||||||
data['leader'] = this.leader;
|
|
||||||
data['status'] = this.status;
|
|
||||||
data['createTime'] = this.createTime;
|
|
||||||
data['ex'] = this.ex;
|
|
||||||
data['attachedInfo'] = this.attachedInfo;
|
|
||||||
data['departmentName'] = this.departmentName;
|
|
||||||
if (this.parentDepartmentList != null) {
|
|
||||||
data['parentDepartmentList'] =
|
|
||||||
this.parentDepartmentList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
data['department'] = this.department?.toJson();
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) =>
|
|
||||||
identical(this, other) ||
|
|
||||||
other is DeptMemberInfo &&
|
|
||||||
runtimeType == other.runtimeType &&
|
|
||||||
userID == other.userID;
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => userID.hashCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 用户所在的部门
|
|
||||||
class UserInDept {
|
|
||||||
/// 部门信息
|
|
||||||
DeptInfo? department;
|
|
||||||
|
|
||||||
/// 所在部门自己的信息
|
|
||||||
DeptMemberInfo? member;
|
|
||||||
|
|
||||||
UserInDept({this.department, this.member});
|
|
||||||
|
|
||||||
UserInDept.fromJson(Map<String, dynamic> json) {
|
|
||||||
department = json['department'] != null
|
|
||||||
? DeptInfo.fromJson(json['department'])
|
|
||||||
: null;
|
|
||||||
member =
|
|
||||||
json['member'] != null ? DeptMemberInfo.fromJson(json['member']) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
if (this.department != null) {
|
|
||||||
data['department'] = this.department!.toJson();
|
|
||||||
}
|
|
||||||
if (this.member != null) {
|
|
||||||
data['member'] = this.member!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 部门下的一级子部门跟员工
|
|
||||||
class DeptMemberAndSubDept {
|
|
||||||
/// 一级子部门
|
|
||||||
List<DeptInfo>? departmentList;
|
|
||||||
|
|
||||||
/// 一级成员
|
|
||||||
List<DeptMemberInfo>? departmentMemberList;
|
|
||||||
|
|
||||||
/// 当前部门的所有上一级部门
|
|
||||||
List<DeptInfo>? parentDepartmentList;
|
|
||||||
|
|
||||||
DeptMemberAndSubDept({
|
|
||||||
this.departmentList,
|
|
||||||
this.departmentMemberList,
|
|
||||||
this.parentDepartmentList,
|
|
||||||
});
|
|
||||||
|
|
||||||
DeptMemberAndSubDept.fromJson(Map<String, dynamic> json) {
|
|
||||||
if (json['departmentList'] != null) {
|
|
||||||
departmentList = <DeptInfo>[];
|
|
||||||
json['departmentList'].forEach((v) {
|
|
||||||
departmentList!.add(DeptInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (json['departmentMemberList'] != null) {
|
|
||||||
departmentMemberList = <DeptMemberInfo>[];
|
|
||||||
json['departmentMemberList'].forEach((v) {
|
|
||||||
departmentMemberList!.add(DeptMemberInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (json['parentDepartmentList'] != null) {
|
|
||||||
parentDepartmentList = <DeptInfo>[];
|
|
||||||
json['parentDepartmentList'].forEach((v) {
|
|
||||||
parentDepartmentList!.add(DeptInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
if (this.departmentList != null) {
|
|
||||||
data['departmentList'] =
|
|
||||||
this.departmentList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
if (this.departmentMemberList != null) {
|
|
||||||
data['departmentMemberList'] =
|
|
||||||
this.departmentMemberList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
if (this.parentDepartmentList != null) {
|
|
||||||
data['parentDepartmentList'] =
|
|
||||||
this.parentDepartmentList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 搜索结果
|
|
||||||
class OrganizationSearchResult {
|
|
||||||
/// 部门列表
|
|
||||||
List<DeptInfo>? departmentList;
|
|
||||||
|
|
||||||
/// 部门成员列表
|
|
||||||
List<DeptMemberInfo>? departmentMemberList;
|
|
||||||
|
|
||||||
OrganizationSearchResult({
|
|
||||||
this.departmentList,
|
|
||||||
this.departmentMemberList,
|
|
||||||
});
|
|
||||||
|
|
||||||
OrganizationSearchResult.fromJson(Map<String, dynamic> json) {
|
|
||||||
if (json['departmentList'] != null) {
|
|
||||||
departmentList = <DeptInfo>[];
|
|
||||||
json['departmentList'].forEach((v) {
|
|
||||||
departmentList!.add(DeptInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (json['departmentMemberList'] != null) {
|
|
||||||
departmentMemberList = <DeptMemberInfo>[];
|
|
||||||
json['departmentMemberList'].forEach((v) {
|
|
||||||
departmentMemberList!.add(DeptMemberInfo.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
if (this.departmentList != null) {
|
|
||||||
data['departmentList'] =
|
|
||||||
this.departmentList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
if (this.departmentMemberList != null) {
|
|
||||||
data['departmentMemberList'] =
|
|
||||||
this.departmentMemberList!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,245 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
|
||||||
|
|
||||||
class SignalingInfo {
|
|
||||||
/// 操作者
|
|
||||||
String? userID;
|
|
||||||
|
|
||||||
/// 邀请信息
|
|
||||||
InvitationInfo? invitation;
|
|
||||||
|
|
||||||
/// 离线显示内容
|
|
||||||
OfflinePushInfo? offlinePushInfo;
|
|
||||||
|
|
||||||
SignalingInfo({
|
|
||||||
this.userID,
|
|
||||||
this.invitation,
|
|
||||||
this.offlinePushInfo,
|
|
||||||
});
|
|
||||||
|
|
||||||
SignalingInfo.fromJson(Map<String, dynamic> json) {
|
|
||||||
invitation = json['invitation'] == null
|
|
||||||
? null
|
|
||||||
: InvitationInfo.fromJson(json['invitation']);
|
|
||||||
offlinePushInfo = json['offlinePushInfo'] == null
|
|
||||||
? null
|
|
||||||
: OfflinePushInfo.fromJson(json['offlinePushInfo']);
|
|
||||||
userID = json['userID'] ?? invitation?.inviterUserID;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
data['userID'] = this.userID;
|
|
||||||
data['invitation'] = this.invitation?.toJson();
|
|
||||||
data['offlinePushInfo'] = this.offlinePushInfo?.toJson();
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class InvitationInfo {
|
|
||||||
/// 邀请者UserID
|
|
||||||
String? inviterUserID;
|
|
||||||
|
|
||||||
/// 被邀请者UserID列表,如果是单聊只有一个元素
|
|
||||||
List<String>? inviteeUserIDList;
|
|
||||||
|
|
||||||
/// 如果是单聊,为""
|
|
||||||
String? groupID;
|
|
||||||
|
|
||||||
/// 房间ID,必须唯一,可以不设置。
|
|
||||||
String? roomID;
|
|
||||||
|
|
||||||
/// 邀请超时时间(秒)
|
|
||||||
int? timeout;
|
|
||||||
|
|
||||||
/// 发起时间
|
|
||||||
int? initiateTime;
|
|
||||||
|
|
||||||
/// video 或者 audio
|
|
||||||
String? mediaType;
|
|
||||||
|
|
||||||
/// [ConversationType]1为单聊,2为群聊
|
|
||||||
int? sessionType;
|
|
||||||
|
|
||||||
/// 平台[Platform]
|
|
||||||
int? platformID;
|
|
||||||
|
|
||||||
InvitationInfo(
|
|
||||||
{this.inviterUserID,
|
|
||||||
this.inviteeUserIDList,
|
|
||||||
this.groupID,
|
|
||||||
this.roomID,
|
|
||||||
this.timeout,
|
|
||||||
this.initiateTime,
|
|
||||||
this.mediaType,
|
|
||||||
this.sessionType,
|
|
||||||
this.platformID});
|
|
||||||
|
|
||||||
InvitationInfo.fromJson(Map<String, dynamic> json) {
|
|
||||||
inviterUserID = json['inviterUserID'];
|
|
||||||
inviteeUserIDList = json['inviteeUserIDList']?.cast<String>();
|
|
||||||
groupID = json['groupID'];
|
|
||||||
roomID = json['roomID'];
|
|
||||||
timeout = json['timeout'];
|
|
||||||
initiateTime = json['initiateTime'];
|
|
||||||
mediaType = json['mediaType'];
|
|
||||||
sessionType = json['sessionType'];
|
|
||||||
platformID = json['platformID'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
data['inviterUserID'] = this.inviterUserID;
|
|
||||||
data['inviteeUserIDList'] = this.inviteeUserIDList;
|
|
||||||
data['groupID'] = this.groupID;
|
|
||||||
data['roomID'] = this.roomID;
|
|
||||||
data['timeout'] = this.timeout;
|
|
||||||
data['initiateTime'] = this.initiateTime;
|
|
||||||
data['mediaType'] = this.mediaType;
|
|
||||||
data['sessionType'] = this.sessionType;
|
|
||||||
data['platformID'] = this.platformID;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 信令凭证
|
|
||||||
class SignalingCertificate {
|
|
||||||
/// 登录token
|
|
||||||
String? token;
|
|
||||||
|
|
||||||
/// 房间id
|
|
||||||
String? roomID;
|
|
||||||
|
|
||||||
/// 服务器地址
|
|
||||||
String? liveURL;
|
|
||||||
|
|
||||||
/// 占线列表
|
|
||||||
List<String>? busyLineUserIDList;
|
|
||||||
|
|
||||||
SignalingCertificate({
|
|
||||||
this.token,
|
|
||||||
this.roomID,
|
|
||||||
this.liveURL,
|
|
||||||
this.busyLineUserIDList,
|
|
||||||
});
|
|
||||||
|
|
||||||
SignalingCertificate.fromJson(Map<String, dynamic> json) {
|
|
||||||
token = json['token'];
|
|
||||||
roomID = json['roomID'];
|
|
||||||
liveURL = json['liveURL'];
|
|
||||||
busyLineUserIDList = null == json['busyLineUserIDList']
|
|
||||||
? null
|
|
||||||
: json['busyLineUserIDList'].cast<String>();
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
data['token'] = this.token;
|
|
||||||
data['roomID'] = this.roomID;
|
|
||||||
data['liveURL'] = this.liveURL;
|
|
||||||
data['busyLineUserIDList'] = this.busyLineUserIDList;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RoomCallingInfo {
|
|
||||||
InvitationInfo? invitation;
|
|
||||||
List<Participant>? participant;
|
|
||||||
String? roomID;
|
|
||||||
String? token;
|
|
||||||
String? liveURL;
|
|
||||||
String? groupID;
|
|
||||||
|
|
||||||
RoomCallingInfo({
|
|
||||||
this.invitation,
|
|
||||||
this.participant,
|
|
||||||
this.roomID,
|
|
||||||
this.token,
|
|
||||||
this.liveURL,
|
|
||||||
this.groupID,
|
|
||||||
});
|
|
||||||
|
|
||||||
RoomCallingInfo.fromJson(Map<String, dynamic> json) {
|
|
||||||
invitation = json['invitation'] != null
|
|
||||||
? InvitationInfo.fromJson(json['invitation'])
|
|
||||||
: null;
|
|
||||||
if (json['participant'] != null) {
|
|
||||||
participant = <Participant>[];
|
|
||||||
json['participant'].forEach((v) {
|
|
||||||
participant!.add(Participant.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
roomID = json['roomID'] ?? invitation?.roomID;
|
|
||||||
token = json['token'];
|
|
||||||
liveURL = json['liveURL'];
|
|
||||||
groupID = json['groupID'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
if (this.invitation != null) {
|
|
||||||
data['invitation'] = this.invitation!.toJson();
|
|
||||||
}
|
|
||||||
if (this.participant != null) {
|
|
||||||
data['participant'] = this.participant!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
data['roomID'] = this.roomID;
|
|
||||||
data['token'] = this.token;
|
|
||||||
data['liveURL'] = this.liveURL;
|
|
||||||
data['groupID'] = this.groupID;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Participant {
|
|
||||||
GroupInfo? groupInfo;
|
|
||||||
GroupMembersInfo? groupMemberInfo;
|
|
||||||
UserInfo? userInfo;
|
|
||||||
|
|
||||||
Participant({this.groupInfo, this.groupMemberInfo, this.userInfo});
|
|
||||||
|
|
||||||
Participant.fromJson(Map<String, dynamic> json) {
|
|
||||||
groupInfo = json['groupInfo'] != null
|
|
||||||
? GroupInfo.fromJson(json['groupInfo'])
|
|
||||||
: null;
|
|
||||||
groupMemberInfo = json['groupMemberInfo'] != null
|
|
||||||
? GroupMembersInfo.fromJson(json['groupMemberInfo'])
|
|
||||||
: null;
|
|
||||||
userInfo =
|
|
||||||
json['userInfo'] != null ? UserInfo.fromJson(json['userInfo']) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
if (this.groupInfo != null) {
|
|
||||||
data['groupInfo'] = this.groupInfo!.toJson();
|
|
||||||
}
|
|
||||||
if (this.groupMemberInfo != null) {
|
|
||||||
data['groupMemberInfo'] = this.groupMemberInfo!.toJson();
|
|
||||||
}
|
|
||||||
if (this.userInfo != null) {
|
|
||||||
data['userInfo'] = this.userInfo!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class CustomSignaling {
|
|
||||||
String? roomID;
|
|
||||||
String? customInfo;
|
|
||||||
|
|
||||||
CustomSignaling({this.roomID, this.customInfo});
|
|
||||||
|
|
||||||
CustomSignaling.fromJson(Map<String, dynamic> json) {
|
|
||||||
roomID = json['roomID'];
|
|
||||||
customInfo = json['customInfo'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final data = Map<String, dynamic>();
|
|
||||||
data['roomID'] = roomID;
|
|
||||||
data['customInfo'] = customInfo;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -102,15 +102,9 @@ class UserInfo {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
UserInfo.fromJson(Map<String, dynamic> json) {
|
UserInfo.fromJson(Map<String, dynamic> json) {
|
||||||
publicInfo = json['publicInfo'] != null
|
publicInfo = json['publicInfo'] != null ? PublicUserInfo.fromJson(json['publicInfo']) : null;
|
||||||
? PublicUserInfo.fromJson(json['publicInfo'])
|
friendInfo = json['friendInfo'] != null ? FriendInfo.fromJson(json['friendInfo']) : null;
|
||||||
: null;
|
blackInfo = json['blackInfo'] != null ? BlacklistInfo.fromJson(json['blackInfo']) : null;
|
||||||
friendInfo = json['friendInfo'] != null
|
|
||||||
? FriendInfo.fromJson(json['friendInfo'])
|
|
||||||
: null;
|
|
||||||
blackInfo = json['blackInfo'] != null
|
|
||||||
? BlacklistInfo.fromJson(json['blackInfo'])
|
|
||||||
: null;
|
|
||||||
//
|
//
|
||||||
isFriendship = friendInfo != null;
|
isFriendship = friendInfo != null;
|
||||||
isBlacklist = blackInfo != null;
|
isBlacklist = blackInfo != null;
|
||||||
@@ -164,25 +158,17 @@ class UserInfo {
|
|||||||
|
|
||||||
bool get isMale => gender == 1;
|
bool get isMale => gender == 1;
|
||||||
|
|
||||||
String get _userID => isFriendship!
|
String get _userID => isFriendship! ? friendInfo!.userID! : (isBlacklist! ? blackInfo!.userID! : publicInfo!.userID!);
|
||||||
? friendInfo!.userID!
|
|
||||||
: (isBlacklist! ? blackInfo!.userID! : publicInfo!.userID!);
|
|
||||||
|
|
||||||
String? get _nickname => isFriendship!
|
String? get _nickname =>
|
||||||
? friendInfo?.nickname
|
isFriendship! ? friendInfo?.nickname : (isBlacklist! ? blackInfo?.nickname : publicInfo?.nickname);
|
||||||
: (isBlacklist! ? blackInfo?.nickname : publicInfo?.nickname);
|
|
||||||
|
|
||||||
String? get _faceUrl => isFriendship!
|
String? get _faceUrl =>
|
||||||
? friendInfo?.faceURL
|
isFriendship! ? friendInfo?.faceURL : (isBlacklist! ? blackInfo?.faceURL : publicInfo?.faceURL);
|
||||||
: (isBlacklist! ? blackInfo?.faceURL : publicInfo?.faceURL);
|
|
||||||
|
|
||||||
int? get _gender => isFriendship!
|
int? get _gender => isFriendship! ? friendInfo?.gender : (isBlacklist! ? blackInfo?.gender : publicInfo?.gender);
|
||||||
? friendInfo?.gender
|
|
||||||
: (isBlacklist! ? blackInfo?.gender : publicInfo?.gender);
|
|
||||||
|
|
||||||
String? get _ex => isFriendship!
|
String? get _ex => isFriendship! ? friendInfo?.ex : (isBlacklist! ? blackInfo?.ex : publicInfo?.ex);
|
||||||
? friendInfo?.ex
|
|
||||||
: (isBlacklist! ? blackInfo?.ex : publicInfo?.ex);
|
|
||||||
|
|
||||||
String? get _phoneNumber => friendInfo?.phoneNumber;
|
String? get _phoneNumber => friendInfo?.phoneNumber;
|
||||||
|
|
||||||
@@ -201,10 +187,7 @@ class UserInfo {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) =>
|
bool operator ==(Object other) =>
|
||||||
identical(this, other) ||
|
identical(this, other) || other is UserInfo && runtimeType == other.runtimeType && userID == other.userID;
|
||||||
other is UserInfo &&
|
|
||||||
runtimeType == other.runtimeType &&
|
|
||||||
userID == other.userID;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode => userID.hashCode;
|
int get hashCode => userID.hashCode;
|
||||||
@@ -551,3 +534,34 @@ class FriendApplicationInfo {
|
|||||||
/// 已拒绝
|
/// 已拒绝
|
||||||
bool get isRejected => handleResult == -1;
|
bool get isRejected => handleResult == -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class UserStatusInfo {
|
||||||
|
/// 用户id
|
||||||
|
String? userID;
|
||||||
|
|
||||||
|
/// 状态
|
||||||
|
int? status;
|
||||||
|
|
||||||
|
/// 平台ID
|
||||||
|
List<int>? platformIDs;
|
||||||
|
|
||||||
|
UserStatusInfo({
|
||||||
|
this.userID,
|
||||||
|
this.status,
|
||||||
|
this.platformIDs,
|
||||||
|
});
|
||||||
|
|
||||||
|
UserStatusInfo.fromJson(Map<String, dynamic> json) {
|
||||||
|
userID = json['userID'];
|
||||||
|
status = json['status'];
|
||||||
|
platformIDs = json["platformIDs"] == null ? [] : List<int>.from(json["platformIDs"].map((x) => x));
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final data = Map<String, dynamic>();
|
||||||
|
data['userID'] = this.userID;
|
||||||
|
data['status'] = this.status;
|
||||||
|
data['platformIDs'] = List<dynamic>.from(platformIDs!.map((x) => x));
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
|
|
||||||
class OpenIM {
|
class OpenIM {
|
||||||
static const version = '3.0.0';
|
static const version = '3.2.1';
|
||||||
|
|
||||||
static const _channel = const MethodChannel('flutter_openim_sdk');
|
static const _channel = const MethodChannel('flutter_openim_sdk');
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: flutter_openim_sdk
|
name: flutter_openim_sdk
|
||||||
description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source.
|
description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source.
|
||||||
version: 3.2.0-alpha.0
|
version: 3.2.1
|
||||||
homepage: https://www.rentsoft.cn
|
homepage: https://www.rentsoft.cn
|
||||||
repository: https://github.com/OpenIMSDK/Open-IM-SDK-Flutter
|
repository: https://github.com/OpenIMSDK/Open-IM-SDK-Flutter
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user