Commit 6c0b765f authored by isstuev's avatar isstuev

review fix

parent 42f45011
...@@ -17,7 +17,7 @@ import EnsEntity from 'ui/shared/entities/ens/EnsEntity'; ...@@ -17,7 +17,7 @@ import EnsEntity from 'ui/shared/entities/ens/EnsEntity';
import TokenEntity from 'ui/shared/entities/token/TokenEntity'; import TokenEntity from 'ui/shared/entities/token/TokenEntity';
import IconSvg from 'ui/shared/IconSvg'; import IconSvg from 'ui/shared/IconSvg';
import { extractVariables, getStringChunks, NATIVE_COIN_SYMBOL_VAR_NAME } from './utils'; import { extractVariables, getStringChunks, fillStringVariables, NATIVE_COIN_SYMBOL_VAR_NAME } from './utils';
type Props = { type Props = {
summary?: TxInterpretationSummary; summary?: TxInterpretationSummary;
...@@ -48,7 +48,7 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt ...@@ -48,7 +48,7 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt
switch (type) { switch (type) {
case 'address': { case 'address': {
return ( return (
<chakra.span display="inline-block" verticalAlign="top" sx={{ ':not(:first-child)': { marginLeft: 1 } }}> <chakra.span display="inline-block" verticalAlign="top" _notFirst={{ marginLeft: 1 }}>
<AddressEntity <AddressEntity
address={ value } address={ value }
truncation="constant" truncation="constant"
...@@ -60,13 +60,13 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt ...@@ -60,13 +60,13 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt
} }
case 'token': case 'token':
return ( return (
<chakra.span display="inline-block" verticalAlign="top" sx={{ ':not(:first-child)': { marginLeft: 1 } }}> <chakra.span display="inline-block" verticalAlign="top" _notFirst={{ marginLeft: 1 }}>
<TokenEntity <TokenEntity
token={ value } token={ value }
onlySymbol onlySymbol
noCopy noCopy
width="fit-content" width="fit-content"
sx={{ ':not(:first-child)': { marginLeft: 1 } }} _notFirst={{ marginLeft: 1 }}
mr={ 2 } mr={ 2 }
whiteSpace="initial" whiteSpace="initial"
onClick={ onTokenClick } onClick={ onTokenClick }
...@@ -76,11 +76,11 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt ...@@ -76,11 +76,11 @@ const TxInterpretationElementByType = ({ variable }: { variable?: NonStringTxInt
case 'domain': { case 'domain': {
if (config.features.nameService.isEnabled) { if (config.features.nameService.isEnabled) {
return ( return (
<chakra.span display="inline-block" verticalAlign="top" sx={{ ':not(:first-child)': { marginLeft: 1 } }}> <chakra.span display="inline-block" verticalAlign="top" _notFirst={{ marginLeft: 1 }}>
<EnsEntity <EnsEntity
name={ value } name={ value }
width="fit-content" width="fit-content"
sx={{ ':not(:first-child)': { marginLeft: 1 } }} _notFirst={{ marginLeft: 1 }}
whiteSpace="initial" whiteSpace="initial"
onClick={ onDomainClick } onClick={ onDomainClick }
/> />
...@@ -116,14 +116,7 @@ const TxInterpretation = ({ summary, isLoading, className }: Props) => { ...@@ -116,14 +116,7 @@ const TxInterpretation = ({ summary, isLoading, className }: Props) => {
const template = summary.summary_template; const template = summary.summary_template;
const variables = summary.summary_template_variables; const variables = summary.summary_template_variables;
const variablesNamesInitial = extractVariables(template); const intermediateResult = fillStringVariables(template, variables);
let intermediateResult = template;
variablesNamesInitial.forEach(name => {
if (variables[name] && variables[name].type === 'string') {
intermediateResult = intermediateResult.replace(`{${ name }}`, variables[name].value as string);
}
});
const variablesNames = extractVariables(intermediateResult); const variablesNames = extractVariables(intermediateResult);
const chunks = getStringChunks(intermediateResult); const chunks = getStringChunks(intermediateResult);
......
// we use that regex as a separator when splitting template and dont want to capture variables // we use that regex as a separator when splitting template and dont want to capture variables
import type { TxInterpretationVariable } from 'types/api/txInterpretation';
// eslint-disable-next-line regexp/no-useless-non-capturing-group // eslint-disable-next-line regexp/no-useless-non-capturing-group
export const VAR_REGEXP = /\{(?:[^}]+)\}/g; export const VAR_REGEXP = /\{(?:[^}]+)\}/g;
...@@ -16,3 +19,16 @@ export function extractVariables(templateString: string) { ...@@ -16,3 +19,16 @@ export function extractVariables(templateString: string) {
export function getStringChunks(template: string) { export function getStringChunks(template: string) {
return template.split(VAR_REGEXP); return template.split(VAR_REGEXP);
} }
export function fillStringVariables(template: string, variables: Record<string, TxInterpretationVariable>) {
const variablesNames = extractVariables(template);
let result = template;
variablesNames.forEach(name => {
if (variables[name] && variables[name].type === 'string') {
result = result.replace(`{${ name }}`, variables[name].value as string);
}
});
return result;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment