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); } }
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)); }); }