private void SendLocation(TLMessageMediaGeo mediaGeo) { var chat = Chat as TLEncryptedChat; if (chat == null) { return; } if (mediaGeo == null) { return; } var geoPoint = mediaGeo.Geo as TLGeoPoint; if (geoPoint == null) { return; } var decryptedTuple = GetDecryptedMessageAndObject(TLString.Empty, new TLDecryptedMessageMediaGeoPoint { Lat = geoPoint.Lat, Long = geoPoint.Long }, chat); BeginOnUIThread(() => { InsertSendingMessage(decryptedTuple.Item1); RaiseScrollToBottom(); NotifyOfPropertyChange(() => DescriptionVisibility); SendEncrypted(chat, decryptedTuple.Item2, MTProtoService, CacheService); }); }
private void BtnCurrentLocation_Click(object sender, RoutedEventArgs e) { Media = new TLMessageMediaGeo { Geo = new TLGeoPoint { Lat = mMap.Center.Position.Latitude, Long = mMap.Center.Position.Longitude } }; Dialog.Hide(ContentDialogBaseResult.OK); }
public Task <bool> SendGeoPointAsync(double latitude, double longitude) { var tsc = new TaskCompletionSource <bool>(); var date = TLUtils.DateToUniversalTimeTLInt(ProtoService.ClientTicksDelta, DateTime.Now); var media = new TLMessageMediaGeo { Geo = new TLGeoPoint { Lat = latitude, Long = longitude } }; 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 TLInputMediaGeoPoint { GeoPoint = new TLInputGeoPoint { Lat = latitude, Long = longitude } }; var result = await ProtoService.SendMediaAsync(Peer, inputMedia, message); if (result.IsSucceeded) { tsc.SetResult(true); } else { tsc.SetResult(false); } }); return(tsc.Task); }
private void SendLocation(TLMessageMediaGeo mediaGeo) { var message = GetMessage(TLString.Empty, mediaGeo); BeginOnUIThread(() => { var previousMessage = InsertSendingMessage(message); IsEmptyDialog = Items.Count == 0 && (_messages == null || _messages.Count == 0) && LazyItems.Count == 0; BeginOnThreadPool(() => CacheService.SyncSendingMessage( message, previousMessage, SendLocationInternal)); }); }
private void SendGeoPoint(TLGeoPoint geoPoint) { var media = new TLMessageMediaGeo { Geo = geoPoint }; 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), SendGeoPointInternal)); }); }
public void AttchLocation(GeoCoordinate location) { if (location == null) { return; } if (location.Latitude == 0.0 && location.Longitude == 0.0) { return; } var mediaGeo = new TLMessageMediaGeo { Geo = new TLGeoPoint { Lat = new TLDouble(location.Latitude), Long = new TLDouble(location.Longitude) } }; CloseEditor(); ContinueAction.SafeInvoke(mediaGeo); }