From 67d59b39ba30c4902e11f1167befd425e6af9971 Mon Sep 17 00:00:00 2001
From: Emmanuel Raviart <emmanuel@raviart.com>
Date: Tue, 5 Oct 2021 15:51:14 +0200
Subject: [PATCH] Add showTutorial configuration to enable intro.js.

---
 example.env                | 3 +++
 src/hooks.ts               | 1 +
 src/lib/auditors/config.ts | 2 +-
 src/lib/server/config.ts   | 2 ++
 src/lib/sessions.ts        | 1 +
 src/routes/index.svelte    | 2 +-
 6 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/example.env b/example.env
index aca7de232..dc2aa2d8b 100644
--- a/example.env
+++ b/example.env
@@ -61,6 +61,9 @@ PROXY=false
 # Reform name must belong to a name of an OpenFisca reform in metadata.json
 # REFORM=universal_basic_income
 
+# Show intro balloons.
+SHOW_TUTORIAL=true
+
 # Directory containing JSON of simulations saved by users
 SIMULATIONS_DIR="../simulations"
 
diff --git a/src/hooks.ts b/src/hooks.ts
index 1cfdaf957..c66a1632a 100644
--- a/src/hooks.ts
+++ b/src/hooks.ts
@@ -55,6 +55,7 @@ export const getSession: GetSession<{}, Session> = async (request) => {
     },
     portalUrl: config.portalUrl,
     reformName: config.reformName,
+    showTutorial: config.showTutorial,
     title: config.title,
     user,
   }
diff --git a/src/lib/auditors/config.ts b/src/lib/auditors/config.ts
index b2cb2811d..841b00e8c 100644
--- a/src/lib/auditors/config.ts
+++ b/src/lib/auditors/config.ts
@@ -31,7 +31,7 @@ export function auditConfig(
   const errors: { [key: string]: unknown } = {}
   const remainingKeys = new Set(Object.keys(data))
 
-  for (const key of ["advanced", "allowRobots", "proxy"]) {
+  for (const key of ["advanced", "allowRobots", "proxy", "showTutorial"]) {
     audit.attribute(
       data,
       key,
diff --git a/src/lib/server/config.ts b/src/lib/server/config.ts
index 3a2b3d3dc..528817291 100644
--- a/src/lib/server/config.ts
+++ b/src/lib/server/config.ts
@@ -37,6 +37,7 @@ export interface Config {
   portalUrl: string
   proxy: boolean
   reformName?: string
+  showTutorial?: boolean
   simulationsDir: string
   title: string
 }
@@ -80,6 +81,7 @@ const [validConfig, error] = validateConfig({
   portalUrl: process.env["PORTAL_URL"],
   proxy: process.env["PROXY"],
   reformName: process.env["REFORM"],
+  showTutorial: process.env["SHOW_TUTORIAL"],
   simulationsDir: process.env["SIMULATIONS_DIR"],
   title: process.env["TITLE"],
 })
diff --git a/src/lib/sessions.ts b/src/lib/sessions.ts
index 2bb4e7978..c28aa6161 100644
--- a/src/lib/sessions.ts
+++ b/src/lib/sessions.ts
@@ -19,6 +19,7 @@ export interface Session {
   openfiscaRepository: SessionOpenFiscaRepository
   portalUrl: string
   reformName?: string
+  showTutorial?: boolean
   title: string
   user?: User
 }
diff --git a/src/routes/index.svelte b/src/routes/index.svelte
index 1d7fa6423..989433c9a 100644
--- a/src/routes/index.svelte
+++ b/src/routes/index.svelte
@@ -115,7 +115,7 @@
 
   $: editionModeFromAction($action)
 
-  if (browser) {
+  if (browser && $session.showTutorial) {
     introJs()
       .setOptions({
         doneLabel: "Fermer",
-- 
GitLab