import 'dart:typed_data'; import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/enums/backup_frequency_type.dart'; abstract class Format { static String shorten(String value, int beginCount, int endCount) { return "${value.substring(0, beginCount)}...${value.substring(value.length - endCount)}"; } // static Decimal satoshisToAmount(int sats, {required Coin coin}) { // return (Decimal.fromInt(sats) / // Decimal.fromInt(Constants.satsPerCoin(coin))) // .toDecimal( // scaleOnInfinitePrecision: Constants.decimalPlacesForCoin(coin)); // } // // static Decimal satoshisToEthTokenAmount(int sats, int decimalPlaces) { // return (Decimal.fromInt(sats) / // Decimal.fromInt(pow(10, decimalPlaces).toInt())) // .toDecimal(scaleOnInfinitePrecision: decimalPlaces); // } // // /// // static String satoshiAmountToPrettyString( // int sats, String locale, Coin coin) { // final amount = satoshisToAmount(sats, coin: coin); // return localizedStringAsFixed( // value: amount, // locale: locale, // decimalPlaces: Constants.decimalPlacesForCoin(coin), // ); // } // // static int decimalAmountToSatoshis(Decimal amount, Coin coin) { // final value = (Decimal.fromInt(Constants.satsPerCoin(coin)) * amount) // .floor() // .toBigInt(); // return value.toInt(); // } // format date string from unix timestamp static String extractDateFrom(int timestamp, {bool localized = true}) { var date = DateTime.fromMillisecondsSinceEpoch(timestamp * 1000); if (!localized) { date = date.toUtc(); } final minutes = date.minute < 10 ? "0${date.minute}" : date.minute.toString(); return "${date.day} ${Constants.monthMapShort[date.month]} ${date.year}, ${date.hour}:$minutes"; } // static String localizedStringAsFixed({ // required Decimal value, // required String locale, // int decimalPlaces = 0, // }) { // assert(decimalPlaces >= 0); // // final String separator = // (numberFormatSymbols[locale] as NumberSymbols?)?.DECIMAL_SEP ?? // (numberFormatSymbols[locale.substring(0, 2)] as NumberSymbols?) // ?.DECIMAL_SEP ?? // "."; // // final intValue = value.truncate(); // final fraction = value - intValue; // // return intValue.toStringAsFixed(0) + // separator + // fraction.toStringAsFixed(decimalPlaces).substring(2); // } /// format date string as dd/mm/yy from DateTime object static String formatDate(DateTime date) { // prepend '0' if needed final day = date.day < 10 ? "0${date.day}" : "${date.day}"; // prepend '0' if needed final month = date.month < 10 ? "0${date.month}" : "${date.month}"; // get last two digits of value final shortYear = date.year % 100; // prepend '0' if needed final year = shortYear < 10 ? "0$shortYear" : "$shortYear"; return "$month/$day/$year"; } static String uint8listToString(Uint8List list) { String result = ""; for (var n in list) { result += (n.toRadixString(16).length == 1 ? "0" : "") + n.toRadixString(16); } return result; } static Uint8List stringToUint8List(String string) { List list = []; for (var leg = 0; leg < string.length; leg = leg + 2) { list.add(int.parse(string.substring(leg, leg + 2), radix: 16)); } return Uint8List.fromList(list); } static bool isAscii(String string) { final asciiRegex = RegExp(r'^[\x00-\x7F]+$'); return asciiRegex.hasMatch(string); } static String prettyFrequencyType(BackupFrequencyType type) { switch (type) { case BackupFrequencyType.everyTenMinutes: return "Every 10 minutes"; case BackupFrequencyType.everyAppStart: return "Every app start"; case BackupFrequencyType.afterClosingAWallet: return "After closing a cryptocurrency wallet"; } } }