private TextSecureGroup createGroupInfo(TextSecureEnvelope envelope, DataMessage content) { if (!content.HasGroup) { return(null); } TextSecureGroup.Type type; switch (content.Group.Type) { case GroupContext.Types.Type.DELIVER: type = TextSecureGroup.Type.DELIVER; break; case GroupContext.Types.Type.UPDATE: type = TextSecureGroup.Type.UPDATE; break; case GroupContext.Types.Type.QUIT: type = TextSecureGroup.Type.QUIT; break; default: type = TextSecureGroup.Type.UNKNOWN; break; } if (content.Group.Type != GroupContext.Types.Type.DELIVER) { String name = null; IList <String> members = null; TextSecureAttachmentPointer avatar = null; if (content.Group.HasName) { name = content.Group.Name; } if (content.Group.MembersCount > 0) { members = content.Group.MembersList; } if (content.Group.HasAvatar) { avatar = new TextSecureAttachmentPointer(content.Group.Avatar.Id, content.Group.Avatar.ContentType, content.Group.Avatar.Key.ToByteArray(), envelope.getRelay()); } return(new TextSecureGroup(type, content.Group.Id.ToByteArray(), name, members, avatar)); } return(new TextSecureGroup(content.Group.Id.ToByteArray())); }
private TextSecureDataMessage createTextSecureMessage(TextSecureEnvelope envelope, DataMessage content) { TextSecureGroup groupInfo = createGroupInfo(envelope, content); LinkedList <TextSecureAttachment> attachments = new LinkedList <TextSecureAttachment>(); bool endSession = ((content.Flags & (uint)DataMessage.Types.Flags.END_SESSION) != 0); foreach (AttachmentPointer pointer in content.AttachmentsList) { attachments.AddLast(new TextSecureAttachmentPointer(pointer.Id, pointer.ContentType, pointer.Key.ToByteArray(), envelope.getRelay(), pointer.HasSize ? new May <uint>(pointer.Size) : May <uint> .NoValue, pointer.HasThumbnail ? new May <byte[]>(pointer.Thumbnail.ToByteArray()) : May <byte[]> .NoValue)); } return(new TextSecureDataMessage(envelope.getTimestamp(), groupInfo, attachments, content.Body, endSession)); }