Files
open-im-sdk-flutter-m/lib/src/models/notification_info.dart
gem 830ebf6b93 Merge commit '0a175bb8b1eb8d4a40c66107ca77a2ff33212bf9' into pre_merge
# Conflicts:
#	.idea/libraries/Dart_SDK.xml
#	android/build.gradle
#	android/gradle/wrapper/gradle-wrapper.properties
#	android/src/main/AndroidManifest.xml
#	example/android/app/build.gradle
#	example/android/build.gradle
#	example/android/settings.gradle
#	example/lib/main.dart
#	example/pubspec.lock
#	ios/flutter_openim_sdk.podspec
#	lib/src/manager/im_conversation_manager.dart
#	lib/src/manager/im_friendship_manager.dart
#	lib/src/models/notification_info.dart
2025-12-10 18:13:02 +08:00

684 lines
18 KiB
Dart

import '../../flutter_openim_sdk.dart';
/// OA Notification
class OANotification {
/// Title
String? notificationName;
/// Avatar
String? notificationFaceURL;
/// Type
int? notificationType;
/// Text content
String? text;
/// Redirect link
String? externalUrl;
/// 0: Text-only notification
/// 1: Text + Image notification
/// 2: Text + Video notification
/// 3: Text + File notification
int? mixType;
/// Image information
PictureElem? pictureElem;
/// Sound information
SoundElem? soundElem;
/// Video information
VideoElem? videoElem;
/// File information
FileElem? fileElem;
/// Additional field
String? ex;
OANotification(
{this.notificationName,
this.notificationFaceURL,
this.notificationType,
this.text,
this.externalUrl,
this.mixType,
this.pictureElem,
this.soundElem,
this.videoElem,
this.fileElem,
this.ex});
OANotification.fromJson(Map<String, dynamic> json) {
notificationName = json['notificationName'];
notificationFaceURL = json['notificationFaceURL'];
notificationType = json['notificationType'];
text = json['text'];
externalUrl = json['externalUrl'];
mixType = json['mixType'];
pictureElem = json['pictureElem'] != null ? PictureElem.fromJson(json['pictureElem']) : null;
soundElem = json['soundElem'] != null ? SoundElem.fromJson(json['soundElem']) : null;
videoElem = json['videoElem'] != null ? VideoElem.fromJson(json['videoElem']) : null;
fileElem = json['fileElem'] != null ? FileElem.fromJson(json['fileElem']) : null;
ex = json['ex'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['notificationName'] = notificationName;
data['notificationFaceURL'] = notificationFaceURL;
data['notificationType'] = notificationType;
data['text'] = text;
data['externalUrl'] = externalUrl;
data['mixType'] = mixType;
if (pictureElem != null) {
data['pictureElem'] = pictureElem!.toJson();
}
if (soundElem != null) {
data['soundElem'] = soundElem!.toJson();
}
if (videoElem != null) {
data['videoElem'] = videoElem!.toJson();
}
if (fileElem != null) {
data['fileElem'] = fileElem!.toJson();
}
data['ex'] = ex;
return data;
}
}
/// Group Event Notification
class GroupNotification {
/// Group information
GroupInfo? group;
/// Current event operator information
GroupMembersInfo? opUser;
/// Group owner information
GroupMembersInfo? groupOwnerUser;
/// List of affected group members
List<GroupMembersInfo>? memberList;
GroupNotification({
this.group,
this.opUser,
this.groupOwnerUser,
this.memberList,
});
GroupNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
groupOwnerUser = json['groupOwnerUser'] != null ? GroupMembersInfo.fromJson(json['groupOwnerUser']) : null;
if (json['memberList'] != null) {
memberList = <GroupMembersInfo>[];
json['memberList'].forEach((v) {
memberList!.add(GroupMembersInfo.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (groupOwnerUser != null) {
data['groupOwnerUser'] = groupOwnerUser!.toJson();
}
if (memberList != null) {
data['memberList'] = memberList!.map((v) => v.toJson()).toList();
}
return data;
}
}
/// User Invited to Join Group Notification
class InvitedJoinGroupNotification {
/// Group information
GroupInfo? group;
/// Operator information
GroupMembersInfo? opUser;
/// Inviter information
GroupMembersInfo? inviterUser;
/// List of members invited to join the group
List<GroupMembersInfo>? invitedUserList;
InvitedJoinGroupNotification({this.group, this.opUser, this.invitedUserList});
InvitedJoinGroupNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
inviterUser = json['inviterUser'] != null ? GroupMembersInfo.fromJson(json['inviterUser']) : null;
if (json['invitedUserList'] != null) {
invitedUserList = <GroupMembersInfo>[];
json['invitedUserList'].forEach((v) {
invitedUserList!.add(GroupMembersInfo.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (inviterUser != null) {
data['inviterUser'] = inviterUser!.toJson();
}
if (invitedUserList != null) {
data['invitedUserList'] = invitedUserList!.map((v) => v.toJson()).toList();
}
return data;
}
}
/// Group Member Kicked Notification
class KickedGroupMemeberNotification {
/// Group information
GroupInfo? group;
/// Operator information
GroupMembersInfo? opUser;
/// List of members kicked from the group
List<GroupMembersInfo>? kickedUserList;
KickedGroupMemeberNotification({this.group, this.opUser, this.kickedUserList});
KickedGroupMemeberNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
if (json['kickedUserList'] != null) {
kickedUserList = <GroupMembersInfo>[];
json['kickedUserList'].forEach((v) {
kickedUserList!.add(GroupMembersInfo.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (kickedUserList != null) {
data['kickedUserList'] = kickedUserList!.map((v) => v.toJson()).toList();
}
return data;
}
}
/// Quit Group Notification
class QuitGroupNotification {
/// Group information
GroupInfo? group;
/// Information of the member who quit the group
GroupMembersInfo? quitUser;
QuitGroupNotification({this.group, this.quitUser});
QuitGroupNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
quitUser = json['quitUser'] != null ? GroupMembersInfo.fromJson(json['quitUser']) : null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (quitUser != null) {
data['quitUser'] = quitUser!.toJson();
}
return data;
}
}
/// Enter Group Notification
class EnterGroupNotification {
/// Group information
GroupInfo? group;
/// Information of the member who entered the group
GroupMembersInfo? entrantUser;
EnterGroupNotification({this.group, this.entrantUser});
EnterGroupNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
entrantUser = json['entrantUser'] != null ? GroupMembersInfo.fromJson(json['entrantUser']) : null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (entrantUser != null) {
data['entrantUser'] = entrantUser!.toJson();
}
return data;
}
}
/// Group Rights Transfer Notification
class GroupRightsTransferNoticication {
/// Group information
GroupInfo? group;
/// Operator information
GroupMembersInfo? opUser;
/// New group owner information
GroupMembersInfo? newGroupOwner;
GroupRightsTransferNoticication({
this.group,
this.opUser,
this.newGroupOwner,
});
GroupRightsTransferNoticication.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
newGroupOwner = json['newGroupOwner'] != null ? GroupMembersInfo.fromJson(json['newGroupOwner']) : null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (newGroupOwner != null) {
data['newGroupOwner'] = newGroupOwner!.toJson();
}
return data;
}
}
/// Mute Member Notification
class MuteMemberNotification {
/// Group information
GroupInfo? group;
/// Operator information
GroupMembersInfo? opUser;
/// Muted member information
GroupMembersInfo? mutedUser;
/// Mute duration in seconds
int? mutedSeconds;
MuteMemberNotification({
this.group,
this.opUser,
this.mutedUser,
this.mutedSeconds,
});
MuteMemberNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
mutedUser = json['mutedUser'] != null ? GroupMembersInfo.fromJson(json['mutedUser']) : null;
mutedSeconds = json['mutedSeconds'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (mutedUser != null) {
data['mutedUser'] = mutedUser!.toJson();
}
data['mutedSeconds'] = mutedSeconds;
return data;
}
}
/// Burn After Reading Notification
class BurnAfterReadingNotification {
/// Receiver
String? recvID;
/// Sender
String? sendID;
/// Whether enabled
bool? isPrivate;
BurnAfterReadingNotification({this.recvID, this.sendID, this.isPrivate});
BurnAfterReadingNotification.fromJson(Map<String, dynamic> json) {
recvID = json['recvID'];
sendID = json['sendID'];
isPrivate = json['isPrivate'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['recvID'] = recvID;
data['sendID'] = sendID;
data['isPrivate'] = isPrivate;
return data;
}
}
/// Group Member Information Changed Notification
class GroupMemberInfoChangedNotification {
/// Group information
GroupInfo? group;
/// Operator information
GroupMembersInfo? opUser;
/// Member with changed information
GroupMembersInfo? changedUser;
GroupMemberInfoChangedNotification({
this.group,
this.opUser,
this.changedUser,
});
GroupMemberInfoChangedNotification.fromJson(Map<String, dynamic> json) {
group = json['group'] != null ? GroupInfo.fromJson(json['group']) : null;
opUser = json['opUser'] != null ? GroupMembersInfo.fromJson(json['opUser']) : null;
changedUser = json['changedUser'] != null ? GroupMembersInfo.fromJson(json['changedUser']) : null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (group != null) {
data['group'] = group!.toJson();
}
if (opUser != null) {
data['opUser'] = opUser!.toJson();
}
if (changedUser != null) {
data['changedUser'] = changedUser!.toJson();
}
return data;
}
}
///todo 所有的聊天的操作者都没有,暂时没有处理
/// 聊天室事件通知
class ChannelNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 当前事件操作者信息
ChannelMembersInfo? opUser;
/// 聊天室拥有者信息
ChannelMembersInfo? ChannelOwnerUser;
/// 产生影响的聊天室成员列表
List<ChannelMembersInfo>? memberList;
ChannelNotification({
this.Channel,
this.opUser,
this.ChannelOwnerUser,
this.memberList,
});
ChannelNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
opUser = json['opUser'] != null
? ChannelMembersInfo.fromJson(json['opUser'])
: null;
ChannelOwnerUser = json['channelOwnerUser'] != null
? ChannelMembersInfo.fromJson(json['channelOwnerUser'])
: null;
if (json['memberList'] != null) {
memberList = <ChannelMembersInfo>[];
json['memberList'].forEach((v) {
memberList!.add(ChannelMembersInfo.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (this.Channel != null) {
data['channel'] = this.Channel!.toJson();
}
if (this.opUser != null) {
data['opUser'] = this.opUser!.toJson();
}
if (this.ChannelOwnerUser != null) {
data['channelOwnerUser'] = this.ChannelOwnerUser!.toJson();
}
if (this.memberList != null) {
data['memberList'] = this.memberList!.map((v) => v.toJson()).toList();
}
return data;
}
}
/// 组踢出成员通知
class KickedChannelMemeberNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 操作者信息
ChannelMembersInfo? opUser;
/// 被踢出聊天室的成员信息列表
List<ChannelMembersInfo>? kickedUserList;
KickedChannelMemeberNotification(
{this.Channel, this.opUser, this.kickedUserList});
KickedChannelMemeberNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
opUser = json['opUser'] != null
? ChannelMembersInfo.fromJson(json['opUser'])
: null;
if (json['kickedUserList'] != null) {
kickedUserList = <ChannelMembersInfo>[];
json['kickedUserList'].forEach((v) {
kickedUserList!.add(ChannelMembersInfo.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.Channel != null) {
data['channel'] = this.Channel!.toJson();
}
if (this.opUser != null) {
data['opUser'] = this.opUser!.toJson();
}
if (this.kickedUserList != null) {
data['kickedUserList'] =
this.kickedUserList!.map((v) => v.toJson()).toList();
}
return data;
}
}
/// 退出聊天室通知
class QuitChannelNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 退聊天室的成员信息
ChannelMembersInfo? quitUser;
QuitChannelNotification({this.Channel, this.quitUser});
QuitChannelNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
quitUser = json['quitUser'] != null
? ChannelMembersInfo.fromJson(json['quitUser'])
: null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (this.Channel != null) {
data['channel'] = this.Channel!.toJson();
}
if (this.quitUser != null) {
data['quitUser'] = this.quitUser!.toJson();
}
return data;
}
}
/// 进聊天室通知
class EnterChannelNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 进入聊天室的成员信息
ChannelMembersInfo? entrantUser;
EnterChannelNotification({this.Channel, this.entrantUser});
EnterChannelNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
entrantUser = json['entrantUser'] != null
? ChannelMembersInfo.fromJson(json['entrantUser'])
: null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (this.Channel != null) {
data['channel'] = this.Channel!.toJson();
}
if (this.entrantUser != null) {
data['quitUser'] = this.entrantUser!.toJson();
}
return data;
}
}
/// 禁言成员通知
class MuteChannelMemberNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 操作者信息
ChannelMembersInfo? opUser;
/// 被禁言的成员信息
ChannelMembersInfo? mutedUser;
/// 禁言时间s
int? mutedSeconds;
MuteChannelMemberNotification({
this.Channel,
this.opUser,
this.mutedUser,
this.mutedSeconds,
});
MuteChannelMemberNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
opUser = json['opUser'] != null
? ChannelMembersInfo.fromJson(json['opUser'])
: null;
mutedUser = json['mutedUser'] != null
? ChannelMembersInfo.fromJson(json['mutedUser'])
: null;
mutedSeconds = json['mutedSeconds'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (this.Channel != null) {
data['channel'] = this.Channel!.toJson();
}
if (this.opUser != null) {
data['opUser'] = this.opUser!.toJson();
}
if (this.mutedUser != null) {
data['mutedUser'] = this.mutedUser!.toJson();
}
data['mutedSeconds'] = this.mutedSeconds;
return data;
}
}
/// 聊天室成员信息发送变化通知
class ChannelMemberInfoChangedNotification {
/// 聊天室信息
ChannelInfo? Channel;
/// 操作者信息
ChannelMembersInfo? opUser;
/// 资料发生改变的成员
ChannelMembersInfo? changedUser;
ChannelMemberInfoChangedNotification({
this.Channel,
this.opUser,
this.changedUser,
});
ChannelMemberInfoChangedNotification.fromJson(Map<String, dynamic> json) {
Channel =
json['channel'] != null ? ChannelInfo.fromJson(json['channel']) : null;
opUser = json['opUser'] != null
? ChannelMembersInfo.fromJson(json['opUser'])
: null;
changedUser = json['changedUser'] != null
? ChannelMembersInfo.fromJson(json['changedUser'])
: null;
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
if (this.Channel != null) {
data['Channel'] = this.Channel!.toJson();
}
if (this.opUser != null) {
data['opUser'] = this.opUser!.toJson();
}
if (this.changedUser != null) {
data['changedUser'] = this.changedUser!.toJson();
}
return data;
}
}