import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; /// Group Information class GroupInfo { /// Group ID String groupID; /// Group Name String? groupName; /// Group Announcement String? notification; /// Group Introduction String? introduction; /// Group Avatar String? faceURL; /// Owner's ID String? ownerUserID; /// Creation Time int? createTime; /// Number of Group Members int? memberCount; /// Group Status: 0 - Normal, 1 - Blocked, 2 - Dissolved, 3 - Muted int? status; /// Creator's ID String? creatorUserID; /// Group Type [GroupType] int? groupType; /// Extra Information String? ex; /// Entry Verification Method [GroupVerification] int? needVerification; /// Don't Allow Access to Member Information via the Group: 0 - Disabled, 1 - Enabled int? lookMemberInfo; /// Don't Allow Adding Friends via the Group: 0 - Disabled, 1 - Enabled int? applyMemberFriend; /// Notification Update Time int? notificationUpdateTime; /// Notification Initiator String? notificationUserID; GroupInfo({ required this.groupID, this.groupName, this.notification, this.introduction, this.faceURL, this.ownerUserID, this.createTime, this.memberCount, this.status, this.creatorUserID, this.groupType, this.ex, this.needVerification, this.lookMemberInfo, this.applyMemberFriend, this.notificationUpdateTime, this.notificationUserID, }); GroupInfo.fromJson(Map json) : groupID = json['groupID'] { groupName = json['groupName']; notification = json['notification']; introduction = json['introduction']; faceURL = json['faceURL']; ownerUserID = json['ownerUserID']; createTime = json['createTime']; memberCount = json['memberCount']; status = json['status']; creatorUserID = json['creatorUserID']; groupType = json['groupType']; ex = json['ex']; needVerification = json['needVerification']; lookMemberInfo = json['lookMemberInfo']; applyMemberFriend = json['applyMemberFriend']; notificationUpdateTime = json['notificationUpdateTime']; notificationUserID = json['notificationUserID']; } Map toJson() { final data = Map(); data['groupID'] = this.groupID; data['groupName'] = this.groupName; data['notification'] = this.notification; data['introduction'] = this.introduction; data['faceURL'] = this.faceURL; data['ownerUserID'] = this.ownerUserID; data['createTime'] = this.createTime; data['memberCount'] = this.memberCount; data['status'] = this.status; data['creatorUserID'] = this.creatorUserID; data['groupType'] = this.groupType; data['ex'] = this.ex; data['needVerification'] = this.needVerification; data['lookMemberInfo'] = this.lookMemberInfo; data['applyMemberFriend'] = this.applyMemberFriend; data['notificationUpdateTime'] = this.notificationUpdateTime; data['notificationUserID'] = this.notificationUserID; return data; } /// Corresponding Conversation Type for Group Type int get sessionType => groupType == GroupType.general ? ConversationType.group : ConversationType.superGroup; @override bool operator ==(Object other) => identical(this, other) || other is GroupInfo && runtimeType == other.runtimeType && groupID == other.groupID; @override int get hashCode => groupID.hashCode; } /// Group Member Information class GroupMembersInfo { /// Group ID String? groupID; /// User ID String? userID; /// Nickname String? nickname; /// Avatar String? faceURL; /// Role [GroupRoleLevel] int? roleLevel; /// Join Time int? joinTime; /// Entry Source: 2 - Invited, 3 - Searched, 4 - QR Code int? joinSource; /// Operator's ID String? operatorUserID; /// Extra Information String? ex; /// Mute End Time (seconds) int? muteEndTime; /// Application Manager Level int? appManagerLevel; /// Inviter's User ID String? inviterUserID; GroupMembersInfo({ this.groupID, this.userID, this.roleLevel, this.joinTime, this.nickname, this.faceURL, this.ex, this.joinSource, this.operatorUserID, this.muteEndTime, this.appManagerLevel, this.inviterUserID, }); GroupMembersInfo.fromJson(Map json) { groupID = json['groupID']; userID = json['userID']; roleLevel = json['roleLevel']; joinTime = json['joinTime']; nickname = json['nickname']; faceURL = json['faceURL']; ex = json['ex']; joinSource = json['joinSource']; operatorUserID = json['operatorUserID']; muteEndTime = json['muteEndTime']; appManagerLevel = json['appManagerLevel']; inviterUserID = json['inviterUserID']; } Map toJson() { final data = Map(); data['groupID'] = this.groupID; data['userID'] = this.userID; data['roleLevel'] = this.roleLevel; data['joinTime'] = this.joinTime; data['nickname'] = this.nickname; data['faceURL'] = this.faceURL; data['ex'] = this.ex; data['joinSource'] = this.joinSource; data['operatorUserID'] = this.operatorUserID; data['muteEndTime'] = this.muteEndTime; data['appManagerLevel'] = this.appManagerLevel; data['inviterUserID'] = this.inviterUserID; return data; } @override bool operator ==(Object other) => identical(this, other) || other is GroupMembersInfo && runtimeType == other.runtimeType && groupID == other.groupID && userID == other.userID; @override int get hashCode => groupID.hashCode ^ userID.hashCode; } /// Group Member Role class GroupMemberRole { /// User ID String? userID; /// [GroupRoleLevel] 1: Normal Member, 2: Group Owner, 3: Administrator int? roleLevel; GroupMemberRole({this.userID, this.roleLevel = 1}); GroupMemberRole.fromJson(Map json) { userID = json['userID']; roleLevel = json['roleLevel']; } Map toJson() { final data = Map(); data['userID'] = this.userID; data['roleLevel'] = this.roleLevel; return data; } } /// Group Application Information class GroupApplicationInfo { /// Group ID String? groupID; /// Group Nickname String? groupName; /// Group Announcement String? notification; /// Group Introduction String? introduction; /// Group Avatar String? groupFaceURL; /// Group Creation Time int? createTime; /// Group Status int? status; /// Creator's ID String? creatorUserID; /// Group Type int? groupType; /// Owner's ID String? ownerUserID; /// Member Count int? memberCount; /// User ID Initiating the Group Join Request String? userID; /// User's Nickname Initiating the Group Join Request String? nickname; /// User's Avatar Initiating the Group Join Request String? userFaceURL; /// User's Gender Initiating the Group Join Request int? gender; /// Handling Result: -1 - Rejected, 1 - Accepted int? handleResult; /// Request Description String? reqMsg; /// Handling Result Description String? handledMsg; /// Request Time int? reqTime; /// Handler User ID String? handleUserID; /// Handling Time int? handledTime; /// Extra Information String? ex; /// Join Source: 2 - Invited, 3 - Searched, 4 - QR Code int? joinSource; /// Inviting User's ID String? inviterUserID; GroupApplicationInfo({ this.groupID, this.groupName, this.notification, this.introduction, this.groupFaceURL, this.createTime, this.status, this.creatorUserID, this.groupType, this.ownerUserID, this.memberCount, this.userID, this.nickname, this.userFaceURL, this.gender, this.handleResult, this.reqMsg, this.handledMsg, this.reqTime, this.handleUserID, this.handledTime, this.ex, this.inviterUserID, this.joinSource, }); GroupApplicationInfo.fromJson(Map json) { groupID = json['groupID']; groupName = json['groupName']; notification = json['notification']; introduction = json['introduction']; groupFaceURL = json['groupFaceURL']; createTime = json['createTime']; status = json['status']; creatorUserID = json['creatorUserID']; groupType = json['groupType']; ownerUserID = json['ownerUserID']; memberCount = json['memberCount']; userID = json['userID']; nickname = json['nickname']; userFaceURL = json['userFaceURL']; gender = json['gender']; handleResult = json['handleResult']; reqMsg = json['reqMsg']; handledMsg = json['handledMsg']; reqTime = json['reqTime']; handleUserID = json['handleUserID']; handledTime = json['handledTime']; ex = json['ex']; inviterUserID = json['inviterUserID']; joinSource = json['joinSource']; } Map toJson() { final data = Map(); data['groupID'] = this.groupID; data['groupName'] = this.groupName; data['notification'] = this.notification; data['introduction'] = this.introduction; data['groupFaceURL'] = this.groupFaceURL; data['createTime'] = this.createTime; data['status'] = this.status; data['creatorUserID'] = this.creatorUserID; data['groupType'] = this.groupType; data['ownerUserID'] = this.ownerUserID; data['memberCount'] = this.memberCount; data['userID'] = this.userID; data['nickname'] = this.nickname; data['userFaceURL'] = this.userFaceURL; data['gender'] = this.gender; data['handleResult'] = this.handleResult; data['reqMsg'] = this.reqMsg; data['handledMsg'] = this.handledMsg; data['reqTime'] = this.reqTime; data['handleUserID'] = this.handleUserID; data['handledTime'] = this.handledTime; data['ex'] = this.ex; data['inviterUserID'] = this.inviterUserID; data['joinSource'] = this.joinSource; return data; } } /// Group Invitation Result class GroupInviteResult { String? userID; int? result; GroupInviteResult({this.userID, this.result}); GroupInviteResult.fromJson(Map json) { userID = json['userID']; result = json['result']; } Map toJson() { final data = Map(); data['userID'] = this.userID; data['result'] = this.result; return data; } }