+ this.latestSessionUrl = this.storage.getItem(RedirectService.SESSION_STORAGE_LATEST_SESSION_URL_KEY)
+ this.storage.removeItem(RedirectService.SESSION_STORAGE_LATEST_SESSION_URL_KEY)
+
+ logger('Loaded latest session URL %s', this.latestSessionUrl)
+
+ // Track previous url
+ this.currentUrl = this.router.url
+ router.events.subscribe(event => {
+ if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
+ this.previousUrl = this.currentUrl
+ this.currentUrl = event.url
+
+ logger('Previous URL is %s, current URL is %s', this.previousUrl, this.currentUrl)
+ logger('Setting %s as latest URL in session storage.', this.currentUrl)
+
+ this.storage.setItem(RedirectService.SESSION_STORAGE_LATEST_SESSION_URL_KEY, this.currentUrl)
+ }
+ })
+ }
+
+ getDefaultRoute () {
+ return this.defaultRoute
+ }
+
+ getDefaultTrendingAlgorithm () {
+ return this.defaultTrendingAlgorithm
+ }
+
+ redirectToLatestSessionRoute () {
+ return this.doRedirect(this.latestSessionUrl)
+ }
+
+ redirectToPreviousRoute (fallbackRoute?: string) {
+ return this.doRedirect(this.previousUrl, fallbackRoute)
+ }
+
+ getPreviousUrl () {
+ return this.previousUrl
+ }
+
+ redirectToHomepage (skipLocationChange = false) {
+ if (this.redirectingToHomepage) return
+
+ this.redirectingToHomepage = true
+
+ console.log('Redirecting to %s...', this.defaultRoute)
+
+ this.router.navigateByUrl(this.defaultRoute, { skipLocationChange })
+ .then(() => this.redirectingToHomepage = false)
+ .catch(() => {
+ this.redirectingToHomepage = false
+
+ console.error(
+ 'Cannot navigate to %s, resetting default route to %s.',
+ this.defaultRoute,
+ RedirectService.INIT_DEFAULT_ROUTE
+ )
+
+ this.defaultRoute = RedirectService.INIT_DEFAULT_ROUTE
+ return this.router.navigateByUrl(this.defaultRoute, { skipLocationChange })
+ })