/*
 * This file is part of Stack Wallet.
 *
 * Copyright (c) 2023 Cypher Stack
 * All Rights Reserved.
 * The code is distributed under GPLv3 license, see LICENSE file for details.
 * Generated by Cypher Stack on 2023-05-26
 *
 */

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart';
import '../themes/coin_card_provider.dart';
import '../themes/theme_providers.dart';
import '../utilities/assets.dart';
import '../utilities/constants.dart';
import '../wallets/isar/providers/wallet_info_provider.dart';

class CoinCard extends ConsumerWidget {
  const CoinCard({
    super.key,
    required this.walletId,
    required this.width,
    required this.height,
    required this.isFavorite,
  });

  final String walletId;
  final double width;
  final double height;
  final bool isFavorite;

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final coin = ref.watch(pWalletCoin(walletId));

    final bool hasCardImageBg = (isFavorite)
        ? ref.watch(coinCardFavoritesProvider(coin)) != null
        : ref.watch(coinCardProvider(coin)) != null;

    return Stack(
      children: [
        if (hasCardImageBg)
          Container(
            width: width,
            height: height,
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(
                Constants.size.circularBorderRadius,
              ),
              image: DecorationImage(
                fit: BoxFit.cover,
                image: FileImage(
                  File(
                    (isFavorite)
                        ? ref.watch(coinCardFavoritesProvider(coin))!
                        : ref.watch(coinCardProvider(coin))!,
                  ),
                ),
              ),
            ),
          ),
        if (!hasCardImageBg)
          Container(
            width: width,
            height: height,
            decoration: BoxDecoration(
              color: ref.watch(pCoinColor(coin)),
              borderRadius: BorderRadius.circular(
                Constants.size.circularBorderRadius,
              ),
            ),
          ),
        if (!hasCardImageBg)
          Column(
            children: [
              const Spacer(),
              SizedBox(
                height: width * 0.3,
                child: Row(
                  children: [
                    const Spacer(
                      flex: 9,
                    ),
                    SvgPicture.asset(
                      Assets.svg.ellipse2,
                      height: width * 0.3,
                    ),
                    // ),
                    const Spacer(
                      flex: 2,
                    ),
                  ],
                ),
              ),
            ],
          ),
        if (!hasCardImageBg)
          Row(
            children: [
              const Spacer(
                flex: 5,
              ),
              SizedBox(
                width: width * 0.45,
                child: Column(
                  children: [
                    SvgPicture.asset(
                      Assets.svg.ellipse1,
                      width: width * 0.45,
                    ),
                    const Spacer(),
                  ],
                ),
              ),
              const Spacer(
                flex: 1,
              ),
            ],
          ),
      ],
    );
  }
}