From 2b11a9af9f98f5c1e6e02eb8b8af2d45761986ff Mon Sep 17 00:00:00 2001
From: vjrj <vjrj@comunes.org>
Date: Tue, 15 Aug 2023 19:29:12 +0200
Subject: [PATCH] Tutorials only on request

---
 lib/ui/screens/fifth_screen.dart                | 10 ++++++----
 lib/ui/screens/fourth_screen.dart               | 15 ---------------
 lib/ui/screens/second_screen.dart               | 17 +++++++++++------
 lib/ui/screens/third_screen.dart                | 12 +++++++-----
 lib/ui/tutorial.dart                            |  3 +--
 lib/ui/widgets/first_screen/first_tutorial.dart | 11 +++++++++--
 .../widgets/fourth_screen/transaction_page.dart | 10 ++++++++++
 7 files changed, 44 insertions(+), 34 deletions(-)

diff --git a/lib/ui/screens/fifth_screen.dart b/lib/ui/screens/fifth_screen.dart
index 9e64c177..73f5a650 100644
--- a/lib/ui/screens/fifth_screen.dart
+++ b/lib/ui/screens/fifth_screen.dart
@@ -6,7 +6,6 @@ import 'package:share_plus/share_plus.dart';
 
 import '../../data/models/app_cubit.dart';
 import '../../data/models/app_state.dart';
-import '../../data/models/bottom_nav_cubit.dart';
 import '../../data/models/theme_cubit.dart';
 import '../../shared_prefs.dart';
 import '../tutorial.dart';
@@ -37,9 +36,6 @@ class _FifthScreenState extends State<FifthScreen> {
   @override
   void initState() {
     tutorial = FifthTutorial(context);
-    if (context.read<BottomNavCubit>().state == 4) {
-      Future<void>.delayed(Duration.zero, () => tutorial.showTutorial());
-    }
     super.initState();
   }
 
@@ -63,6 +59,12 @@ class _FifthScreenState extends State<FifthScreen> {
                                   : ThemeMode.dark));
                     },
                   ),
+                  IconButton(
+                    icon: const Icon(Icons.info_outline),
+                    onPressed: () {
+                      tutorial.showTutorial(showAlways: true);
+                    },
+                  ),
                   const SizedBox(width: 10),
                 ],
               ),
diff --git a/lib/ui/screens/fourth_screen.dart b/lib/ui/screens/fourth_screen.dart
index b3eb58d2..656e6acc 100644
--- a/lib/ui/screens/fourth_screen.dart
+++ b/lib/ui/screens/fourth_screen.dart
@@ -1,9 +1,5 @@
 import 'package:flutter/material.dart';
-import 'package:flutter_bloc/flutter_bloc.dart';
 
-import '../../data/models/bottom_nav_cubit.dart';
-import '../tutorial.dart';
-import '../widgets/fourth_screen/fourth_tutorial.dart';
 import '../widgets/fourth_screen/transaction_page.dart';
 
 class FourthScreen extends StatefulWidget {
@@ -14,17 +10,6 @@ class FourthScreen extends StatefulWidget {
 }
 
 class _FourthScreenState extends State<FourthScreen> {
-  late Tutorial tutorial;
-
-  @override
-  void initState() {
-    super.initState();
-    if (context.read<BottomNavCubit>().state == 3) {
-      tutorial = FourthTutorial(context);
-      Future<void>.delayed(Duration.zero, () => tutorial.showTutorial());
-    }
-  }
-
   @override
   Widget build(BuildContext context) {
     return const TransactionsAndBalanceWidget();
diff --git a/lib/ui/screens/second_screen.dart b/lib/ui/screens/second_screen.dart
index 1f439fc4..99d5c6fc 100644
--- a/lib/ui/screens/second_screen.dart
+++ b/lib/ui/screens/second_screen.dart
@@ -1,8 +1,6 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_bloc/flutter_bloc.dart';
 
-import '../../data/models/bottom_nav_cubit.dart';
 import '../tutorial.dart';
 import '../widgets/card_drawer.dart';
 import '../widgets/second_screen/card_terminal.dart';
@@ -21,16 +19,23 @@ class _SecondScreenState extends State<SecondScreen> {
   @override
   void initState() {
     tutorial = SecondTutorial(context);
-    if (context.read<BottomNavCubit>().state == 1) {
-      Future<void>.delayed(Duration.zero, () => tutorial.showTutorial());
-    }
     super.initState();
   }
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
-      appBar: AppBar(title: Text(tr('receive_g1'))),
+      appBar: AppBar(
+        title: Text(tr('receive_g1')),
+        actions: <Widget>[
+          IconButton(
+            icon: const Icon(Icons.info_outline),
+            onPressed: () {
+              tutorial.showTutorial(showAlways: true);
+            },
+          ),
+        ],
+      ),
       drawer: const CardDrawer(),
       body:
           const Column(children: <Widget>[SizedBox(height: 2), CardTerminal()]),
diff --git a/lib/ui/screens/third_screen.dart b/lib/ui/screens/third_screen.dart
index bfb5f0ea..2299b36c 100644
--- a/lib/ui/screens/third_screen.dart
+++ b/lib/ui/screens/third_screen.dart
@@ -2,7 +2,6 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
-import '../../data/models/bottom_nav_cubit.dart';
 import '../../data/models/contact.dart';
 import '../../data/models/contact_cubit.dart';
 import '../../g1/g1_helper.dart';
@@ -29,9 +28,6 @@ class _ThirdScreenState extends State<ThirdScreen> {
   @override
   void initState() {
     tutorial = ThirdTutorial(context);
-    if (context.read<BottomNavCubit>().state == 2) {
-      Future<void>.delayed(Duration.zero, () => tutorial.showTutorial());
-    }
     super.initState();
   }
 
@@ -56,7 +52,7 @@ class _ThirdScreenState extends State<ThirdScreen> {
                 final String? pubKey = await QrManager.qrScan(context);
                 if (pubKey != null && validateKey(pubKey)) {
                   final Contact contact =
-                      await ContactsCache().getContact(pubKey);
+                  await ContactsCache().getContact(pubKey);
                   if (!mounted) {
                     return;
                   }
@@ -85,6 +81,12 @@ class _ThirdScreenState extends State<ThirdScreen> {
                   );
                 }
               }),
+          IconButton(
+            icon: const Icon(Icons.info_outline),
+            onPressed: () {
+              tutorial.showTutorial(showAlways: true);
+            },
+          ),
           const SizedBox(width: 5),
         ]),
         drawer: const CardDrawer(),
diff --git a/lib/ui/tutorial.dart b/lib/ui/tutorial.dart
index 689f6b66..54aac1fc 100644
--- a/lib/ui/tutorial.dart
+++ b/lib/ui/tutorial.dart
@@ -34,11 +34,10 @@ abstract class Tutorial {
   late TutorialCoachMark _tutorial;
   final BuildContext context;
   final String tutorialId;
-  bool showAlways = false;
 
   List<TargetFocus> createTargets();
 
-  void showTutorial() {
+  void showTutorial({bool showAlways = false}) {
     if ((inDevelopment && showAlways) ||
         !context.read<AppCubit>().wasTutorialShown(tutorialId)) {
       _tutorial.show(context: context);
diff --git a/lib/ui/widgets/first_screen/first_tutorial.dart b/lib/ui/widgets/first_screen/first_tutorial.dart
index 91263de2..1063f633 100644
--- a/lib/ui/widgets/first_screen/first_tutorial.dart
+++ b/lib/ui/widgets/first_screen/first_tutorial.dart
@@ -7,14 +7,21 @@ import '../../tutorial_keys.dart';
 import '../../tutorial_target.dart';
 
 class FirstTutorial extends Tutorial {
-  FirstTutorial(BuildContext context)
+  FirstTutorial(BuildContext context, this.onPress)
       : super(tutorialId: 'first_screen', context: context);
+  final bool onPress;
 
   @override
   List<TargetFocus> createTargets() {
     final List<TargetFocus> targets = <TargetFocus>[];
     targets.add(TutorialTarget(
-      identify: !kIsWeb ? 'creditCardKey' : 'creditCardKey_web',
+      identify: onPress
+          ? !kIsWeb
+              ? 'creditCardKey_button'
+              : 'creditCardKey_button_web'
+          : !kIsWeb
+              ? 'creditCardKey'
+              : 'creditCardKey_web',
       keyTarget: creditCardKey,
       shape: ShapeLightFocus.RRect,
     ));
diff --git a/lib/ui/widgets/fourth_screen/transaction_page.dart b/lib/ui/widgets/fourth_screen/transaction_page.dart
index 6e1cea3b..628e2d2d 100644
--- a/lib/ui/widgets/fourth_screen/transaction_page.dart
+++ b/lib/ui/widgets/fourth_screen/transaction_page.dart
@@ -19,8 +19,10 @@ import '../../../data/models/transactions_bloc.dart';
 import '../../../g1/currency.dart';
 import '../../../shared_prefs.dart';
 import '../../logger.dart';
+import '../../tutorial.dart';
 import '../../tutorial_keys.dart';
 import '../../ui_helpers.dart';
+import 'fourth_tutorial.dart';
 import 'transaction_item.dart';
 
 class TransactionsAndBalanceWidget extends StatefulWidget {
@@ -50,6 +52,7 @@ class _TransactionsAndBalanceWidgetState
   final int _pendingPageSize = 30;
   final Cron cron = Cron();
   static const double balanceFontSize = 36.0;
+  late Tutorial tutorial;
 
   @override
   void initState() {
@@ -106,6 +109,7 @@ class _TransactionsAndBalanceWidgetState
       logger('---------- fetchTransactions via cron');
       _refresh();
     });
+    tutorial = FourthTutorial(context);
     super.initState();
   }
 
@@ -183,6 +187,12 @@ class _TransactionsAndBalanceWidgetState
                               Backdrop.of(lContext).concealBackLayer();
                             }
                           })),
+              IconButton(
+                icon: const Icon(Icons.info_outline),
+                onPressed: () {
+                  tutorial.showTutorial(showAlways: true);
+                },
+              ),
               const SizedBox(width: 10),
             ],
           ),
-- 
GitLab