Adds `?tutorial=all` as a recognized option. Gui opens without the preview modal, and with the Tutorials Library open. Back button in the Tutorials Library takes you to the Editor (not back to referrer).
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
/**
|
|
* @fileoverview
|
|
* Utility function to detect tutorial id from query paramenter on the URL.
|
|
*/
|
|
|
|
import tutorials from './libraries/decks/index.jsx';
|
|
import analytics from './analytics';
|
|
|
|
/**
|
|
* Get the tutorial id from the given numerical id (representing the
|
|
* url id of the tutorial).
|
|
* @param {number} urlId The URL Id for the tutorial
|
|
* @returns {string} The string id for the tutorial, or null if the URL ID
|
|
* was not found.
|
|
*/
|
|
const getDeckIdFromUrlId = urlId => {
|
|
for (const deckId in tutorials) {
|
|
if (tutorials[deckId].urlId === urlId) {
|
|
analytics.event({
|
|
category: 'how-to',
|
|
action: 'load from url',
|
|
label: `${deckId}`
|
|
});
|
|
return deckId;
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
/**
|
|
* Check if there's a tutorial id provided as a query parameter in the URL.
|
|
* Return the corresponding tutorial id or null if not found.
|
|
* @param {object} queryParams the results of parsing the query string
|
|
* @return {string} The ID of the requested tutorial or null if no tutorial was
|
|
* requested or found.
|
|
*/
|
|
const detectTutorialId = queryParams => {
|
|
const tutorialID = Array.isArray(queryParams.tutorial) ?
|
|
queryParams.tutorial[0] :
|
|
queryParams.tutorial;
|
|
if (typeof tutorialID === 'undefined') return null;
|
|
if (tutorialID === 'all') return tutorialID;
|
|
return getDeckIdFromUrlId(tutorialID);
|
|
};
|
|
|
|
export {
|
|
detectTutorialId
|
|
};
|