@reown/appkit-ui-react-native 0.0.0-feat-swaps-20241217153851 → 0.0.0-feat-swaps-20250115141325

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,17 +20,18 @@ const TransactionUtil = exports.TransactionUtil = {
20
20
  return groupTitle;
21
21
  },
22
22
  getTransactionImages(transfers) {
23
- const [transfer, secondTransfer] = transfers;
24
- const isAllNFT = Boolean(transfer) && transfers?.every(item => Boolean(item.nft_info));
23
+ const isAllNFT = Boolean(transfers[0]) && transfers?.every(item => Boolean(item.nft_info));
25
24
  const haveMultipleTransfers = transfers?.length > 1;
26
25
  const haveTwoTransfers = transfers?.length === 2;
27
26
  if (haveTwoTransfers && !isAllNFT) {
28
- return [this.getTransactionImage(transfer), this.getTransactionImage(secondTransfer)];
27
+ const first = transfers.find(t => t?.direction === 'out');
28
+ const second = transfers.find(t => t?.direction === 'in');
29
+ return [this.getTransactionImage(first), this.getTransactionImage(second)];
29
30
  }
30
31
  if (haveMultipleTransfers) {
31
32
  return transfers.map(item => this.getTransactionImage(item));
32
33
  }
33
- return [this.getTransactionImage(transfer)];
34
+ return [this.getTransactionImage(transfers[0])];
34
35
  },
35
36
  getTransactionImage(transfer) {
36
37
  return {
@@ -58,55 +59,65 @@ const TransactionUtil = exports.TransactionUtil = {
58
59
  return undefined;
59
60
  },
60
61
  getTransactionDescriptions(transaction) {
62
+ if (!transaction.metadata) {
63
+ return ['Unknown transaction'];
64
+ }
61
65
  const type = transaction?.metadata?.operationType;
62
66
  const transfers = transaction?.transfers;
63
- const haveTransfer = transaction?.transfers?.length > 0;
64
- const haveMultipleTransfers = transaction?.transfers?.length > 1;
65
- const isSendOrReceive = type === 'send' || type === 'receive';
66
- const isFungible = haveTransfer && transfers?.every(transfer => Boolean(transfer?.fungible_info));
67
- const [firstTransfer, secondTransfer] = transfers;
68
- let firstDescription = this.getTransferDescription(firstTransfer);
69
- let secondDescription = this.getTransferDescription(secondTransfer);
70
- if (!haveTransfer) {
71
- if (isSendOrReceive && isFungible) {
72
- firstDescription = _UiUtil.UiUtil.getTruncateString({
73
- string: transaction?.metadata.sentFrom,
74
- charsStart: 4,
75
- charsEnd: 6,
76
- truncate: 'middle'
77
- });
78
- secondDescription = _UiUtil.UiUtil.getTruncateString({
79
- string: transaction?.metadata.sentTo,
80
- charsStart: 4,
81
- charsEnd: 6,
82
- truncate: 'middle'
83
- });
84
- return [firstDescription, secondDescription];
85
- }
86
- return [transaction.metadata.status];
67
+
68
+ // Early return for trade transactions
69
+ if (type === 'trade') {
70
+ return this.getTradeDescriptions(transfers);
87
71
  }
88
- if (haveMultipleTransfers) {
89
- return transfers.map(item => this.getTransferDescription(item));
72
+
73
+ // Handle multiple transfers
74
+ if (transfers.length > 1) {
75
+ return transfers.map(transfer => this.getTransferDescription(transfer));
90
76
  }
91
- let prefix = '';
92
- if (plusTypes.includes(type)) {
93
- prefix = '+';
94
- } else if (minusTypes.includes(type)) {
95
- prefix = '-';
77
+
78
+ // Handle single transfer
79
+ if (transfers.length === 1) {
80
+ return [this.formatSingleTransfer(transfers[0], type, transaction.metadata)];
96
81
  }
97
- firstDescription = prefix.concat(firstDescription);
98
- if (isSendOrReceive) {
82
+ return [transaction.metadata.status];
83
+ },
84
+ isSendReceiveTransaction(type) {
85
+ return type === 'send' || type === 'receive';
86
+ },
87
+ hasFungibleTransfers(transfers) {
88
+ return transfers.every(transfer => Boolean(transfer?.fungible_info));
89
+ },
90
+ getSendReceiveDescriptions(metadata) {
91
+ return [this.truncateAddress(metadata.sentFrom), this.truncateAddress(metadata.sentTo)];
92
+ },
93
+ truncateAddress(address) {
94
+ return _UiUtil.UiUtil.getTruncateString({
95
+ string: address,
96
+ charsStart: 4,
97
+ charsEnd: 6,
98
+ truncate: 'middle'
99
+ });
100
+ },
101
+ formatSingleTransfer(transfer, type, metadata) {
102
+ const prefix = this.getPrefix(type);
103
+ let description = prefix.concat(this.getTransferDescription(transfer));
104
+ if (this.isSendReceiveTransaction(type)) {
99
105
  const isSend = type === 'send';
100
- const address = _UiUtil.UiUtil.getTruncateString({
101
- string: isSend ? transaction.metadata.sentTo : transaction.metadata.sentFrom,
102
- charsStart: 4,
103
- charsEnd: 4,
104
- truncate: 'middle'
105
- });
106
+ const address = this.truncateAddress(isSend ? metadata.sentTo : metadata.sentFrom);
106
107
  const arrow = isSend ? '→' : '←';
107
- firstDescription = firstDescription.concat(` ${arrow} ${address}`);
108
+ description = description.concat(` ${arrow} ${address}`);
108
109
  }
109
- return [firstDescription];
110
+ return description;
111
+ },
112
+ getPrefix(type) {
113
+ if (plusTypes.includes(type)) return '+';
114
+ if (minusTypes.includes(type)) return '-';
115
+ return '';
116
+ },
117
+ getTradeDescriptions(transfers) {
118
+ const outTransfer = transfers.find(transfer => transfer?.direction === 'out');
119
+ const inTransfer = transfers.find(transfer => transfer?.direction === 'in');
120
+ return [this.getTransferDescription(outTransfer), this.getTransferDescription(inTransfer)];
110
121
  },
111
122
  getTransferDescription(transfer) {
112
123
  let description = '';
@@ -1 +1 @@
1
- {"version":3,"names":["_appkitCommonReactNative","require","_UiUtil","FLOAT_FIXED_VALUE","SMALL_FLOAT_FIXED_VALUE","plusTypes","minusTypes","TransactionUtil","exports","getTransactionGroupTitle","year","month","currentYear","DateUtil","getYear","toString","monthName","getMonth","parseInt","isCurrentYear","groupTitle","getTransactionImages","transfers","transfer","secondTransfer","isAllNFT","Boolean","every","item","nft_info","haveMultipleTransfers","length","haveTwoTransfers","getTransactionImage","map","type","getTransactionTransferTokenType","url","getTransactionImageURL","imageURL","isNFT","isFungible","fungible_info","content","preview","icon","undefined","getTransactionDescriptions","transaction","metadata","operationType","haveTransfer","isSendOrReceive","firstTransfer","firstDescription","getTransferDescription","secondDescription","UiUtil","getTruncateString","string","sentFrom","charsStart","charsEnd","truncate","sentTo","status","prefix","includes","concat","isSend","address","arrow","description","name","getFungibleTransferDescription","quantity","getQuantityFixedValue","numeric","symbol","join","trim","value","parsedValue","parseFloat","toFixed"],"sourceRoot":"../../../src","sources":["utils/TransactionUtil.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_appkitCommonReactNative","require","_UiUtil","FLOAT_FIXED_VALUE","SMALL_FLOAT_FIXED_VALUE","plusTypes","minusTypes","TransactionUtil","exports","getTransactionGroupTitle","year","month","currentYear","DateUtil","getYear","toString","monthName","getMonth","parseInt","isCurrentYear","groupTitle","getTransactionImages","transfers","isAllNFT","Boolean","every","item","nft_info","haveMultipleTransfers","length","haveTwoTransfers","first","find","t","direction","second","getTransactionImage","map","transfer","type","getTransactionTransferTokenType","url","getTransactionImageURL","imageURL","isNFT","isFungible","fungible_info","content","preview","icon","undefined","getTransactionDescriptions","transaction","metadata","operationType","getTradeDescriptions","getTransferDescription","formatSingleTransfer","status","isSendReceiveTransaction","hasFungibleTransfers","getSendReceiveDescriptions","truncateAddress","sentFrom","sentTo","address","UiUtil","getTruncateString","string","charsStart","charsEnd","truncate","prefix","getPrefix","description","concat","isSend","arrow","includes","outTransfer","inTransfer","name","getFungibleTransferDescription","quantity","getQuantityFixedValue","numeric","symbol","join","trim","value","parsedValue","parseFloat","toFixed"],"sourceRoot":"../../../src","sources":["utils/TransactionUtil.ts"],"mappings":"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"}
@@ -15,17 +15,18 @@ export const TransactionUtil = {
15
15
  return groupTitle;
16
16
  },
17
17
  getTransactionImages(transfers) {
18
- const [transfer, secondTransfer] = transfers;
19
- const isAllNFT = Boolean(transfer) && transfers?.every(item => Boolean(item.nft_info));
18
+ const isAllNFT = Boolean(transfers[0]) && transfers?.every(item => Boolean(item.nft_info));
20
19
  const haveMultipleTransfers = transfers?.length > 1;
21
20
  const haveTwoTransfers = transfers?.length === 2;
22
21
  if (haveTwoTransfers && !isAllNFT) {
23
- return [this.getTransactionImage(transfer), this.getTransactionImage(secondTransfer)];
22
+ const first = transfers.find(t => t?.direction === 'out');
23
+ const second = transfers.find(t => t?.direction === 'in');
24
+ return [this.getTransactionImage(first), this.getTransactionImage(second)];
24
25
  }
25
26
  if (haveMultipleTransfers) {
26
27
  return transfers.map(item => this.getTransactionImage(item));
27
28
  }
28
- return [this.getTransactionImage(transfer)];
29
+ return [this.getTransactionImage(transfers[0])];
29
30
  },
30
31
  getTransactionImage(transfer) {
31
32
  return {
@@ -53,55 +54,65 @@ export const TransactionUtil = {
53
54
  return undefined;
54
55
  },
55
56
  getTransactionDescriptions(transaction) {
57
+ if (!transaction.metadata) {
58
+ return ['Unknown transaction'];
59
+ }
56
60
  const type = transaction?.metadata?.operationType;
57
61
  const transfers = transaction?.transfers;
58
- const haveTransfer = transaction?.transfers?.length > 0;
59
- const haveMultipleTransfers = transaction?.transfers?.length > 1;
60
- const isSendOrReceive = type === 'send' || type === 'receive';
61
- const isFungible = haveTransfer && transfers?.every(transfer => Boolean(transfer?.fungible_info));
62
- const [firstTransfer, secondTransfer] = transfers;
63
- let firstDescription = this.getTransferDescription(firstTransfer);
64
- let secondDescription = this.getTransferDescription(secondTransfer);
65
- if (!haveTransfer) {
66
- if (isSendOrReceive && isFungible) {
67
- firstDescription = UiUtil.getTruncateString({
68
- string: transaction?.metadata.sentFrom,
69
- charsStart: 4,
70
- charsEnd: 6,
71
- truncate: 'middle'
72
- });
73
- secondDescription = UiUtil.getTruncateString({
74
- string: transaction?.metadata.sentTo,
75
- charsStart: 4,
76
- charsEnd: 6,
77
- truncate: 'middle'
78
- });
79
- return [firstDescription, secondDescription];
80
- }
81
- return [transaction.metadata.status];
62
+
63
+ // Early return for trade transactions
64
+ if (type === 'trade') {
65
+ return this.getTradeDescriptions(transfers);
82
66
  }
83
- if (haveMultipleTransfers) {
84
- return transfers.map(item => this.getTransferDescription(item));
67
+
68
+ // Handle multiple transfers
69
+ if (transfers.length > 1) {
70
+ return transfers.map(transfer => this.getTransferDescription(transfer));
85
71
  }
86
- let prefix = '';
87
- if (plusTypes.includes(type)) {
88
- prefix = '+';
89
- } else if (minusTypes.includes(type)) {
90
- prefix = '-';
72
+
73
+ // Handle single transfer
74
+ if (transfers.length === 1) {
75
+ return [this.formatSingleTransfer(transfers[0], type, transaction.metadata)];
91
76
  }
92
- firstDescription = prefix.concat(firstDescription);
93
- if (isSendOrReceive) {
77
+ return [transaction.metadata.status];
78
+ },
79
+ isSendReceiveTransaction(type) {
80
+ return type === 'send' || type === 'receive';
81
+ },
82
+ hasFungibleTransfers(transfers) {
83
+ return transfers.every(transfer => Boolean(transfer?.fungible_info));
84
+ },
85
+ getSendReceiveDescriptions(metadata) {
86
+ return [this.truncateAddress(metadata.sentFrom), this.truncateAddress(metadata.sentTo)];
87
+ },
88
+ truncateAddress(address) {
89
+ return UiUtil.getTruncateString({
90
+ string: address,
91
+ charsStart: 4,
92
+ charsEnd: 6,
93
+ truncate: 'middle'
94
+ });
95
+ },
96
+ formatSingleTransfer(transfer, type, metadata) {
97
+ const prefix = this.getPrefix(type);
98
+ let description = prefix.concat(this.getTransferDescription(transfer));
99
+ if (this.isSendReceiveTransaction(type)) {
94
100
  const isSend = type === 'send';
95
- const address = UiUtil.getTruncateString({
96
- string: isSend ? transaction.metadata.sentTo : transaction.metadata.sentFrom,
97
- charsStart: 4,
98
- charsEnd: 4,
99
- truncate: 'middle'
100
- });
101
+ const address = this.truncateAddress(isSend ? metadata.sentTo : metadata.sentFrom);
101
102
  const arrow = isSend ? '→' : '←';
102
- firstDescription = firstDescription.concat(` ${arrow} ${address}`);
103
+ description = description.concat(` ${arrow} ${address}`);
103
104
  }
104
- return [firstDescription];
105
+ return description;
106
+ },
107
+ getPrefix(type) {
108
+ if (plusTypes.includes(type)) return '+';
109
+ if (minusTypes.includes(type)) return '-';
110
+ return '';
111
+ },
112
+ getTradeDescriptions(transfers) {
113
+ const outTransfer = transfers.find(transfer => transfer?.direction === 'out');
114
+ const inTransfer = transfers.find(transfer => transfer?.direction === 'in');
115
+ return [this.getTransferDescription(outTransfer), this.getTransferDescription(inTransfer)];
105
116
  },
106
117
  getTransferDescription(transfer) {
107
118
  let description = '';
@@ -1 +1 @@
1
- {"version":3,"names":["DateUtil","UiUtil","FLOAT_FIXED_VALUE","SMALL_FLOAT_FIXED_VALUE","plusTypes","minusTypes","TransactionUtil","getTransactionGroupTitle","year","month","currentYear","getYear","toString","monthName","getMonth","parseInt","isCurrentYear","groupTitle","getTransactionImages","transfers","transfer","secondTransfer","isAllNFT","Boolean","every","item","nft_info","haveMultipleTransfers","length","haveTwoTransfers","getTransactionImage","map","type","getTransactionTransferTokenType","url","getTransactionImageURL","imageURL","isNFT","isFungible","fungible_info","content","preview","icon","undefined","getTransactionDescriptions","transaction","metadata","operationType","haveTransfer","isSendOrReceive","firstTransfer","firstDescription","getTransferDescription","secondDescription","getTruncateString","string","sentFrom","charsStart","charsEnd","truncate","sentTo","status","prefix","includes","concat","isSend","address","arrow","description","name","getFungibleTransferDescription","quantity","getQuantityFixedValue","numeric","symbol","join","trim","value","parsedValue","parseFloat","toFixed"],"sourceRoot":"../../../src","sources":["utils/TransactionUtil.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,mCAAmC;AAO5D,SAASC,MAAM,QAAQ,UAAU;;AAEjC;AACA,MAAMC,iBAAiB,GAAG,CAAC;AAC3B,MAAMC,uBAAuB,GAAG,CAAC;AACjC,MAAMC,SAA4B,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC9E,MAAMC,UAA6B,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;AAEnE,OAAO,MAAMC,eAAe,GAAG;EAC7BC,wBAAwBA,CAACC,IAAY,EAAEC,KAAa,EAAE;IACpD,MAAMC,WAAW,GAAGV,QAAQ,CAACW,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;IACjD,MAAMC,SAAS,GAAGb,QAAQ,CAACc,QAAQ,CAACC,QAAQ,CAACN,KAAK,CAAC,CAAC;IACpD,MAAMO,aAAa,GAAGR,IAAI,KAAKE,WAAW;IAC1C,MAAMO,UAAU,GAAGD,aAAa,GAAGH,SAAS,GAAI,GAAEA,SAAU,IAAGL,IAAK,EAAC;IAErE,OAAOS,UAAU;EACnB,CAAC;EAEDC,oBAAoBA,CAACC,SAAgC,EAAsB;IACzE,MAAM,CAACC,QAAQ,EAAEC,cAAc,CAAC,GAAGF,SAAS;IAC5C,MAAMG,QAAQ,GAAGC,OAAO,CAACH,QAAQ,CAAC,IAAID,SAAS,EAAEK,KAAK,CAACC,IAAI,IAAIF,OAAO,CAACE,IAAI,CAACC,QAAQ,CAAC,CAAC;IACtF,MAAMC,qBAAqB,GAAGR,SAAS,EAAES,MAAM,GAAG,CAAC;IACnD,MAAMC,gBAAgB,GAAGV,SAAS,EAAES,MAAM,KAAK,CAAC;IAEhD,IAAIC,gBAAgB,IAAI,CAACP,QAAQ,EAAE;MACjC,OAAO,CAAC,IAAI,CAACQ,mBAAmB,CAACV,QAAQ,CAAC,EAAE,IAAI,CAACU,mBAAmB,CAACT,cAAc,CAAC,CAAC;IACvF;IAEA,IAAIM,qBAAqB,EAAE;MACzB,OAAOR,SAAS,CAACY,GAAG,CAACN,IAAI,IAAI,IAAI,CAACK,mBAAmB,CAACL,IAAI,CAAC,CAAC;IAC9D;IAEA,OAAO,CAAC,IAAI,CAACK,mBAAmB,CAACV,QAAQ,CAAC,CAAC;EAC7C,CAAC;EAEDU,mBAAmBA,CAACV,QAA8B,EAAoB;IACpE,OAAO;MACLY,IAAI,EAAE1B,eAAe,CAAC2B,+BAA+B,CAACb,QAAQ,CAAC;MAC/Dc,GAAG,EAAE5B,eAAe,CAAC6B,sBAAsB,CAACf,QAAQ;IACtD,CAAC;EACH,CAAC;EAEDe,sBAAsBA,CAACf,QAAyC,EAAE;IAChE,IAAIgB,QAAQ;IACZ,MAAMC,KAAK,GAAGd,OAAO,CAACH,QAAQ,EAAEM,QAAQ,CAAC;IACzC,MAAMY,UAAU,GAAGf,OAAO,CAACH,QAAQ,EAAEmB,aAAa,CAAC;IAEnD,IAAInB,QAAQ,IAAIiB,KAAK,EAAE;MACrBD,QAAQ,GAAGhB,QAAQ,EAAEM,QAAQ,EAAEc,OAAO,EAAEC,OAAO,EAAEP,GAAG;IACtD,CAAC,MAAM,IAAId,QAAQ,IAAIkB,UAAU,EAAE;MACjCF,QAAQ,GAAGhB,QAAQ,EAAEmB,aAAa,EAAEG,IAAI,EAAER,GAAG;IAC/C;IAEA,OAAOE,QAAQ;EACjB,CAAC;EAEDH,+BAA+BA,CAACb,QAA8B,EAAkC;IAC9F,IAAIA,QAAQ,EAAEmB,aAAa,EAAE;MAC3B,OAAO,UAAU;IACnB,CAAC,MAAM,IAAInB,QAAQ,EAAEM,QAAQ,EAAE;MAC7B,OAAO,KAAK;IACd;IAEA,OAAOiB,SAAS;EAClB,CAAC;EAEDC,0BAA0BA,CAACC,WAAwB,EAAE;IACnD,MAAMb,IAAI,GAAGa,WAAW,EAAEC,QAAQ,EAAEC,aAAgC;IAEpE,MAAM5B,SAAS,GAAG0B,WAAW,EAAE1B,SAAS;IACxC,MAAM6B,YAAY,GAAGH,WAAW,EAAE1B,SAAS,EAAES,MAAM,GAAG,CAAC;IACvD,MAAMD,qBAAqB,GAAGkB,WAAW,EAAE1B,SAAS,EAAES,MAAM,GAAG,CAAC;IAChE,MAAMqB,eAAe,GAAGjB,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,SAAS;IAC7D,MAAMM,UAAU,GACdU,YAAY,IAAI7B,SAAS,EAAEK,KAAK,CAACJ,QAAQ,IAAIG,OAAO,CAACH,QAAQ,EAAEmB,aAAa,CAAC,CAAC;IAChF,MAAM,CAACW,aAAa,EAAE7B,cAAc,CAAC,GAAGF,SAAS;IAEjD,IAAIgC,gBAAgB,GAAG,IAAI,CAACC,sBAAsB,CAACF,aAAa,CAAC;IACjE,IAAIG,iBAAiB,GAAG,IAAI,CAACD,sBAAsB,CAAC/B,cAAc,CAAC;IAEnE,IAAI,CAAC2B,YAAY,EAAE;MACjB,IAAIC,eAAe,IAAIX,UAAU,EAAE;QACjCa,gBAAgB,GAAGlD,MAAM,CAACqD,iBAAiB,CAAC;UAC1CC,MAAM,EAAEV,WAAW,EAAEC,QAAQ,CAACU,QAAQ;UACtCC,UAAU,EAAE,CAAC;UACbC,QAAQ,EAAE,CAAC;UACXC,QAAQ,EAAE;QACZ,CAAC,CAAC;QACFN,iBAAiB,GAAGpD,MAAM,CAACqD,iBAAiB,CAAC;UAC3CC,MAAM,EAAEV,WAAW,EAAEC,QAAQ,CAACc,MAAM;UACpCH,UAAU,EAAE,CAAC;UACbC,QAAQ,EAAE,CAAC;UACXC,QAAQ,EAAE;QACZ,CAAC,CAAC;QAEF,OAAO,CAACR,gBAAgB,EAAEE,iBAAiB,CAAC;MAC9C;MAEA,OAAO,CAACR,WAAW,CAACC,QAAQ,CAACe,MAAM,CAAC;IACtC;IAEA,IAAIlC,qBAAqB,EAAE;MACzB,OAAOR,SAAS,CAACY,GAAG,CAACN,IAAI,IAAI,IAAI,CAAC2B,sBAAsB,CAAC3B,IAAI,CAAC,CAAC;IACjE;IAEA,IAAIqC,MAAM,GAAG,EAAE;IACf,IAAI1D,SAAS,CAAC2D,QAAQ,CAAC/B,IAAI,CAAC,EAAE;MAC5B8B,MAAM,GAAG,GAAG;IACd,CAAC,MAAM,IAAIzD,UAAU,CAAC0D,QAAQ,CAAC/B,IAAI,CAAC,EAAE;MACpC8B,MAAM,GAAG,GAAG;IACd;IAEAX,gBAAgB,GAAGW,MAAM,CAACE,MAAM,CAACb,gBAAgB,CAAC;IAElD,IAAIF,eAAe,EAAE;MACnB,MAAMgB,MAAM,GAAGjC,IAAI,KAAK,MAAM;MAC9B,MAAMkC,OAAO,GAAGjE,MAAM,CAACqD,iBAAiB,CAAC;QACvCC,MAAM,EAAEU,MAAM,GAAGpB,WAAW,CAACC,QAAQ,CAACc,MAAM,GAAGf,WAAW,CAACC,QAAQ,CAACU,QAAQ;QAC5EC,UAAU,EAAE,CAAC;QACbC,QAAQ,EAAE,CAAC;QACXC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,MAAMQ,KAAK,GAAGF,MAAM,GAAG,GAAG,GAAG,GAAG;MAChCd,gBAAgB,GAAGA,gBAAgB,CAACa,MAAM,CAAE,IAAGG,KAAM,IAAGD,OAAQ,EAAC,CAAC;IACpE;IAEA,OAAO,CAACf,gBAAgB,CAAC;EAC3B,CAAC;EAEDC,sBAAsBA,CAAChC,QAA8B,EAAE;IACrD,IAAIgD,WAAW,GAAG,EAAE;IAEpB,IAAI,CAAChD,QAAQ,EAAE;MACb,OAAOgD,WAAW;IACpB;IAEA,IAAIhD,QAAQ,EAAEM,QAAQ,EAAE;MACtB0C,WAAW,GAAGhD,QAAQ,EAAEM,QAAQ,EAAE2C,IAAI,IAAI,GAAG;IAC/C,CAAC,MAAM,IAAIjD,QAAQ,EAAEmB,aAAa,EAAE;MAClC6B,WAAW,GAAG,IAAI,CAACE,8BAA8B,CAAClD,QAAQ,CAAC,IAAI,GAAG;IACpE;IAEA,OAAOgD,WAAW;EACpB,CAAC;EAEDE,8BAA8BA,CAAClD,QAA8B,EAAE;IAC7D,IAAI,CAACA,QAAQ,EAAE;MACb,OAAO,IAAI;IACb;IAEA,MAAMmD,QAAQ,GAAG,IAAI,CAACC,qBAAqB,CAACpD,QAAQ,EAAEmD,QAAQ,CAACE,OAAO,CAAC;IACvE,MAAML,WAAW,GAAG,CAACG,QAAQ,EAAEnD,QAAQ,EAAEmB,aAAa,EAAEmC,MAAM,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC;IAEhF,OAAOR,WAAW;EACpB,CAAC;EAEDI,qBAAqBA,CAACK,KAAyB,EAAE;IAC/C,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,IAAI;IACb;IAEA,MAAMC,WAAW,GAAGC,UAAU,CAACF,KAAK,CAAC;IAErC,OAAOC,WAAW,CAACE,OAAO,CAACF,WAAW,GAAG,CAAC,GAAG5E,iBAAiB,GAAGC,uBAAuB,CAAC;EAC3F;AACF,CAAC"}
1
+ {"version":3,"names":["DateUtil","UiUtil","FLOAT_FIXED_VALUE","SMALL_FLOAT_FIXED_VALUE","plusTypes","minusTypes","TransactionUtil","getTransactionGroupTitle","year","month","currentYear","getYear","toString","monthName","getMonth","parseInt","isCurrentYear","groupTitle","getTransactionImages","transfers","isAllNFT","Boolean","every","item","nft_info","haveMultipleTransfers","length","haveTwoTransfers","first","find","t","direction","second","getTransactionImage","map","transfer","type","getTransactionTransferTokenType","url","getTransactionImageURL","imageURL","isNFT","isFungible","fungible_info","content","preview","icon","undefined","getTransactionDescriptions","transaction","metadata","operationType","getTradeDescriptions","getTransferDescription","formatSingleTransfer","status","isSendReceiveTransaction","hasFungibleTransfers","getSendReceiveDescriptions","truncateAddress","sentFrom","sentTo","address","getTruncateString","string","charsStart","charsEnd","truncate","prefix","getPrefix","description","concat","isSend","arrow","includes","outTransfer","inTransfer","name","getFungibleTransferDescription","quantity","getQuantityFixedValue","numeric","symbol","join","trim","value","parsedValue","parseFloat","toFixed"],"sourceRoot":"../../../src","sources":["utils/TransactionUtil.ts"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { TransactionTransfer, Transaction, TransactionImage } from '@reown/appkit-common-react-native';
1
+ import type { TransactionTransfer, Transaction, TransactionImage, TransactionMetadata } from '@reown/appkit-common-react-native';
2
+ import type { TransactionType } from './TypesUtil';
2
3
  export declare const TransactionUtil: {
3
4
  getTransactionGroupTitle(year: string, month: string): string;
4
5
  getTransactionImages(transfers: TransactionTransfer[]): TransactionImage[];
@@ -6,6 +7,13 @@ export declare const TransactionUtil: {
6
7
  getTransactionImageURL(transfer: TransactionTransfer | undefined): string | undefined;
7
8
  getTransactionTransferTokenType(transfer?: TransactionTransfer): 'FUNGIBLE' | 'NFT' | undefined;
8
9
  getTransactionDescriptions(transaction: Transaction): string[];
10
+ isSendReceiveTransaction(type: TransactionType): boolean;
11
+ hasFungibleTransfers(transfers: TransactionTransfer[]): boolean;
12
+ getSendReceiveDescriptions(metadata: TransactionMetadata): string[];
13
+ truncateAddress(address: string): string;
14
+ formatSingleTransfer(transfer: TransactionTransfer, type: TransactionType, metadata: TransactionMetadata): string;
15
+ getPrefix(type: TransactionType): string;
16
+ getTradeDescriptions(transfers: TransactionTransfer[]): string[];
9
17
  getTransferDescription(transfer?: TransactionTransfer): string;
10
18
  getFungibleTransferDescription(transfer?: TransactionTransfer): string | null;
11
19
  getQuantityFixedValue(value: string | undefined): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/TransactionUtil.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAU3C,eAAO,MAAM,eAAe;mCACK,MAAM,SAAS,MAAM;oCASpB,mBAAmB,EAAE,GAAG,gBAAgB,EAAE;mCAiB3C,mBAAmB,GAAG,gBAAgB;qCAOpC,mBAAmB,GAAG,SAAS;+CAcrB,mBAAmB,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS;4CAUvD,WAAW;sCA+DjB,mBAAmB;8CAgBX,mBAAmB;iCAWhC,MAAM,GAAG,SAAS;CAShD,CAAC"}
1
+ {"version":3,"file":"TransactionUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/TransactionUtil.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,eAAO,MAAM,eAAe;mCACK,MAAM,SAAS,MAAM;oCASpB,mBAAmB,EAAE,GAAG,gBAAgB,EAAE;mCAmB3C,mBAAmB,GAAG,gBAAgB;qCAOpC,mBAAmB,GAAG,SAAS;+CAcrB,mBAAmB,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS;4CAUvD,WAAW;mCA0BpB,eAAe,GAAG,OAAO;oCAIxB,mBAAmB,EAAE,GAAG,OAAO;yCAI1B,mBAAmB,GAAG,MAAM,EAAE;6BAI1C,MAAM,GAAG,MAAM;mCAU5B,mBAAmB,QACvB,eAAe,YACX,mBAAmB,GAC5B,MAAM;oBAeO,eAAe,GAAG,MAAM;oCAOR,mBAAmB,EAAE,GAAG,MAAM,EAAE;sCAO9B,mBAAmB;8CAgBX,mBAAmB;iCAWhC,MAAM,GAAG,SAAS;CAShD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-ui-react-native",
3
- "version": "0.0.0-feat-swaps-20241217153851",
3
+ "version": "0.0.0-feat-swaps-20250115141325",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "types": "lib/typescript/index.d.ts",
6
6
  "module": "lib/module/index.js",
@@ -2,7 +2,8 @@ import { DateUtil } from '@reown/appkit-common-react-native';
2
2
  import type {
3
3
  TransactionTransfer,
4
4
  Transaction,
5
- TransactionImage
5
+ TransactionImage,
6
+ TransactionMetadata
6
7
  } from '@reown/appkit-common-react-native';
7
8
  import type { TransactionType } from './TypesUtil';
8
9
  import { UiUtil } from './UiUtil';
@@ -24,20 +25,22 @@ export const TransactionUtil = {
24
25
  },
25
26
 
26
27
  getTransactionImages(transfers: TransactionTransfer[]): TransactionImage[] {
27
- const [transfer, secondTransfer] = transfers;
28
- const isAllNFT = Boolean(transfer) && transfers?.every(item => Boolean(item.nft_info));
28
+ const isAllNFT = Boolean(transfers[0]) && transfers?.every(item => Boolean(item.nft_info));
29
29
  const haveMultipleTransfers = transfers?.length > 1;
30
30
  const haveTwoTransfers = transfers?.length === 2;
31
31
 
32
32
  if (haveTwoTransfers && !isAllNFT) {
33
- return [this.getTransactionImage(transfer), this.getTransactionImage(secondTransfer)];
33
+ const first = transfers.find(t => t?.direction === 'out');
34
+ const second = transfers.find(t => t?.direction === 'in');
35
+
36
+ return [this.getTransactionImage(first), this.getTransactionImage(second)];
34
37
  }
35
38
 
36
39
  if (haveMultipleTransfers) {
37
40
  return transfers.map(item => this.getTransactionImage(item));
38
41
  }
39
42
 
40
- return [this.getTransactionImage(transfer)];
43
+ return [this.getTransactionImage(transfers[0])];
41
44
  },
42
45
 
43
46
  getTransactionImage(transfer?: TransactionTransfer): TransactionImage {
@@ -72,66 +75,83 @@ export const TransactionUtil = {
72
75
  },
73
76
 
74
77
  getTransactionDescriptions(transaction: Transaction) {
75
- const type = transaction?.metadata?.operationType as TransactionType;
78
+ if (!transaction.metadata) {
79
+ return ['Unknown transaction'];
80
+ }
76
81
 
82
+ const type = transaction?.metadata?.operationType as TransactionType;
77
83
  const transfers = transaction?.transfers;
78
- const haveTransfer = transaction?.transfers?.length > 0;
79
- const haveMultipleTransfers = transaction?.transfers?.length > 1;
80
- const isSendOrReceive = type === 'send' || type === 'receive';
81
- const isFungible =
82
- haveTransfer && transfers?.every(transfer => Boolean(transfer?.fungible_info));
83
- const [firstTransfer, secondTransfer] = transfers;
84
-
85
- let firstDescription = this.getTransferDescription(firstTransfer);
86
- let secondDescription = this.getTransferDescription(secondTransfer);
87
-
88
- if (!haveTransfer) {
89
- if (isSendOrReceive && isFungible) {
90
- firstDescription = UiUtil.getTruncateString({
91
- string: transaction?.metadata.sentFrom,
92
- charsStart: 4,
93
- charsEnd: 6,
94
- truncate: 'middle'
95
- });
96
- secondDescription = UiUtil.getTruncateString({
97
- string: transaction?.metadata.sentTo,
98
- charsStart: 4,
99
- charsEnd: 6,
100
- truncate: 'middle'
101
- });
102
-
103
- return [firstDescription, secondDescription];
104
- }
105
-
106
- return [transaction.metadata.status];
84
+
85
+ // Early return for trade transactions
86
+ if (type === 'trade') {
87
+ return this.getTradeDescriptions(transfers);
107
88
  }
108
89
 
109
- if (haveMultipleTransfers) {
110
- return transfers.map(item => this.getTransferDescription(item));
90
+ // Handle multiple transfers
91
+ if (transfers.length > 1) {
92
+ return transfers.map(transfer => this.getTransferDescription(transfer));
111
93
  }
112
94
 
113
- let prefix = '';
114
- if (plusTypes.includes(type)) {
115
- prefix = '+';
116
- } else if (minusTypes.includes(type)) {
117
- prefix = '-';
95
+ // Handle single transfer
96
+ if (transfers.length === 1) {
97
+ return [this.formatSingleTransfer(transfers[0]!, type, transaction.metadata)];
118
98
  }
119
99
 
120
- firstDescription = prefix.concat(firstDescription);
100
+ return [transaction.metadata.status];
101
+ },
102
+
103
+ isSendReceiveTransaction(type: TransactionType): boolean {
104
+ return type === 'send' || type === 'receive';
105
+ },
106
+
107
+ hasFungibleTransfers(transfers: TransactionTransfer[]): boolean {
108
+ return transfers.every(transfer => Boolean(transfer?.fungible_info));
109
+ },
110
+
111
+ getSendReceiveDescriptions(metadata: TransactionMetadata): string[] {
112
+ return [this.truncateAddress(metadata.sentFrom), this.truncateAddress(metadata.sentTo)];
113
+ },
114
+
115
+ truncateAddress(address: string): string {
116
+ return UiUtil.getTruncateString({
117
+ string: address,
118
+ charsStart: 4,
119
+ charsEnd: 6,
120
+ truncate: 'middle'
121
+ });
122
+ },
121
123
 
122
- if (isSendOrReceive) {
124
+ formatSingleTransfer(
125
+ transfer: TransactionTransfer,
126
+ type: TransactionType,
127
+ metadata: TransactionMetadata
128
+ ): string {
129
+ const prefix = this.getPrefix(type);
130
+ let description = prefix.concat(this.getTransferDescription(transfer));
131
+
132
+ if (this.isSendReceiveTransaction(type)) {
123
133
  const isSend = type === 'send';
124
- const address = UiUtil.getTruncateString({
125
- string: isSend ? transaction.metadata.sentTo : transaction.metadata.sentFrom,
126
- charsStart: 4,
127
- charsEnd: 4,
128
- truncate: 'middle'
129
- });
134
+
135
+ const address = this.truncateAddress(isSend ? metadata.sentTo : metadata.sentFrom);
130
136
  const arrow = isSend ? '→' : '←';
131
- firstDescription = firstDescription.concat(` ${arrow} ${address}`);
137
+ description = description.concat(` ${arrow} ${address}`);
132
138
  }
133
139
 
134
- return [firstDescription];
140
+ return description;
141
+ },
142
+
143
+ getPrefix(type: TransactionType): string {
144
+ if (plusTypes.includes(type)) return '+';
145
+ if (minusTypes.includes(type)) return '-';
146
+
147
+ return '';
148
+ },
149
+
150
+ getTradeDescriptions(transfers: TransactionTransfer[]): string[] {
151
+ const outTransfer = transfers.find(transfer => transfer?.direction === 'out');
152
+ const inTransfer = transfers.find(transfer => transfer?.direction === 'in');
153
+
154
+ return [this.getTransferDescription(outTransfer), this.getTransferDescription(inTransfer)];
135
155
  },
136
156
 
137
157
  getTransferDescription(transfer?: TransactionTransfer) {