11import { defineToolbarApp } from 'astro/toolbar' ;
22
33let tutorial : {
4- title : string ;
5- slug : string ;
64 files : string [ ] ;
75 panels : string [ ] ;
86 version : string ;
97} = {
10- title : '' ,
11- slug : '' ,
128 files : [ ] ,
139 panels : [ ] ,
1410 version : '' ,
1511} ;
1612
1713export default defineToolbarApp ( {
1814 init ( canvas , app , server ) {
19- const myWindow = document . createElement ( 'astro-dev-toolbar-window' ) ;
2015
16+ const myWindow = document . createElement ( 'astro-dev-toolbar-window' ) ;
2117 const myContent = document . createElement ( 'div' ) ;
2218 myContent . innerHTML = `
2319 <details name='steps' open>
24- <summary>Step 1: Enter title</summary>
25- <input id='title' placeholder='Enter tutorial title'/>
26- </details>
27- <details name='steps'>
28- <summary>Step 2: Select panels needed</summary>
20+ <summary>Step 1: Select panels needed</summary>
2921 Please select other panels used in the tutorial
3022 <form id='panels'>
3123 <div>
@@ -34,23 +26,27 @@ export default defineToolbarApp({
3426 </div>
3527 <div>
3628 <input type="checkbox" id="browser" name="panels" value="browser" />
37- <label for="browser">Browser</label>
29+ <label for="browser">Preview Browser</label>
3830 </div>
3931 </form>
4032 </details>
4133 <details name='steps'>
42- <summary>Step 3 : Create steps</summary>
34+ <summary>Step 2 : Create steps</summary>
4335 In the src -> content -> docs folder, please add the steps for the tutorial
44- <br><br>See <a href='https://conshus .github.io/onboarding-tutorials /toolbar-app/ ' target='blank' style='color: white'>Reference</a> for components you can add.<br><br>
36+ <br><br>See <a href='https://vonage-community .github.io/tutorial-interactive_tutorials /toolbar-app' target='blank' style='color: white'>Reference</a> for components you can add.<br><br>
4537 </details>
4638 <details name='steps'>
47- <summary>Step 4 : Set Files needed</summary>
39+ <summary>Step 3 : Set Files needed</summary>
4840 Please enter the names and file type of the files needed for the tutorial one at a time.
4941 <input id='file-input' placeholder='ex. index.html'/><button id="add-file">add</button>
5042 <strong id='file-input-error'>please include filename AND filetype</strong>
5143 <br/>File list:
5244 <ul id='file-list'></ul>
5345 </details>
46+ <details name='steps'>
47+ <summary>Step 4: Enter version</summary>
48+ <input id='version' placeholder='0.0.0'/>
49+ </details>
5450 <details name='steps'>
5551 <summary>Step 5: Finish up</summary>
5652 Click to start generating the tutorial: <button id="generate">generate</button>
@@ -68,8 +64,50 @@ export default defineToolbarApp({
6864
6965 const astroToolbarWindow = canvas . querySelector ( 'astro-dev-toolbar-window' ) ;
7066
71- if ( localStorage . getItem ( 'tutorial' ) ) {
72- tutorial = JSON . parse ( localStorage . getItem ( 'tutorial' ) || '{}' ) ;
67+ const versionInput = astroToolbarWindow ?. querySelector (
68+ '#version'
69+ ) as HTMLInputElement ;
70+ versionInput . value = tutorial . version !== '' ? tutorial . version : '' ;
71+ versionInput ?. addEventListener ( 'change' , ( event ) => {
72+ tutorial . version = versionInput ?. value ;
73+ saveTutorial ( ) ;
74+ } ) ;
75+
76+ // check for tutorial-config.json
77+ function checkConfig ( ) {
78+ server . send ( 'vonage-app:config-check' , { } ) ;
79+ } ;
80+
81+ if ( localStorage . getItem ( 'config-checked' ) ) {
82+ // if config-checked exists
83+ // check local storage for tutorial config and load if it exists
84+ console . log ( 'config-checked exists' ) ;
85+ checkLocalStorage ( ) ;
86+ } else {
87+ console . log ( 'config checked not there' )
88+ // if config-checked doesn't exist
89+ // - check for tutorial config file
90+ checkConfig ( ) ;
91+ //localStorage.setItem('config-checked', 'false');
92+ }
93+
94+ server . on ( 'config-checked' , ( data : any ) => {
95+ console . log ( 'config data: ' , data ) ;
96+ // - if tutorial config file exists, set tutorial to config data, saveTutorial(), updateUI(), and set config-checked to true
97+ if ( data . found ) {
98+ console . log ( 'tutorial config file exists, set tutorial to config data, saveTutorial(), updateUI()' )
99+ tutorial = data . tutorial ;
100+ saveTutorial ( ) ;
101+ updateUI ( ) ;
102+ } else {
103+ // - if tutorial config file does not exist, check local storage for tutorial config, load if it exists, and set config-checked to true
104+ console . log ( 'config file does not exist, check local storage for tutorial config, load if it exists' ) ;
105+ checkLocalStorage ( ) ;
106+ }
107+ localStorage . setItem ( 'config-checked' , 'true' ) ;
108+ } ) ;
109+
110+ function updateUI ( ) {
73111 refreshFilesList ( ) ;
74112 if ( tutorial . panels . length !== 0 ) {
75113 tutorial . panels . forEach ( ( panel ) => {
@@ -78,6 +116,15 @@ export default defineToolbarApp({
78116 ) . checked = true ;
79117 } ) ;
80118 }
119+ versionInput . value = tutorial . version ;
120+ }
121+
122+ function checkLocalStorage ( ) {
123+ if ( localStorage . getItem ( 'tutorial' ) ) {
124+ console . log ( 'localStorage.getItem tutorial' )
125+ tutorial = JSON . parse ( localStorage . getItem ( 'tutorial' ) || '{}' ) ;
126+ updateUI ( ) ;
127+ }
81128 }
82129
83130 const completeSpan = astroToolbarWindow ?. querySelector (
@@ -130,16 +177,6 @@ export default defineToolbarApp({
130177 saveTutorial ( ) ;
131178 }
132179
133- const titleInput = astroToolbarWindow ?. querySelector (
134- '#title'
135- ) as HTMLInputElement ;
136- titleInput . value = tutorial . title !== '' ? tutorial . title : '' ;
137- titleInput ?. addEventListener ( 'change' , ( event ) => {
138- tutorial . title = titleInput ?. value ;
139- tutorial . slug = titleInput ?. value . replaceAll ( ' ' , '-' ) . toLowerCase ( ) ;
140- saveTutorial ( ) ;
141- } ) ;
142-
143180 const fileInputError = astroToolbarWindow ?. querySelector (
144181 '#file-input-error'
145182 ) as HTMLElement ;
@@ -175,7 +212,7 @@ export default defineToolbarApp({
175212 generateButton . disabled = true ;
176213 statusEl . innerText = '' ;
177214 completeSpan . style . display = 'none' ;
178- server . send ( 'my -app:generate' , { tutorial } ) ;
215+ server . send ( 'vonage -app:generate' , { tutorial } ) ;
179216 } ) ;
180217
181218 server . on ( 'server-status' , ( data : any ) => {
@@ -191,9 +228,11 @@ export default defineToolbarApp({
191228 astroToolbarWindow ?. querySelector (
192229 '#download-link'
193230 ) as HTMLAnchorElement
194- ) . href = `${ window . location . origin } /${ tutorial . slug } .zip` ;
231+ ) . href = `${ window . location . origin } /product_name-language-topic .zip` ;
195232 generateButton . disabled = false ;
196233 completeSpan . style . display = 'block' ;
234+ // clear local storage
235+ localStorage . clear ( ) ;
197236 }
198237 } ) ;
199238 } ,
0 commit comments