import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:okane/database/collections/account.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';

class TotalBalanceCard extends StatelessWidget {
  const TotalBalanceCard({super.key});

  Future<double> _getTotalBalance(List<Account> accounts) async {
    if (accounts.isEmpty) {
      return 0;
    }

    final results = await Future.wait(accounts.map(getTotalBalance).toList());

    return results.reduce((acc, val) => acc + val);
  }

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<CoreCubit, CoreState>(
      builder: (context, state) {
        return Card(
          child: Padding(
            padding: EdgeInsets.all(16),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                Text(
                  "Total balance",
                  style: Theme.of(context).textTheme.titleLarge,
                ),
                FutureBuilder(
                  future: _getTotalBalance(state.accounts),
                  builder: (context, snapshot) {
                    return Text(
                      snapshot.hasData ? formatCurrency(snapshot.data!) : "...",
                      style: Theme.of(context).textTheme.bodyLarge,
                    );
                  },
                ),
              ],
            ),
          ),
        );
      },
    );
  }
}