import 'dart:math';

import 'package:intl/intl.dart';
import 'package:cake_wallet/entities/crypto_amount_format.dart';

const bitcoinAmountLength = 8;
const bitcoinAmountDivider = 100000000;
final bitcoinAmountFormat = NumberFormat()
  ..maximumFractionDigits = bitcoinAmountLength
  ..minimumFractionDigits = 1;

String bitcoinAmountToString({int amount}) => bitcoinAmountFormat.format(
    cryptoAmountToDouble(amount: amount, divider: bitcoinAmountDivider));

double bitcoinAmountToDouble({int amount}) =>
    cryptoAmountToDouble(amount: amount, divider: bitcoinAmountDivider);

int stringDoubleToBitcoinAmount(String amount) {
  final splitted = amount.split('');
  final dotIndex = amount.indexOf('.');
  int result = 0;


  for (var i = 0; i < splitted.length; i++) {
    try {
      if (dotIndex == i) {
        continue;
      }

      final char = splitted[i];
      final multiplier = dotIndex < i
          ? bitcoinAmountDivider ~/ pow(10, (i - dotIndex))
          : (bitcoinAmountDivider * pow(10, (dotIndex - i -1))).toInt();
      final num = int.parse(char) * multiplier;
      result += num;
    } catch (_) {}
  }

  return result;
}