Пример #1
0
        public MessageViewModel(OutboundMessageViewModel outboundMessage)
        {
            this._outboundMessage = outboundMessage;
            Message message = new Message();

            message.@out = 1;
            if (outboundMessage.IsChat)
            {
                message.chat_id = (int)outboundMessage.UserOrChatId;
            }
            else
            {
                message.uid = (int)outboundMessage.UserOrChatId;
            }
            message.date        = Extensions.DateTimeToUnixTimestamp(DateTime.UtcNow, true);
            message.sticker_id  = outboundMessage.StickerItem == null ? 0 : outboundMessage.StickerItem.StickerId;
            message.body        = message.sticker_id != 0 || outboundMessage.GraffitiAttachmentItem != null ? "" : outboundMessage.MessageText;
            message.attachments = new List <Attachment>();
            if (message.sticker_id == 0)
            {
                foreach (IOutboundAttachment outboundAttachment in outboundMessage.Attachments.Where <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => !a.IsGeo)))
                {
                    Attachment attachment = outboundAttachment.GetAttachment();
                    if (attachment != null)
                    {
                        message.attachments.Add(attachment);
                    }
                }
            }
            if (outboundMessage.StickerItem != null)
            {
                message.attachments.Add(outboundMessage.StickerItem.CreateAttachment());
            }
            if (outboundMessage.GraffitiAttachmentItem != null)
            {
                message.attachments.Add(outboundMessage.GraffitiAttachmentItem.CreateAttachment());
            }
            if (message.sticker_id == 0)
            {
                OutboundGeoAttachment outboundGeoAttachment = outboundMessage.Attachments.FirstOrDefault <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => a.IsGeo)) as OutboundGeoAttachment;
                if (outboundGeoAttachment != null)
                {
                    message.geo = new Geo()
                    {
                        coordinates = string.Format("{0} {1}", (object)outboundGeoAttachment.Latitude.ToString((IFormatProvider)CultureInfo.InvariantCulture), (object)outboundGeoAttachment.Longitude.ToString((IFormatProvider)CultureInfo.InvariantCulture))
                    }
                }
                ;
                OutboundForwardedMessages forwardedMessages = outboundMessage.Attachments.FirstOrDefault <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => a is OutboundForwardedMessages)) as OutboundForwardedMessages;
                message.fwd_messages = forwardedMessages != null ? new List <Message>((IEnumerable <Message>)forwardedMessages.Messages) : new List <Message>();
            }
            else
            {
                message.fwd_messages = new List <Message>();
            }
            this.InitializeWithMessage(message);
        }
Пример #2
0
        private void DoSend()
        {
            SendMessageRequest sendMessageRequest = new SendMessageRequest();
            int num1 = this._isChat ? 1 : 0;

            sendMessageRequest.IsChat = num1 != 0;
            long userOrChatId = this._userOrChatId;

            sendMessageRequest.UserOrCharId = userOrChatId;
            string messageText = this._messageText;

            sendMessageRequest.MessageBody = messageText;
            StickerItemData stickerItem = this.StickerItem;
            int             num2        = stickerItem != null ? stickerItem.StickerId : 0;

            sendMessageRequest.StickerId = num2;
            string stickerReferrer = this.StickerReferrer;

            sendMessageRequest.StickerReferrer = stickerReferrer;
            SendMessageRequest request = sendMessageRequest;

            if (this.GraffitiAttachmentItem != null && this.GraffitiAttachmentItem.IsUploaded)
            {
                request.AttachmentIds = new List <string>()
                {
                    this.GraffitiAttachmentItem.AttachmentId
                }
            }
            ;
            else if (this.Attachments.Count > 0)
            {
                request.AttachmentIds = new List <string>();
                foreach (IOutboundAttachment outboundAttachment in this.Attachments.Where <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => !a.IsGeo)))
                {
                    request.AttachmentIds.Add(outboundAttachment.AttachmentId);
                }
            }
            OutboundGeoAttachment outboundGeoAttachment = this.Attachments.FirstOrDefault <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => a.IsGeo)) as OutboundGeoAttachment;

            if (outboundGeoAttachment != null)
            {
                request.Latitude      = outboundGeoAttachment.Latitude;
                request.Longitude     = outboundGeoAttachment.Longitude;
                request.IsGeoAttached = true;
            }
            OutboundForwardedMessages forwardedMessages = this.Attachments.FirstOrDefault <IOutboundAttachment>((Func <IOutboundAttachment, bool>)(a => a is OutboundForwardedMessages)) as OutboundForwardedMessages;

            if (forwardedMessages != null)
            {
                request.ForwardedMessagesIds = new List <int>(forwardedMessages.Messages.Select <Message, int>((Func <Message, int>)(m => m.mid)));
            }
            // ISSUE: reference to a compiler-generated field
            if (this.UploadFinished != null)
            {
                // ISSUE: reference to a compiler-generated field
                this.UploadFinished((object)this, EventArgs.Empty);
            }
            MessagesService.Instance.SendMessage(request, (Action <BackendResult <VKClient.Audio.Base.ResponseWithId, ResultCode> >)(res =>
            {
                if (res.ResultCode == ResultCode.Succeeded)
                {
                    this._deliveredMessageId = res.ResultData.response;
                    this._deliveryDateTime   = DateTime.UtcNow;
                    Logger.Instance.Info("OutboundMessageViewModel deliveryId = " + (object)this._deliveredMessageId);
                    this.OutboundMessageStatus = OutboundMessageStatus.Delivered;
                }
                else
                {
                    this.OutboundMessageStatus = OutboundMessageStatus.Failed;
                }
                // ISSUE: reference to a compiler-generated field
                if (this.MessageSent == null)
                {
                    return;
                }
                // ISSUE: reference to a compiler-generated field
                this.MessageSent((object)this, EventArgs.Empty);
            }));
        }