@@ -90,6 +90,7 @@ export class Utils implements BaseUtils {
9090 let sender = '' ;
9191 let receiver = '' ;
9292 let amount = '' ;
93+ let memoId : string | undefined ;
9394 let preApprovalNode : RecordField [ ] = [ ] ;
9495 let transferNode : RecordField [ ] = [ ] ;
9596 let transferAcceptRejectNode : RecordField [ ] = [ ] ;
@@ -161,6 +162,24 @@ export class Utils implements BaseUtils {
161162
162163 const amountData = getField ( transferRecord , 'amount' ) ;
163164 if ( amountData ?. oneofKind === 'numeric' ) amount = amountData . numeric ?? '' ;
165+
166+ const metaField = getField ( transferRecord , 'meta' ) ;
167+ if ( metaField ?. oneofKind === 'record' ) {
168+ const metaFields = metaField . record ?. fields ;
169+ if ( metaFields && metaFields . length ) {
170+ const valuesField = getField ( metaFields , 'values' ) ;
171+ if ( valuesField ?. oneofKind === 'textMap' ) {
172+ const entries = valuesField . textMap ?. entries ?? [ ] ;
173+ const memoEntry = entries . find ( ( e ) => e . key === 'splice.lfdecentralizedtrust.org/reason' ) ;
174+ if ( memoEntry ) {
175+ const memoValue = memoEntry ?. value ?. sum ;
176+ if ( memoValue ?. oneofKind === 'text' ) {
177+ memoId = memoValue . text ;
178+ }
179+ }
180+ }
181+ }
182+ }
164183 }
165184 }
166185 } else if ( transferAcceptRejectNode . length ) {
@@ -185,11 +204,15 @@ export class Utils implements BaseUtils {
185204 throw new Error ( `invalid transaction data: missing ${ missingFields . join ( ', ' ) } ` ) ;
186205 }
187206 const convertedAmount = this . convertAmountToLowestUnit ( new BigNumber ( amount ) ) ;
188- return {
207+ const parsedData : PreparedTxnParsedInfo = {
189208 sender,
190209 receiver,
191210 amount : convertedAmount ,
192211 } ;
212+ if ( memoId ) {
213+ parsedData . memoId = memoId ;
214+ }
215+ return parsedData ;
193216 }
194217
195218 /**
0 commit comments