55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { utils } from 'ethers'
|
|
|
|
/**
|
|
* Truncates string (in the middle) via given lenght value
|
|
*/
|
|
export function truncate(value: string, length: number) {
|
|
if (value.length <= length) {
|
|
return value
|
|
}
|
|
|
|
const separator = '...'
|
|
const stringLength = length - separator.length
|
|
const frontLength = Math.ceil(stringLength / 2)
|
|
const backLength = Math.floor(stringLength / 2)
|
|
|
|
return value.substring(0, frontLength) + separator + value.substring(value.length - backLength)
|
|
}
|
|
|
|
/**
|
|
* Converts hex to utf8 string if it is valid bytes
|
|
*/
|
|
export function convertHexToUtf8(value: string) {
|
|
if (utils.isHexString(value)) {
|
|
return utils.toUtf8String(value)
|
|
}
|
|
|
|
return value
|
|
}
|
|
|
|
/**
|
|
* Gets message from various signing request methods by filtering out
|
|
* a value that is not an address (thus is a message).
|
|
* If it is a hex string, it gets converted to utf8 string
|
|
*/
|
|
export function getSignParamsMessage(params: string[]) {
|
|
const message = params.filter(p => !utils.isAddress(p))[0]
|
|
|
|
return convertHexToUtf8(message)
|
|
}
|
|
|
|
/**
|
|
* Gets data from various signTypedData request methods by filtering out
|
|
* a value that is not an address (thus is data).
|
|
* If data is a string convert it to object
|
|
*/
|
|
export function getSignTypedDataParamsData(params: string[]) {
|
|
const data = params.filter(p => !utils.isAddress(p))[0]
|
|
|
|
if (typeof data === 'string') {
|
|
return JSON.parse(data)
|
|
}
|
|
|
|
return data
|
|
}
|