Ejemplo n.º 1
0
 public void OpenPhoneContact(TLMessageMediaContact mediaContact)
 {
     StateService.PhoneContact    = mediaContact;
     ContactPicker                = IoC.Get <ShareContactViewModel>();
     ContactPicker.ContinueAction = ContinueSendContact;
     NotifyOfPropertyChange(() => ContactPicker);
 }
 public void UserActionContinue(TLMessageMediaContact media)
 {
     if (PhoneContact != null)
     {
         CloseEditor(true);
         Save();
     }
     else
     {
         CloseEditor(true);
         ContinueAction.SafeInvoke(media);
     }
 }
Ejemplo n.º 3
0
        private void ContinueSendContact(TLMessageMediaContact media)
        {
            var message = GetMessage(TLString.Empty, media);

            BeginOnUIThread(() =>
            {
                var previousMessage = InsertSendingMessage(message);
                IsEmptyDialog       = Items.Count == 0 && (_messages == null || _messages.Count == 0) && LazyItems.Count == 0;

                BeginOnThreadPool(() =>
                                  CacheService.SyncSendingMessage(
                                      message, previousMessage,
                                      SendContactInternal));
            });
        }
        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);
        }
        private void SendContact(TLUserBase contact)
        {
            if (TLString.IsNullOrEmpty(contact.Phone))
            {
                var username = contact as IUserName;
                if (username != null && !TLString.IsNullOrEmpty(username.UserName))
                {
                    _text = string.Format(Constants.UsernameLinkPlaceholder, username.UserName);
                    Send();

                    return;
                }

                return;
            }

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

            var message = GetMessage(TLString.Empty, media);

            BeginOnUIThread(() =>
            {
                var previousMessage = InsertSendingMessage(message);
                IsEmptyDialog       = Items.Count == 0 && LazyItems.Count == 0;

                BeginOnThreadPool(() =>
                                  CacheService.SyncSendingMessage(
                                      message, previousMessage,
                                      TLUtils.InputPeerToPeer(Peer, StateService.CurrentUserId),
                                      SendContactInternal));
            });
        }