private void Update(TLMessage message, TLInputGeoPointBase geoPoint, bool stop)
        {
            if (message.Media is TLMessageMediaGeoLive geoLiveMedia)
            {
                var expires = ConvertDate(message.Date + geoLiveMedia.Period);
                if (expires > DateTime.Now)
                {
                    var peer = message.Parent?.ToInputPeer();
                    if (peer == null)
                    {
                        return;
                    }

                    if (geoPoint != null)
                    {
                        geoLiveMedia.Geo = geoPoint.ToGeoPoint();
                        geoLiveMedia.RaisePropertyChanged(() => geoLiveMedia.Geo);
                    }

                    if (stop)
                    {
                        geoLiveMedia.Period = 0;
                        geoLiveMedia.RaisePropertyChanged(() => geoLiveMedia.Period);
                    }

                    _protoService.EditMessageAsync(peer, message.Id, null, null, null, geoPoint, false, stop, null);
                }
                else
                {
                    Items.Remove(message);
                }
            }

            if (_locator != null && Items.IsEmpty())
            {
                _locator.PositionChanged -= OnPositionChanged;
            }
        }