private async void startShowAlbumCommand(object obj)
        {
            if (!string.IsNullOrEmpty(_currentViewPoi?.ByRouteId))
            {
                var routesApi = new RoutesApiRequest(DefaultUrls.ApiUrl, await _tokenService.GetAuthTokenAsync());
                var routeRoot = await routesApi.GetRouteRoot(_currentViewPoi?.ByRouteId);

                if ((routesApi.GetLastHttpStatusCode() == HttpStatusCode.OK) && (!string.IsNullOrEmpty(routeRoot.Route.Id)))
                {
                    var vRoute = new ViewRoute(_currentViewPoi.ByRouteId);
                    if (!string.IsNullOrEmpty(routeRoot.Route.Id))
                    {
                        //Может быть неопубликованный маршрут, все-таки покажем его
                        vRoute.FillFromWSModel(routeRoot, string.Empty);
                    }
                    if (!string.IsNullOrEmpty(routeRoot.Route.ImgFilename))
                    {
                        bool resultDownloadCover = await routesApi.DownloadCoverImage(_currentViewPoi?.ByRouteId, routeRoot.Route.ImgFilename);
                    }
                    else
                    {
                        vRoute.ImgFilename = _currentPoiImage;
                    }
                    await Navigation.PushModalAsync(new RouteCoverPage(vRoute, true));
                }
            }
        }
        public async Task <bool> Sync(string routeId, bool loadOnlyPreview)
        {
            if (string.IsNullOrEmpty(routeId))
            {
                Analytics.TrackEvent("Sync by routeId error");
                return(false);
            }

            bool result       = true;
            int  mainIndex    = 3;//количество этапов
            int  currentIndex = 0;

            sendProgress(routeId, ++currentIndex, mainIndex);
            var notify = DependencyService.Get <INotificationService>();
            var serverRoutesVersionsFull = await _routesApi.GetRoutesVersions(false);

            sendProgress(routeId, ++currentIndex, mainIndex);
            var serverRouteVersion = serverRoutesVersionsFull?.Where(r => r.Id.Equals(routeId)).FirstOrDefault();

            AuthRequired = (_routesApi.GetLastHttpStatusCode() == HttpStatusCode.Forbidden || _routesApi.GetLastHttpStatusCode() == HttpStatusCode.Unauthorized);
            if (!AuthRequired)
            {
                var localRoute = _routeManager.GetRouteById(routeId);
                sendProgress(routeId, ++currentIndex, mainIndex);
                if ((localRoute == null) || (serverRouteVersion != null && !serverRouteVersion.ObjVerHash.Equals(localRoute.ObjVerHash)))
                {
                    SyncRoute syncRouteContext = new SyncRoute(serverRouteVersion?.Id, _authToken);
                    //syncRouteContext.SyncImages = true;
                    _log.AddStringEvent($"start sync diff route {serverRouteVersion?.Id}");
                    result = await syncRouteContext.SyncAsync(serverRouteVersion?.ObjVerHash, loadOnlyPreview);

                    _log.AddStringEvent($"diff route result, {serverRouteVersion?.Id} :" + result);
                }
                else if (serverRouteVersion == null)
                {
                    SyncRoute syncRouteContext = new SyncRoute(localRoute.RouteId, _authToken);
                    //syncRouteContext.SyncImages = true;
                    _log.AddStringEvent($"start sync diff route {localRoute.RouteId}");
                    result = await syncRouteContext.SyncAsync(localRoute.ObjVerHash, false);

                    _log.AddStringEvent($"diff route result, {localRoute.RouteId} :" + result);
                }
            }
            else
            {
                result = false;
            }
            if (result)
            {
                Xamarin.Forms.MessagingCenter.Send <SyncRouteCompleteMessage>(new SyncRouteCompleteMessage()
                {
                    RouteId = routeId, SuccessSync = result
                }, string.Empty);
            }
            return(result);
        }