From a7232b5abe31e0f1368437e864d1941bf1b976c2 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 6 Mar 2015 13:27:51 -0700 Subject: [PATCH] fix(interactive-tour): cleanup steps when navigating chapters, don't use tour.restart() --- website/public/js/controllers/userCtrl.js | 1 - website/public/js/services/guideServices.js | 23 ++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/website/public/js/controllers/userCtrl.js b/website/public/js/controllers/userCtrl.js index 8812e68c8c..81c1958953 100644 --- a/website/public/js/controllers/userCtrl.js +++ b/website/public/js/controllers/userCtrl.js @@ -2,7 +2,6 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$http', '$state', 'Guide', 'Shared', function($rootScope, $scope, $location, User, $http, $state, Guide, Shared) { - Guide.goto('intro', 5); $scope.profile = User.user; $scope.profile.petCount = Shared.countPets($rootScope.countExists($scope.profile.items.pets), $scope.profile.items.pets); $scope.profile.mountCount = Shared.countMounts($rootScope.countExists($scope.profile.items.mounts), $scope.profile.items.mounts); diff --git a/website/public/js/services/guideServices.js b/website/public/js/services/guideServices.js index f36d064337..5ec1fbc101 100644 --- a/website/public/js/services/guideServices.js +++ b/website/public/js/services/guideServices.js @@ -137,7 +137,7 @@ function($rootScope, User, $timeout, $state) { tour[k] = new Tour({ backdrop: true, template: function(i,step){ - return ''; + return ''; // FIXME: see https://github.com/HabitRPG/habitrpg/issues/4726 //return ''; }, @@ -153,10 +153,20 @@ function($rootScope, User, $timeout, $state) { if ((page != curr+1 || curr > page) && !force) return; var updates = {};updates['flags.tour.'+chapter] = page; User.set(updates); - var end = tour[chapter]._options.steps.length; - tour[chapter].addSteps(chapters[chapter][page]); - tour[chapter].restart(); // Tour doesn't quite mesh with our handling of flags.showTour, just restart it on page load - tour[chapter].goTo(end); + var chap = tour[chapter], opts = chap._options; + opts.steps = []; + _.times(page, function(p){ + opts.steps = opts.steps.concat(chapters[chapter][p]); + }) + var end = opts.steps.length; + opts.steps = opts.steps.concat(chapters[chapter][page]); + chap._removeState('end'); + if (chap._inited) { + chap.goTo(end); + } else { + chap.setCurrentStep(end); + chap.start(); + } } //Init and show the welcome tour (only after user is pulled from server & wrapped). @@ -168,6 +178,9 @@ function($rootScope, User, $timeout, $state) { var alreadyShown = function(before, after) { return !(!before && after === true) }; //$rootScope.$watch('user.flags.dropsEnabled', _.flow(alreadyShown, function(already) { //FIXME requires lodash@~3.2.0 + $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ + if (toState.name == 'options.profile.avatar') goto('intro', 5); + }) $rootScope.$watch('user.flags.dropsEnabled', function(after, before) { if (alreadyShown(before,after)) return; var eggs = User.user.items.eggs || {};