示例#1
0
        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);
        }
示例#4
0
        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));
            });
        }
示例#6
0
        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);
        }