11// Copyright (c) Microsoft Corporation.
22// Licensed under the MIT License.
33
4- import { URLSearchParams } from "url" ;
54import * as vscode from "vscode" ;
65import { initializeApi } from "./api" ;
76import { initializeGitApi } from "./git" ;
@@ -26,49 +25,64 @@ function discoverTours(): Promise<void> {
2625 return cachedDiscoverTours ?? ( cachedDiscoverTours = _discoverTours ( ) ) ;
2726}
2827
28+ function startTour ( params : URLSearchParams ) {
29+ let tourPath = params . get ( "tour" ) ;
30+ const step = params . get ( "step" ) ;
31+
32+ console . log ( "CT Tour: " , tourPath ) ;
33+ console . log ( "CT Step: " , step ) ;
34+
35+ let stepNumber ;
36+ if ( step ) {
37+ stepNumber = Number ( step ) ;
38+ }
39+
40+ if ( tourPath ) {
41+ if ( ! tourPath . endsWith ( ".tour" ) ) {
42+ tourPath = `${ tourPath } .tour` ;
43+ }
44+
45+ console . log ( "CT Tour Path: " , tourPath ) ;
46+
47+ console . log ( "CT Tours: " , store . tours ) ;
48+
49+ const tour = store . tours . find ( tour => tour . id . endsWith ( tourPath as string ) ) ;
50+
51+ console . log ( "CT Tour: " , tour ) ;
52+
53+ if ( tour ) {
54+ startCodeTour ( tour , stepNumber ) ;
55+ }
56+ } else {
57+ startDefaultTour ( undefined , undefined , stepNumber ) ;
58+ }
59+ }
60+
2961class URIHandler implements vscode . UriHandler {
3062 private _didStartDefaultTour = false ;
3163 get didStartDefaultTour ( ) : boolean {
3264 return this . _didStartDefaultTour ;
3365 }
3466
3567 async handleUri ( uri : vscode . Uri ) : Promise < void > {
36- if ( uri . path === "/startDefaultTour" ) {
37- this . _didStartDefaultTour = true ;
38-
39- await discoverTours ( ) ;
68+ this . _didStartDefaultTour = true ;
69+ await discoverTours ( ) ;
4070
41- let tourPath : string | null | undefined , stepNumber ;
71+ if ( uri . path === "/startDefaultTour" ) {
4272 if ( uri . query ) {
43- const origin = vscode . Uri . parse ( uri . query ) ;
44- if ( origin . query ) {
45- const params = new URLSearchParams ( origin . query ) ;
46- tourPath = params . get ( "tour" ) ;
47-
48- const step = params . get ( "step" ) ;
49- if ( step ) {
50- stepNumber = Number ( step ) ;
73+ console . log ( "CT Query: " , uri . query ) ;
74+ try {
75+ const origin = vscode . Uri . parse ( uri . query ) ;
76+ if ( origin . query ) {
77+ const params = new URLSearchParams ( origin . query ) ;
78+ startTour ( params ) ;
5179 }
52- }
53- }
54-
55- if ( tourPath ) {
56- if ( ! tourPath . endsWith ( ".tour" ) ) {
57- tourPath = `${ tourPath } .tour` ;
58- }
59-
60- const tour = store . tours . find ( tour =>
61- tour . id . endsWith ( tourPath as string )
62- ) ;
63- if ( tour ) {
64- startCodeTour ( tour , stepNumber ) ;
65- }
66- } else {
67- startDefaultTour ( undefined , undefined , stepNumber ) ;
80+ } catch { }
6881 }
82+ } else if ( uri . path === "/starTour" ) {
83+ const params = new URLSearchParams ( uri . query ) ;
84+ startTour ( params ) ;
6985 }
70-
71- return ;
7286 }
7387}
7488
0 commit comments