Ejemplo n.º 1
0
        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);
        }