@provenanceio/wallet-utils
Version:
Typescript Utilities for Provenance Blockchain Wallet
193 lines (159 loc) • 5.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.formatSingleValue = exports.formatCustomObj = exports.displayHashFormat = exports.displayGasPrice = exports.displayDateAndTime = exports.displayCoinAsObject = exports.displayCapitalizedString = exports.displayAmountList = exports.displayAddress = void 0;
var _trimString = require("./trimString");
var _hashFormat = require("./hashFormat");
var _numberFormat = require("./numberFormat");
var _capitalize = require("./capitalize");
var _dateFns = require("date-fns");
var _tsPattern = require("ts-pattern");
var displayCapitalizedString = function displayCapitalizedString(fieldValue) {
return (0, _capitalize.capitalize)("".concat(fieldValue));
};
/**
* Displays a wallet address by trimming length to 11.
*/
exports.displayCapitalizedString = displayCapitalizedString;
var displayAddress = function displayAddress() {
var fieldValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
return fieldValue ? (0, _trimString.trimString)(fieldValue, 11, 3) : fieldValue;
};
/**
* amountList is an array of objects: amountList: [{ denom: 'a', amount: '1' }, {...}]
* Note: If the denom is nhash, autoconvert to hash
*/
exports.displayAddress = displayAddress;
var displayAmountList = function displayAmountList(fieldValue) {
return fieldValue.map(function (coin) {
return displayCoinAsObject(coin);
});
};
/**
* Hash is fixed to 5 dec points by default.
*/
exports.displayAmountList = displayAmountList;
var displayHashFormat = function displayHashFormat(fieldValue) {
var toFixed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
return "".concat((0, _hashFormat.hashFormat)(fieldValue).toFixed(toFixed), " Hash");
};
/**
* Amount be a CoinAsObject or an amount. Automatically convert nhash to hash.
* For other denoms, defaults to display a capital case of the denom.
*/
exports.displayHashFormat = displayHashFormat;
var displayCoinAsObject = function displayCoinAsObject(fieldValue) {
if (typeof fieldValue === 'string' || typeof fieldValue === 'number') return (0, _numberFormat.numberFormat)(fieldValue, 5);
var _ref = fieldValue,
denom = _ref.denom,
amount = _ref.amount;
switch (denom) {
case 'hash':
return "".concat(amount, " ").concat(denom);
case 'nhash':
return "".concat((0, _hashFormat.hashFormat)(amount), " Hash");
default:
return "".concat(amount, " ").concat(denom);
}
};
exports.displayCoinAsObject = displayCoinAsObject;
var displayGasPrice = function displayGasPrice(fieldValue) {
return displayCoinAsObject({
denom: fieldValue.gasPriceDenom,
amount: fieldValue.gasPrice
});
};
exports.displayGasPrice = displayGasPrice;
var displayDateAndTime = function displayDateAndTime(fieldValue) {
return (0, _dateFns.format)(new Date(fieldValue), 'MMM d, h:mm:ss a');
};
/**
* Deduce the formatting function based on the field and/or value. Value
* is formatted below, otherwise it may be an array/object which is
* recursively unpacked message-service and passed through the formatting
* function again.
*
*/
exports.displayDateAndTime = displayDateAndTime;
var formatSingleValue = function formatSingleValue(value) {
return (0, _tsPattern.match)({
value: value
}) // True => Yes, False => No
["with"]({
value: _tsPattern.P["boolean"]
}, function () {
return value ? 'Yes' : 'No';
}) // Attempt to convert number or string to a Date
["with"]({
value: _tsPattern.P.when(function () {
return new Date(value);
}).toString() === 'Invalid Date'
}, function () {
return displayDateAndTime(value);
}) // Blockchain address usually starts with tp. Trim all other strings without spaces.
["with"]({
value: _tsPattern.P.when(function (str) {
return str.toString().indexOf('tp') === 0 || str.toString().indexOf(' ') < 0 && str.length > 30;
})
}, function () {
return displayAddress(value);
}) // Values that are all caps separated by underscores, i.e. MARKER_TYPE_COIN
["with"]({
value: _tsPattern.P.when(function () {
return new RegExp('^[A-Z]+(?:_[A-Z]+)*$').test(value);
})
}, function () {
return displayCapitalizedString(value);
}) // Default print as string
.otherwise(function () {
return value.toString();
});
};
/**
* Deduce the formatting function based on the field and/or value. Value
* is formatted below, otherwise it may be an array/object which is
* recursively unpacked message-service and passed through the formatting
* function again.
*/
exports.formatSingleValue = formatSingleValue;
var formatCustomObj = function formatCustomObj(key, value) {
return (0, _tsPattern.match)({
key: key,
value: value
})["with"]({
value: _tsPattern.P.array({
denom: _tsPattern.P.string,
amount: _tsPattern.P.string || _tsPattern.P.number
})
}, function () {
return displayAmountList(value);
})["with"]({
value: {
denom: _tsPattern.P.string,
amount: _tsPattern.P.string || _tsPattern.P.number
}
}, function () {
return displayCoinAsObject(value);
})["with"]({
value: {
gasPriceDenom: _tsPattern.P.string,
gasPrice: _tsPattern.P.string || _tsPattern.P.number
}
}, function () {
return displayGasPrice(value);
})["with"]({
key: 'feeAmount'
}, function () {
return displayHashFormat(value);
})["with"]({
value: _tsPattern.P.when(function (p) {
return new Date(p);
}).toString() === 'Invalid Date'
}, function () {
return displayDateAndTime(value);
}).otherwise(function () {
return null;
});
};
exports.formatCustomObj = formatCustomObj;