From aae766cdba893e75b7722c8f0cfb22d6a659c61d Mon Sep 17 00:00:00 2001
From: julian <julian@cypherstack.com>
Date: Tue, 9 May 2023 10:59:55 -0600
Subject: [PATCH] update a few more assets and added missing background asset
 to theme class

---
 lib/models/isar/stack_theme.dart              |  5 +++
 lib/widgets/background.dart                   | 28 +++++++++++------
 lib/widgets/loading_indicator.dart            | 31 ++++++++++---------
 .../components/icons/buy_nav_icon.dart        | 23 +++++++++-----
 .../components/icons/exchange_nav_icon.dart   | 23 +++++++++-----
 5 files changed, 71 insertions(+), 39 deletions(-)

diff --git a/lib/models/isar/stack_theme.dart b/lib/models/isar/stack_theme.dart
index 8f111bc61..f056471a6 100644
--- a/lib/models/isar/stack_theme.dart
+++ b/lib/models/isar/stack_theme.dart
@@ -2033,6 +2033,7 @@ class ThemeAssets {
   final String namecoinImageSecondary;
   final String particlImageSecondary;
   final String? loadingGif;
+  final String? background;
 
   // todo: add all assets expected in json
 
@@ -2088,6 +2089,7 @@ class ThemeAssets {
     required this.namecoinImageSecondary,
     required this.particlImageSecondary,
     required this.loadingGif,
+    required this.background,
   });
 
   factory ThemeAssets.fromJson({
@@ -2199,6 +2201,9 @@ class ThemeAssets {
       loadingGif: json["assets"]["loadingGif"] is String
           ? "$applicationThemesDirectoryPath/$internalThemeUuid/${json["assets"]["loadingGif"] as String}"
           : null,
+      background: json["assets"]["background"] is String
+          ? "$applicationThemesDirectoryPath/$internalThemeUuid/${json["assets"]["background"] as String}"
+          : null,
     );
   }
 }
diff --git a/lib/widgets/background.dart b/lib/widgets/background.dart
index ed74e36ff..a2e06ecff 100644
--- a/lib/widgets/background.dart
+++ b/lib/widgets/background.dart
@@ -1,11 +1,13 @@
+import 'dart:io';
+
 import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
 import 'package:flutter_svg/svg.dart';
-import 'package:stackwallet/utilities/assets.dart';
-import 'package:stackwallet/utilities/theme/color_theme.dart';
+import 'package:stackwallet/themes/theme_providers.dart';
 import 'package:stackwallet/utilities/theme/stack_colors.dart';
 import 'package:stackwallet/widgets/conditional_parent.dart';
 
-class Background extends StatelessWidget {
+class Background extends ConsumerWidget {
   const Background({
     Key? key,
     required this.child,
@@ -14,17 +16,17 @@ class Background extends StatelessWidget {
   final Widget child;
 
   @override
-  Widget build(BuildContext context) {
+  Widget build(BuildContext context, WidgetRef ref) {
     Color? color;
 
     bool shouldPad = false;
 
-    switch (Theme.of(context).extension<StackColors>()!.themeType) {
-      case ThemeType.oceanBreeze:
+    switch (Theme.of(context).extension<StackColors>()!.themeId) {
+      case "ocean_breeze":
         shouldPad = true;
         color = null;
         break;
-      case ThemeType.fruitSorbet:
+      case "fruit_sorbet":
         color = null;
         break;
       default:
@@ -32,7 +34,11 @@ class Background extends StatelessWidget {
         break;
     }
 
-    final bgAsset = Assets.svg.background(context);
+    final bgAsset = ref.watch(
+      themeProvider.select(
+        (value) => value.assets.background,
+      ),
+    );
 
     return Container(
       decoration: BoxDecoration(
@@ -52,8 +58,10 @@ class Background extends StatelessWidget {
                         bottom: MediaQuery.of(context).size.height * (1 / 12),
                       )
                     : const EdgeInsets.all(0),
-                child: SvgPicture.asset(
-                  bgAsset!,
+                child: SvgPicture.file(
+                  File(
+                    bgAsset!,
+                  ),
                   fit: BoxFit.fill,
                 ),
               ),
diff --git a/lib/widgets/loading_indicator.dart b/lib/widgets/loading_indicator.dart
index 150397669..1d95ca616 100644
--- a/lib/widgets/loading_indicator.dart
+++ b/lib/widgets/loading_indicator.dart
@@ -1,10 +1,12 @@
-import 'package:flutter/material.dart';
-import 'package:lottie/lottie.dart';
-import 'package:stackwallet/utilities/assets.dart';
-import 'package:stackwallet/utilities/theme/color_theme.dart';
-import 'package:stackwallet/utilities/theme/stack_colors.dart';
+import 'dart:io';
 
-class LoadingIndicator extends StatelessWidget {
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:lottie/lottie.dart';
+import 'package:stackwallet/themes/theme_providers.dart';
+import 'package:stackwallet/utilities/assets.dart';
+
+class LoadingIndicator extends ConsumerWidget {
   const LoadingIndicator({
     Key? key,
     this.width,
@@ -15,11 +17,10 @@ class LoadingIndicator extends StatelessWidget {
   final double? height;
 
   @override
-  Widget build(BuildContext context) {
-    final isChan = Theme.of(context).extension<StackColors>()!.themeType ==
-            ThemeType.chan ||
-        Theme.of(context).extension<StackColors>()!.themeType ==
-            ThemeType.darkChans;
+  Widget build(BuildContext context, WidgetRef ref) {
+    final assetPath = ref.watch(
+      themeProvider.select((value) => value.assets.loadingGif),
+    );
 
     return Container(
       color: Colors.transparent,
@@ -27,10 +28,10 @@ class LoadingIndicator extends StatelessWidget {
         child: SizedBox(
           width: width,
           height: height,
-          child: isChan
-              ? Image(
-                  image: AssetImage(
-                    Assets.gif.stacyPlain,
+          child: assetPath != null
+              ? Image.file(
+                  File(
+                    assetPath,
                   ),
                 )
               : Lottie.asset(
diff --git a/lib/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart b/lib/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart
index fa2975f1a..5f0e30df8 100644
--- a/lib/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart
+++ b/lib/widgets/wallet_navigation_bar/components/icons/buy_nav_icon.dart
@@ -1,14 +1,23 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
-import 'package:stackwallet/utilities/assets.dart';
+import 'dart:io';
 
-class BuyNavIcon extends StatelessWidget {
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:stackwallet/themes/theme_providers.dart';
+
+class BuyNavIcon extends ConsumerWidget {
   const BuyNavIcon({Key? key}) : super(key: key);
 
   @override
-  Widget build(BuildContext context) {
-    return SvgPicture.asset(
-      Assets.svg.buy(context),
+  Widget build(BuildContext context, WidgetRef ref) {
+    return SvgPicture.file(
+      File(
+        ref.watch(
+          themeProvider.select(
+            (value) => value.assets.buy,
+          ),
+        ),
+      ),
       width: 24,
       height: 24,
     );
diff --git a/lib/widgets/wallet_navigation_bar/components/icons/exchange_nav_icon.dart b/lib/widgets/wallet_navigation_bar/components/icons/exchange_nav_icon.dart
index 9735fa989..bf635fc90 100644
--- a/lib/widgets/wallet_navigation_bar/components/icons/exchange_nav_icon.dart
+++ b/lib/widgets/wallet_navigation_bar/components/icons/exchange_nav_icon.dart
@@ -1,14 +1,23 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
-import 'package:stackwallet/utilities/assets.dart';
+import 'dart:io';
 
-class ExchangeNavIcon extends StatelessWidget {
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:stackwallet/themes/theme_providers.dart';
+
+class ExchangeNavIcon extends ConsumerWidget {
   const ExchangeNavIcon({Key? key}) : super(key: key);
 
   @override
-  Widget build(BuildContext context) {
-    return SvgPicture.asset(
-      Assets.svg.exchange(context),
+  Widget build(BuildContext context, WidgetRef ref) {
+    return SvgPicture.file(
+      File(
+        ref.watch(
+          themeProvider.select(
+            (value) => value.assets.buy,
+          ),
+        ),
+      ),
       width: 24,
       height: 24,
     );