From 070e3cf18c163eec5a43ecea1fe39f179d06da5b Mon Sep 17 00:00:00 2001
From: Kima <kimavideos97@gmail.com>
Date: Fri, 8 Sep 2023 21:04:54 +0200
Subject: [PATCH] added test button and share provider to app

---
 filcnaplo/lib/app.dart                        | 80 +++++++++++++------
 .../lib/providers/share_provider.dart         |  5 +-
 .../lib/ui/mobile/settings/theme.dart         | 25 +++---
 3 files changed, 74 insertions(+), 36 deletions(-)

diff --git a/filcnaplo/lib/app.dart b/filcnaplo/lib/app.dart
index 717b3b1..32ecb6d 100644
--- a/filcnaplo/lib/app.dart
+++ b/filcnaplo/lib/app.dart
@@ -14,6 +14,7 @@ import 'package:filcnaplo/theme/theme.dart';
 import 'package:filcnaplo_kreta_api/client/client.dart';
 import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
 import 'package:filcnaplo_premium/providers/goal_provider.dart';
+import 'package:filcnaplo_premium/providers/share_provider.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
@@ -99,49 +100,78 @@ class App extends StatelessWidget {
         Provider<KretaClient>(create: (_) => kreta),
         Provider<DatabaseProvider>(create: (context) => database),
         ChangeNotifierProvider<ThemeModeObserver>(
-            create: (context) =>
-                ThemeModeObserver(initialTheme: settings.theme)),
+          create: (context) => ThemeModeObserver(
+            initialTheme: settings.theme,
+          ),
+        ),
         ChangeNotifierProvider<NewsProvider>(
-            create: (context) => NewsProvider(context: context)),
+          create: (context) => NewsProvider(context: context),
+        ),
         ChangeNotifierProvider<UpdateProvider>(
-            create: (context) => UpdateProvider(context: context)),
+          create: (context) => UpdateProvider(context: context),
+        ),
         ChangeNotifierProvider<AdProvider>(
-            create: (context) => AdProvider(context: context)),
+          create: (context) => AdProvider(context: context),
+        ),
 
         // user data (kreten) providers
         ChangeNotifierProvider<GradeProvider>(
-            create: (_) => GradeProvider(
-                settings: settings,
-                user: user,
-                database: database,
-                kreta: kreta)),
+          create: (_) => GradeProvider(
+            settings: settings,
+            user: user,
+            database: database,
+            kreta: kreta,
+          ),
+        ),
         ChangeNotifierProvider<TimetableProvider>(create: (_) => timetable),
         ChangeNotifierProvider<ExamProvider>(
-            create: (context) => ExamProvider(context: context)),
+          create: (context) => ExamProvider(context: context),
+        ),
         ChangeNotifierProvider<HomeworkProvider>(
-            create: (context) =>
-                HomeworkProvider(context: context, database: database)),
+          create: (context) => HomeworkProvider(
+            context: context,
+            database: database,
+          ),
+        ),
         ChangeNotifierProvider<MessageProvider>(
-            create: (context) => MessageProvider(context: context)),
+          create: (context) => MessageProvider(context: context),
+        ),
         ChangeNotifierProvider<NoteProvider>(
-            create: (context) => NoteProvider(context: context)),
+          create: (context) => NoteProvider(context: context),
+        ),
         ChangeNotifierProvider<EventProvider>(
-            create: (context) => EventProvider(context: context)),
+          create: (context) => EventProvider(context: context),
+        ),
         ChangeNotifierProvider<AbsenceProvider>(
-            create: (context) => AbsenceProvider(context: context)),
+          create: (context) => AbsenceProvider(context: context),
+        ),
 
         // other providers
         ChangeNotifierProvider<GradeCalculatorProvider>(
-            create: (_) => GradeCalculatorProvider(
-                settings: settings,
-                user: user,
-                database: database,
-                kreta: kreta)),
+          create: (_) => GradeCalculatorProvider(
+            settings: settings,
+            user: user,
+            database: database,
+            kreta: kreta,
+          ),
+        ),
         ChangeNotifierProvider<LiveCardProvider>(
-            create: (context) =>
-                LiveCardProvider(timetable: timetable, settings: settings)),
+          create: (context) => LiveCardProvider(
+            timetable: timetable,
+            settings: settings,
+          ),
+        ),
         ChangeNotifierProvider<GoalProvider>(
-            create: (context) => GoalProvider(database: database, user: user)),
+          create: (context) => GoalProvider(
+            database: database,
+            user: user,
+          ),
+        ),
+        ChangeNotifierProvider<ShareProvider>(
+          create: (context) => ShareProvider(
+            user: user,
+          ),
+        ),
       ],
       child: Consumer<ThemeModeObserver>(
         builder: (context, themeMode, child) {
diff --git a/filcnaplo_premium/lib/providers/share_provider.dart b/filcnaplo_premium/lib/providers/share_provider.dart
index 5490566..b652cea 100644
--- a/filcnaplo_premium/lib/providers/share_provider.dart
+++ b/filcnaplo_premium/lib/providers/share_provider.dart
@@ -17,7 +17,7 @@ class ShareProvider extends ChangeNotifier {
   // Future<void> shareTheme({required SharedTheme theme}) async {
 
   // }
-  Future<void> shareCurrentTheme(BuildContext context,
+  Future<SharedTheme> shareCurrentTheme(BuildContext context,
       {bool isPublic = false, bool shareNick = true}) async {
     final SettingsProvider settings = Provider.of<SettingsProvider>(context);
 
@@ -37,7 +37,8 @@ class ShareProvider extends ChangeNotifier {
     };
 
     SharedTheme theme = SharedTheme.fromJson(themeJson);
-
     FilcAPI.addSharedTheme(theme);
+
+    return theme;
   }
 }
diff --git a/filcnaplo_premium/lib/ui/mobile/settings/theme.dart b/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
index 0a3bc86..d8ba210 100644
--- a/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
+++ b/filcnaplo_premium/lib/ui/mobile/settings/theme.dart
@@ -1,4 +1,5 @@
 import 'package:filcnaplo/models/settings.dart';
+import 'package:filcnaplo/models/shared_theme.dart';
 import 'package:filcnaplo/theme/colors/accent.dart';
 import 'package:filcnaplo/theme/colors/colors.dart';
 import 'package:filcnaplo/theme/observer.dart';
@@ -13,6 +14,7 @@ import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart';
 import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart';
 import 'package:filcnaplo_premium/models/premium_scopes.dart';
 import 'package:filcnaplo_premium/providers/premium_provider.dart';
+import 'package:filcnaplo_premium/providers/share_provider.dart';
 import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/colorpicker.dart';
 import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
 import 'package:flutter/material.dart';
@@ -35,6 +37,7 @@ class _PremiumCustomAccentColorSettingState
     extends State<PremiumCustomAccentColorSetting>
     with TickerProviderStateMixin {
   late final SettingsProvider settings;
+  late final ShareProvider shareProvider;
   bool colorSelection = false;
   bool customColorMenu = false;
   CustomColorMode colorMode = CustomColorMode.theme;
@@ -99,6 +102,7 @@ class _PremiumCustomAccentColorSettingState
     _colorsTabController = TabController(length: 4, vsync: this);
     _testTabController = TabController(length: 4, vsync: this);
     settings = Provider.of<SettingsProvider>(context, listen: false);
+    shareProvider = Provider.of<ShareProvider>(context, listen: false);
 
     _openAnimController = AnimationController(
         vsync: this, duration: const Duration(milliseconds: 750));
@@ -238,15 +242,18 @@ class _PremiumCustomAccentColorSettingState
                         focusColor: Colors.transparent,
                         highlightColor: Colors.transparent,
                         splashColor: Colors.transparent,
-                        onPressed: () {
-                          ScaffoldMessenger.of(context).showSnackBar(
-                            const SnackBar(
-                              duration: Duration(milliseconds: 1000),
-                              content: Text(
-                                "Hamarosan...",
-                              ),
-                            ),
-                          );
+                        onPressed: () async {
+                          // ScaffoldMessenger.of(context).showSnackBar(
+                          //   const SnackBar(
+                          //     duration: Duration(milliseconds: 1000),
+                          //     content: Text(
+                          //       "Hamarosan...",
+                          //     ),
+                          //   ),
+                          // );
+                          SharedTheme theme =
+                              await shareProvider.shareCurrentTheme(context);
+                          print(theme.id);
                         },
                         icon: const Icon(
                           FeatherIcons.share2,