private static SignalServiceAttachmentPointer CreateAttachmentPointer(AttachmentPointer pointer)
 {
     return(new SignalServiceAttachmentPointer((int)pointer.CdnNumber,
                                               SignalServiceAttachmentRemoteId.From(pointer) !,
                                               pointer.ContentType,
                                               pointer.Key.ToByteArray(),
                                               pointer.HasSize ? pointer.Size : (uint?)null,
                                               pointer.HasThumbnail ? pointer.Thumbnail.ToByteArray() : null,
                                               (int)pointer.Width,
                                               (int)pointer.Height,
                                               pointer.HasDigest ? pointer.Digest.ToByteArray() : null,
                                               pointer.HasFileName ? pointer.FileName : null,
                                               (pointer.Flags & (uint)AttachmentPointer.Types.Flags.VoiceMessage) != 0,
                                               pointer.HasCaption ? pointer.Caption : null,
                                               pointer.HasBlurHash ? pointer.BlurHash : null,
                                               pointer.HasUploadTimestamp ? (long)pointer.UploadTimestamp : 0));
 }
Exemplo n.º 2
0
 public SignalServiceAttachmentPointer(int cdnNumber, SignalServiceAttachmentRemoteId remoteId,
                                       string contentType, byte[] key,
                                       uint?size, byte[]?preview,
                                       int width, int height,
                                       byte[]?digest, string?fileName,
                                       bool voiceNote, string?caption,
                                       string?blurHash, long uploadTimestamp)
     : base(contentType)
 {
     CdnNumber       = cdnNumber;
     RemoteId        = remoteId;
     Key             = key;
     Size            = size;
     Preview         = preview;
     Digest          = digest;
     FileName        = fileName;
     VoiceNote       = voiceNote;
     Width           = width;
     Height          = height;
     Caption         = caption;
     BlurHash        = blurHash;
     UploadTimestamp = uploadTimestamp;
 }
        private static SignalServiceGroup?CreateGroupV1Info(DataMessage content)
        {
            if (content.Group == null)
            {
                return(null);
            }

            var type = content.Group.Type switch
            {
                GroupContext.Types.Type.Deliver => SignalServiceGroup.GroupType.DELIVER,
                GroupContext.Types.Type.Update => SignalServiceGroup.GroupType.UPDATE,
                GroupContext.Types.Type.Quit => SignalServiceGroup.GroupType.QUIT,
                GroupContext.Types.Type.RequestInfo => SignalServiceGroup.GroupType.REQUEST_INFO,
                _ => SignalServiceGroup.GroupType.UNKNOWN,
            };

            if (content.Group.Type != GroupContext.Types.Type.Deliver)
            {
                string?name = null;
                List <SignalServiceAddress>?   members = null;
                SignalServiceAttachmentPointer?avatar  = null;

                if (content.Group.HasName)
                {
                    name = content.Group.Name;
                }

                if (content.Group.MembersE164.Count > 0)
                {
                    members = new List <SignalServiceAddress>(content.Group.MembersE164.Count);

                    foreach (string member in content.Group.MembersE164)
                    {
                        members.Add(new SignalServiceAddress(null, member));
                    }
                }

                if (content.Group.Avatar != null)
                {
                    AttachmentPointer pointer = content.Group.Avatar;

                    avatar = new SignalServiceAttachmentPointer((int)pointer.CdnNumber,
                                                                SignalServiceAttachmentRemoteId.From(pointer) !,
                                                                pointer.ContentType,
                                                                pointer.Key.ToByteArray(),
                                                                pointer.HasSize ? pointer.Size : 0,
                                                                null,
                                                                0, 0,
                                                                pointer.HasDigest ? pointer.Digest.ToByteArray() : null,
                                                                null,
                                                                false,
                                                                null,
                                                                null,
                                                                pointer.HasUploadTimestamp ? (long)pointer.UploadTimestamp : 0);
                }

                return(new SignalServiceGroup(type, content.Group.Id.ToByteArray(), name, members, avatar));
            }

            return(new SignalServiceGroup(content.Group.Id.ToByteArray()));
        }