@@ -234,6 +232,8 @@ const DetailsRow = ({ it: tx, timezone }) => {
return isCashIn ? cashInMessage : cashOutMessage
}
+ const { address, addressDisplay } = formatAddress(tx.cryptoCode, tx.toAddress)
+
return (
@@ -358,9 +358,7 @@ const DetailsRow = ({ it: tx, timezone }) => {
)}
-
- {formatAddress(tx.cryptoCode, tx.toAddress)}
-
+ {addressDisplay}
diff --git a/packages/admin-ui/src/utils/string.js b/packages/admin-ui/src/utils/string.js
index 2fc36494..f46b5191 100644
--- a/packages/admin-ui/src/utils/string.js
+++ b/packages/admin-ui/src/utils/string.js
@@ -1,4 +1,26 @@
import * as R from 'ramda'
+import { formatCryptoAddress } from '@lamassu/coins/lightUtils'
+
+const shortenByEllipses = (str, contextLength, ellipsesLength) =>
+ str.length <= contextLength * 2
+ ? str
+ : [
+ str.slice(0, contextLength),
+ '.'.repeat(ellipsesLength),
+ str.slice(str.length - contextLength),
+ ].join('')
+
+const formatAddress = (cryptoCode, address) => {
+ if (!cryptoCode || !address) return { address: null, addressDisplay: null }
+
+ address = formatCryptoAddress(cryptoCode, address)
+ let addressDisplay =
+ address.length > 84 /* 2*BTC */
+ ? shortenByEllipses(address, 10, 5)
+ : address
+ addressDisplay = addressDisplay.replace(/(.{5})/g, '$1 ')
+ return { address, addressDisplay }
+}
const formatLong = value => {
if (!value || value.length <= 20) return value
@@ -30,6 +52,7 @@ const singularOrPlural = (amount, singularStr, pluralStr) =>
export {
startCase,
onlyFirstToUpper,
+ formatAddress,
formatLong,
singularOrPlural,
sentenceCase,