@reown/appkit-ui-react-native 0.0.0-feat-swaps-20241217153851 → 0.0.0-feat-swaps-20250114204346
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.
- package/lib/commonjs/utils/TransactionUtil.js +56 -45
- package/lib/commonjs/utils/TransactionUtil.js.map +1 -1
- package/lib/module/utils/TransactionUtil.js +56 -45
- package/lib/module/utils/TransactionUtil.js.map +1 -1
- package/lib/typescript/utils/TransactionUtil.d.ts +9 -1
- package/lib/typescript/utils/TransactionUtil.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/TransactionUtil.ts +72 -52
|
@@ -20,17 +20,18 @@ const TransactionUtil = exports.TransactionUtil = {
|
|
|
20
20
|
return groupTitle;
|
|
21
21
|
},
|
|
22
22
|
getTransactionImages(transfers) {
|
|
23
|
-
const [
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
89
|
-
|
|
72
|
+
|
|
73
|
+
// Handle multiple transfers
|
|
74
|
+
if (transfers.length > 1) {
|
|
75
|
+
return transfers.map(transfer => this.getTransferDescription(transfer));
|
|
90
76
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
prefix = '-';
|
|
77
|
+
|
|
78
|
+
// Handle single transfer
|
|
79
|
+
if (transfers.length === 1) {
|
|
80
|
+
return [this.formatSingleTransfer(transfers[0], type, transaction.metadata)];
|
|
96
81
|
}
|
|
97
|
-
|
|
98
|
-
|
|
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 =
|
|
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
|
-
|
|
108
|
+
description = description.concat(` ${arrow} ${address}`);
|
|
108
109
|
}
|
|
109
|
-
return
|
|
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","
|
|
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 [
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
84
|
-
|
|
67
|
+
|
|
68
|
+
// Handle multiple transfers
|
|
69
|
+
if (transfers.length > 1) {
|
|
70
|
+
return transfers.map(transfer => this.getTransferDescription(transfer));
|
|
85
71
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
prefix = '-';
|
|
72
|
+
|
|
73
|
+
// Handle single transfer
|
|
74
|
+
if (transfers.length === 1) {
|
|
75
|
+
return [this.formatSingleTransfer(transfers[0], type, transaction.metadata)];
|
|
91
76
|
}
|
|
92
|
-
|
|
93
|
-
|
|
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 =
|
|
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
|
-
|
|
103
|
+
description = description.concat(` ${arrow} ${address}`);
|
|
103
104
|
}
|
|
104
|
-
return
|
|
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","
|
|
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,
|
|
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
|
@@ -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 [
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
110
|
-
|
|
90
|
+
// Handle multiple transfers
|
|
91
|
+
if (transfers.length > 1) {
|
|
92
|
+
return transfers.map(transfer => this.getTransferDescription(transfer));
|
|
111
93
|
}
|
|
112
94
|
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
125
|
-
|
|
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
|
-
|
|
137
|
+
description = description.concat(` ${arrow} ${address}`);
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
return
|
|
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) {
|