private void SendContactInternal(TLMessageBase message)
        {
            var message25 = message as TLMessage25;

            if (message25 == null)
            {
                return;
            }

            var mediaContact = message25.Media as TLMessageMediaContact;

            if (mediaContact == null)
            {
                return;
            }

            var inputMediaContact = new TLInputMediaContact
            {
                FirstName   = mediaContact.FirstName,
                LastName    = mediaContact.LastName,
                PhoneNumber = mediaContact.PhoneNumber
            };

            message25.InputMedia = inputMediaContact;

            ShellViewModel.SendMediaInternal(message25, MTProtoService, StateService, CacheService);
        }
Example #2
0
        public override async Task <TlFileToSend> GetMediaTl(TelegramClient telegramClient)
        {
            var r = new TLInputMediaContact
            {
                FirstName = _firstName,
                LastName  = _lastName, PhoneNumber = _phoneNumber
            };

            return(new TlFileToSend(r));
        }
        public Task <bool> SendContactAsync(TLUser user)
        {
            var tsc  = new TaskCompletionSource <bool>();
            var date = TLUtils.DateToUniversalTimeTLInt(ProtoService.ClientTicksDelta, DateTime.Now);

            var media = new TLMessageMediaContact
            {
                PhoneNumber = user.Phone,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                UserId      = user.Id,
            };

            var message = TLUtils.GetMessage(SettingsHelper.UserId, Peer.ToPeer(), TLMessageState.Sending, true, true, date, string.Empty, media, TLLong.Random(), null);

            if (Reply != null)
            {
                message.HasReplyToMsgId = true;
                message.ReplyToMsgId    = Reply.Id;
                message.Reply           = Reply;
                Reply = null;
            }

            var previousMessage = InsertSendingMessage(message);

            CacheService.SyncSendingMessage(message, previousMessage, async(m) =>
            {
                var inputMedia = new TLInputMediaContact
                {
                    PhoneNumber = user.Phone,
                    FirstName   = user.FirstName,
                    LastName    = user.LastName
                };

                var result = await ProtoService.SendMediaAsync(Peer, inputMedia, message);
                if (result.IsSucceeded)
                {
                    tsc.SetResult(true);
                }
                else
                {
                    tsc.SetResult(false);
                }
            });

            return(tsc.Task);
        }