private void SendLocationInternal(TLMessageBase messageBase) { var message = messageBase as TLMessage34; if (message == null) { return; } var mediaGeo = message.Media as TLMessageMediaGeo; if (mediaGeo == null) { return; } var geoPoint = mediaGeo.Geo as TLGeoPoint; if (geoPoint == null) { return; } var inputMediaGeoPoint = new TLInputMediaGeoPoint { GeoPoint = new TLInputGeoPoint { Lat = geoPoint.Lat, Long = geoPoint.Long } }; message.InputMedia = inputMediaGeoPoint; UploadService.SendMediaInternal(message, MTProtoService, StateService, CacheService); }
private void SendGeoPointInternal(TLMessageBase message) { var message25 = message as TLMessage25; if (message25 == null) { return; } var mediaGeo = message25.Media as TLMessageMediaGeo; if (mediaGeo == null) { return; } var geoPoint = mediaGeo.Geo as TLGeoPoint; if (geoPoint == null) { return; } var inputMediaGeoPoint = new TLInputMediaGeoPoint { GeoPoint = new TLInputGeoPoint { Lat = geoPoint.Lat, Long = geoPoint.Long } }; message25.InputMedia = inputMediaGeoPoint; ShellViewModel.SendMediaInternal(message25, MTProtoService, StateService, CacheService); }
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); }