squarefi-bff-api-module 1.32.1 → 1.32.2
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/dist/api/auth.d.ts +29 -0
- package/dist/api/auth.js +59 -0
- package/dist/api/bank-data.d.ts +4 -0
- package/dist/api/bank-data.js +6 -0
- package/dist/api/counterparties.d.ts +14 -0
- package/dist/api/counterparties.js +16 -0
- package/dist/api/developer.d.ts +12 -0
- package/dist/api/developer.js +12 -0
- package/dist/api/exchange.d.ts +14 -0
- package/dist/api/exchange.js +20 -0
- package/dist/api/frontend.d.ts +11 -0
- package/dist/api/frontend.js +11 -0
- package/dist/api/index.d.ts +38 -0
- package/dist/api/index.js +36 -0
- package/dist/api/issuing.d.ts +64 -0
- package/dist/api/issuing.js +140 -0
- package/dist/api/kyc.d.ts +21 -0
- package/dist/api/kyc.js +21 -0
- package/dist/api/list.d.ts +16 -0
- package/dist/api/list.js +16 -0
- package/dist/api/orders.d.ts +49 -0
- package/dist/api/orders.js +84 -0
- package/dist/api/persona.d.ts +7 -0
- package/dist/api/persona.js +7 -0
- package/dist/api/storage.d.ts +8 -0
- package/dist/api/storage.js +16 -0
- package/dist/api/tenants.d.ts +6 -0
- package/dist/api/tenants.js +6 -0
- package/dist/api/totp.d.ts +17 -0
- package/dist/api/totp.js +45 -0
- package/{src/api/types/autogen/apiV2.types.ts → dist/api/types/autogen/apiV2.types.d.ts} +0 -1
- package/dist/api/types/autogen/apiV2.types.js +5 -0
- package/dist/api/types/types.d.ts +2258 -0
- package/dist/api/types/types.js +1 -0
- package/dist/api/user.d.ts +18 -0
- package/dist/api/user.js +18 -0
- package/dist/api/virtual-accounts.d.ts +9 -0
- package/dist/api/virtual-accounts.js +9 -0
- package/dist/api/wallets.d.ts +24 -0
- package/dist/api/wallets.js +30 -0
- package/dist/constants.d.ts +303 -0
- package/dist/constants.js +332 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/useCalc.d.ts +25 -0
- package/dist/hooks/useCalc.js +115 -0
- package/dist/hooks/useFileUpload.d.ts +49 -0
- package/dist/hooks/useFileUpload.js +100 -0
- package/dist/hooks/useSupabaseSubscription/config.d.ts +2 -0
- package/dist/hooks/useSupabaseSubscription/config.js +5 -0
- package/dist/hooks/useSupabaseSubscription/index.js +2 -0
- package/dist/hooks/useSupabaseSubscription/specialized.d.ts +5 -0
- package/{src/hooks/useSupabaseSubscription/specialized.ts → dist/hooks/useSupabaseSubscription/specialized.js} +2 -5
- package/dist/hooks/useSupabaseSubscription/types.d.ts +16 -0
- package/dist/hooks/useSupabaseSubscription/types.js +1 -0
- package/dist/hooks/useSupabaseSubscription/useSupabaseSubscription.d.ts +5 -0
- package/dist/hooks/useSupabaseSubscription/useSupabaseSubscription.js +37 -0
- package/dist/index.d.ts +7 -0
- package/dist/utils/apiClientFactory.d.ts +31 -0
- package/dist/utils/apiClientFactory.js +138 -0
- package/dist/utils/converters.d.ts +1 -0
- package/dist/utils/converters.js +1 -0
- package/dist/utils/encrypt.d.ts +10 -0
- package/dist/utils/encrypt.js +77 -0
- package/dist/utils/fileStorage.d.ts +120 -0
- package/dist/utils/fileStorage.js +292 -0
- package/dist/utils/storage.d.ts +3 -0
- package/dist/utils/storage.js +24 -0
- package/dist/utils/supabase.d.ts +1 -0
- package/dist/utils/supabase.js +12 -0
- package/dist/utils/tokensFactory.d.ts +12 -0
- package/dist/utils/tokensFactory.js +42 -0
- package/package.json +4 -1
- package/.env.example +0 -1
- package/.husky/pre-commit +0 -2
- package/.prettierignore +0 -6
- package/.prettierrc +0 -7
- package/CHANGELOG.md +0 -1415
- package/FIXED_RLS_ERROR.md +0 -146
- package/QUICK_TEST.md +0 -127
- package/STORAGE_MODULE_SUMMARY.md +0 -228
- package/TEST_INSTRUCTIONS.md +0 -122
- package/docs/AUTH_TOKEN_USAGE.md +0 -290
- package/docs/BACKEND_SERVICE_URL.md +0 -334
- package/docs/FRONTEND_STORAGE_GUIDE.md +0 -529
- package/docs/STORAGE_MODULE.md +0 -490
- package/docs/STORAGE_QUICK_START.md +0 -76
- package/scripts/generate-openapi-types.ts +0 -41
- package/scripts/supabase-storage-setup.sql +0 -223
- package/src/api/auth.ts +0 -78
- package/src/api/bank-data.ts +0 -11
- package/src/api/counterparties.ts +0 -73
- package/src/api/developer.ts +0 -20
- package/src/api/exchange.ts +0 -44
- package/src/api/frontend.ts +0 -20
- package/src/api/index.ts +0 -57
- package/src/api/issuing.ts +0 -214
- package/src/api/kyc.ts +0 -41
- package/src/api/list.ts +0 -26
- package/src/api/orders.ts +0 -255
- package/src/api/persona.ts +0 -16
- package/src/api/storage.ts +0 -24
- package/src/api/tenants.ts +0 -8
- package/src/api/totp.ts +0 -51
- package/src/api/types/types.ts +0 -2820
- package/src/api/user.ts +0 -27
- package/src/api/virtual-accounts.ts +0 -15
- package/src/api/wallets.ts +0 -65
- package/src/constants.ts +0 -343
- package/src/hooks/useCalc.ts +0 -181
- package/src/hooks/useFileUpload.ts +0 -129
- package/src/hooks/useSupabaseSubscription/config.ts +0 -7
- package/src/hooks/useSupabaseSubscription/types.ts +0 -18
- package/src/hooks/useSupabaseSubscription/useSupabaseSubscription.ts +0 -53
- package/src/utils/apiClientFactory.ts +0 -194
- package/src/utils/converters.ts +0 -1
- package/src/utils/encrypt.ts +0 -96
- package/src/utils/fileStorage.ts +0 -353
- package/src/utils/storage.ts +0 -29
- package/src/utils/supabase.ts +0 -16
- package/src/utils/tokensFactory.ts +0 -59
- package/tsconfig.json +0 -15
- package/types.d.ts +0 -11
- /package/{src/hooks/index.ts → dist/hooks/index.d.ts} +0 -0
- /package/{src/hooks/useSupabaseSubscription/index.ts → dist/hooks/useSupabaseSubscription/index.d.ts} +0 -0
- /package/{src/index.ts → dist/index.js} +0 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
export const falsyValues = ['false', '0', '', 'FALSE', false, null, undefined, NaN, 0];
|
|
2
|
+
export var AppEnviroment;
|
|
3
|
+
(function (AppEnviroment) {
|
|
4
|
+
AppEnviroment["WEB"] = "web";
|
|
5
|
+
AppEnviroment["TELEGRAM"] = "telegram";
|
|
6
|
+
})(AppEnviroment || (AppEnviroment = {}));
|
|
7
|
+
export var CardFormFactor;
|
|
8
|
+
(function (CardFormFactor) {
|
|
9
|
+
CardFormFactor["VIRTUAL"] = "VIRTUAL";
|
|
10
|
+
CardFormFactor["PHYSICAL"] = "PHYSICAL";
|
|
11
|
+
})(CardFormFactor || (CardFormFactor = {}));
|
|
12
|
+
export var CardType;
|
|
13
|
+
(function (CardType) {
|
|
14
|
+
CardType["CREDIT"] = "CREDIT";
|
|
15
|
+
CardType["DEBIT"] = "DEBIT";
|
|
16
|
+
})(CardType || (CardType = {}));
|
|
17
|
+
export var CardTransactionType;
|
|
18
|
+
(function (CardTransactionType) {
|
|
19
|
+
CardTransactionType["AUTHORIZATION"] = "AUTHORIZATION";
|
|
20
|
+
CardTransactionType["CLEARING"] = "CLEARING";
|
|
21
|
+
CardTransactionType["REFUND"] = "REFUND";
|
|
22
|
+
CardTransactionType["REVERSAL"] = "REVERSAL";
|
|
23
|
+
CardTransactionType["ORIGINAL_CREDIT"] = "ORIGINAL_CREDIT";
|
|
24
|
+
CardTransactionType["FEE"] = "FEE";
|
|
25
|
+
CardTransactionType["DEPOSIT"] = "DEPOSIT";
|
|
26
|
+
CardTransactionType["WITHDRAWAL"] = "WITHDRAWAL";
|
|
27
|
+
CardTransactionType["PAYMENT"] = "PAYMENT";
|
|
28
|
+
CardTransactionType["PURCHASE"] = "PURCHASE";
|
|
29
|
+
})(CardTransactionType || (CardTransactionType = {}));
|
|
30
|
+
export var WalletTransactionType;
|
|
31
|
+
(function (WalletTransactionType) {
|
|
32
|
+
WalletTransactionType["DEPOSIT"] = "deposit";
|
|
33
|
+
WalletTransactionType["WITHDRAWAL"] = "withdrawal";
|
|
34
|
+
})(WalletTransactionType || (WalletTransactionType = {}));
|
|
35
|
+
export var WalletTransactionMethod;
|
|
36
|
+
(function (WalletTransactionMethod) {
|
|
37
|
+
WalletTransactionMethod["P2P"] = "p2p";
|
|
38
|
+
WalletTransactionMethod["CRYPTO"] = "crypto";
|
|
39
|
+
WalletTransactionMethod["BANK_TRANSFER"] = "bank_transfer";
|
|
40
|
+
WalletTransactionMethod["EXCHANGE"] = "exchange";
|
|
41
|
+
WalletTransactionMethod["SBP"] = "sbp";
|
|
42
|
+
})(WalletTransactionMethod || (WalletTransactionMethod = {}));
|
|
43
|
+
export var WalletTransactionStatus;
|
|
44
|
+
(function (WalletTransactionStatus) {
|
|
45
|
+
WalletTransactionStatus["COMPLETE"] = "complete";
|
|
46
|
+
WalletTransactionStatus["PENDING"] = "pending";
|
|
47
|
+
WalletTransactionStatus["CANCELED"] = "canceled";
|
|
48
|
+
WalletTransactionStatus["FAILED"] = "failed";
|
|
49
|
+
WalletTransactionStatus["PROCESSING"] = "processing";
|
|
50
|
+
WalletTransactionStatus["NEW"] = "new";
|
|
51
|
+
})(WalletTransactionStatus || (WalletTransactionStatus = {}));
|
|
52
|
+
export var OrderPaymentMethod;
|
|
53
|
+
(function (OrderPaymentMethod) {
|
|
54
|
+
OrderPaymentMethod["ACH"] = "ACH";
|
|
55
|
+
OrderPaymentMethod["SEPA"] = "SEPA";
|
|
56
|
+
OrderPaymentMethod["SWIFT"] = "SWIFT";
|
|
57
|
+
OrderPaymentMethod["DOMESTIC_WIRE"] = "DOMESTIC_WIRE";
|
|
58
|
+
OrderPaymentMethod["CRYPTO_EXTERNAL"] = "CRYPTO_EXTERNAL";
|
|
59
|
+
OrderPaymentMethod["CRYPTO_INTERNAL"] = "CRYPTO_INTERNAL";
|
|
60
|
+
OrderPaymentMethod["CHAPS"] = "CHAPS";
|
|
61
|
+
OrderPaymentMethod["FPS"] = "FPS";
|
|
62
|
+
})(OrderPaymentMethod || (OrderPaymentMethod = {}));
|
|
63
|
+
export var OrderType;
|
|
64
|
+
(function (OrderType) {
|
|
65
|
+
// when extend do not forget to add new order type to the enum WalletTransactionRecordType
|
|
66
|
+
OrderType["DEPOSIT_ISSUING_SA_CRYPTO_EXT"] = "DEPOSIT_ISSUING_SA_CRYPTO_EXT";
|
|
67
|
+
OrderType["DEPOSIT_ISSUING_SA_SEPA_EXT"] = "DEPOSIT_ISSUING_SA_SEPA_EXT";
|
|
68
|
+
OrderType["DEPOSIT_CRYPTO"] = "DEPOSIT_CRYPTO";
|
|
69
|
+
OrderType["DEPOSIT_FIAT_SEPA"] = "DEPOSIT_FIAT_SEPA";
|
|
70
|
+
OrderType["DEPOSIT_FIAT_SWIFT"] = "DEPOSIT_FIAT_SWIFT";
|
|
71
|
+
OrderType["EXCHANGE_CRYPTO_INTERNAL"] = "EXCHANGE_CRYPTO_INTERNAL";
|
|
72
|
+
OrderType["EXCHANGE_OMNI"] = "EXCHANGE_OMNI";
|
|
73
|
+
OrderType["TRANSFER_CARD_PREPAID"] = "TRANSFER_CARD_PREPAID";
|
|
74
|
+
OrderType["CARD_ISSUING_FEE"] = "CARD_ISSUING_FEE";
|
|
75
|
+
OrderType["TRANSFER_CARD_SUBACCOUNT"] = "TRANSFER_CARD_SUBACCOUNT";
|
|
76
|
+
OrderType["TRANSFER_CARD_WHOLESALE"] = "TRANSFER_CARD_WHOLESALE";
|
|
77
|
+
OrderType["TRANSFER_INTERNAL"] = "TRANSFER_INTERNAL";
|
|
78
|
+
OrderType["WITHDRAWAL_CRYPTO"] = "WITHDRAWAL_CRYPTO";
|
|
79
|
+
OrderType["WITHDRAWAL_FIAT_SEPA"] = "WITHDRAWAL_FIAT_SEPA";
|
|
80
|
+
OrderType["HIFI_WIRE_ONRAMP"] = "HIFI_WIRE_ONRAMP";
|
|
81
|
+
OrderType["HIFI_WIRE_OFFRAMP"] = "HIFI_WIRE_OFFRAMP";
|
|
82
|
+
OrderType["HIFI_WIRE_DEPOSIT"] = "HIFI_WIRE_DEPOSIT";
|
|
83
|
+
OrderType["HIFI_WIRE_WITHDRAWAL"] = "HIFI_WIRE_WITHDRAWAL";
|
|
84
|
+
OrderType["HIFI_ACH_ONRAMP"] = "HIFI_ACH_ONRAMP";
|
|
85
|
+
OrderType["HIFI_ACH_OFFRAMP"] = "HIFI_ACH_OFFRAMP";
|
|
86
|
+
OrderType["HIFI_ACH_DEPOSIT"] = "HIFI_ACH_DEPOSIT";
|
|
87
|
+
OrderType["HIFI_ACH_WITHDRAWAL"] = "HIFI_ACH_WITHDRAWAL";
|
|
88
|
+
OrderType["HIFI_SEPA_ONRAMP"] = "HIFI_SEPA_ONRAMP";
|
|
89
|
+
OrderType["HIFI_SEPA_OFFRAMP"] = "HIFI_SEPA_OFFRAMP";
|
|
90
|
+
OrderType["HIFI_SEPA_DEPOSIT"] = "HIFI_SEPA_DEPOSIT";
|
|
91
|
+
OrderType["HIFI_SEPA_WITHDRAWAL"] = "HIFI_SEPA_WITHDRAWAL";
|
|
92
|
+
OrderType["HIFI_CRYPTO_TRANSFER"] = "HIFI_CRYPTO_TRANSFER";
|
|
93
|
+
OrderType["HIFI_CRYPTO_WITHDRAWAL"] = "HIFI_CRYPTO_WITHDRAWAL";
|
|
94
|
+
OrderType["HIFI_CRYPTO_DEPOSIT"] = "HIFI_CRYPTO_DEPOSIT";
|
|
95
|
+
OrderType["OMNIBUS_CRYPTO_TRANSFER"] = "OMNIBUS_CRYPTO_TRANSFER";
|
|
96
|
+
OrderType["RN_CARDS_OFFRAMP"] = "RN_CARDS_OFFRAMP";
|
|
97
|
+
OrderType["TBD_SWIFT_WITHDRAWAL"] = "TBD_SWIFT_WITHDRAWAL";
|
|
98
|
+
OrderType["SEGREGATED_CRYPTO_TRANSFER"] = "SEGREGATED_CRYPTO_TRANSFER";
|
|
99
|
+
OrderType["L2F_ACH_ONRAMP"] = "L2F_ACH_ONRAMP";
|
|
100
|
+
OrderType["L2F_ACH_OFFRAMP"] = "L2F_ACH_OFFRAMP";
|
|
101
|
+
OrderType["L2F_ACH_DEPOSIT"] = "L2F_ACH_DEPOSIT";
|
|
102
|
+
OrderType["L2F_ACH_WITHDRAWAL"] = "L2F_ACH_WITHDRAWAL";
|
|
103
|
+
OrderType["L2F_WIRE_ONRAMP"] = "L2F_WIRE_ONRAMP";
|
|
104
|
+
OrderType["L2F_WIRE_OFFRAMP"] = "L2F_WIRE_OFFRAMP";
|
|
105
|
+
OrderType["L2F_WIRE_DEPOSIT"] = "L2F_WIRE_DEPOSIT";
|
|
106
|
+
OrderType["L2F_WIRE_WITHDRAWAL"] = "L2F_WIRE_WITHDRAWAL";
|
|
107
|
+
OrderType["L2F_SWIFT_ONRAMP"] = "L2F_SWIFT_ONRAMP";
|
|
108
|
+
OrderType["L2F_SWIFT_OFFRAMP"] = "L2F_SWIFT_OFFRAMP";
|
|
109
|
+
OrderType["L2F_SWIFT_DEPOSIT"] = "L2F_SWIFT_DEPOSIT";
|
|
110
|
+
OrderType["L2F_SWIFT_WITHDRAWAL"] = "L2F_SWIFT_WITHDRAWAL";
|
|
111
|
+
OrderType["L2F_SEPA_ONRAMP"] = "L2F_SEPA_ONRAMP";
|
|
112
|
+
OrderType["L2F_SEPA_OFFRAMP"] = "L2F_SEPA_OFFRAMP";
|
|
113
|
+
OrderType["L2F_SEPA_DEPOSIT"] = "L2F_SEPA_DEPOSIT";
|
|
114
|
+
OrderType["L2F_SEPA_WITHDRAWAL"] = "L2F_SEPA_WITHDRAWAL";
|
|
115
|
+
OrderType["L2F_CRYPTO_WITHDRAWAL"] = "L2F_CRYPTO_WITHDRAWAL";
|
|
116
|
+
OrderType["L2F_CRYPTO_DEPOSIT"] = "L2F_CRYPTO_DEPOSIT";
|
|
117
|
+
OrderType["OMNIBUS_CRYPTO_WITHDRAWAL"] = "OMNIBUS_CRYPTO_WITHDRAWAL";
|
|
118
|
+
OrderType["WITHDRAW_CARD_PREPAID"] = "WITHDRAW_CARD_PREPAID";
|
|
119
|
+
OrderType["WITHDRAW_CARD_SUBACCOUNT"] = "WITHDRAW_CARD_SUBACCOUNT";
|
|
120
|
+
})(OrderType || (OrderType = {}));
|
|
121
|
+
export var WalletTransactionRecordType;
|
|
122
|
+
(function (WalletTransactionRecordType) {
|
|
123
|
+
WalletTransactionRecordType["CARD_PROVIDER_DEPOSIT"] = "CARD_PROVIDER_DEPOSIT";
|
|
124
|
+
WalletTransactionRecordType["CARD_PROVIDER_REFUND"] = "CARD_PROVIDER_REFUND";
|
|
125
|
+
WalletTransactionRecordType["DEPOSIT"] = "DEPOSIT";
|
|
126
|
+
WalletTransactionRecordType["DEPOSIT_CRYPTO_EXTERNAL"] = "DEPOSIT_CRYPTO_EXTERNAL";
|
|
127
|
+
WalletTransactionRecordType["DEPOSIT_CRYPTO_INTERNAL"] = "DEPOSIT_CRYPTO_INTERNAL";
|
|
128
|
+
WalletTransactionRecordType["DEPOSIT_INTERNAL"] = "DEPOSIT_INTERNAL";
|
|
129
|
+
WalletTransactionRecordType["DEPOSIT_MANUAL"] = "DEPOSIT_MANUAL";
|
|
130
|
+
WalletTransactionRecordType["EXCHANGE_CRYPTO_INTERNAL"] = "EXCHANGE_CRYPTO_INTERNAL";
|
|
131
|
+
WalletTransactionRecordType["EXCHANGE_OMNI"] = "EXCHANGE_OMNI";
|
|
132
|
+
WalletTransactionRecordType["EXT_EXCHANGE"] = "EXT_EXCHANGE";
|
|
133
|
+
WalletTransactionRecordType["FEE"] = "FEE";
|
|
134
|
+
WalletTransactionRecordType["NETWORK_FEE"] = "NETWORK_FEE";
|
|
135
|
+
WalletTransactionRecordType["OFFRAMP_ACHWIRE"] = "OFFRAMP_ACHWIRE";
|
|
136
|
+
WalletTransactionRecordType["OFFRAMP_SEPA"] = "OFFRAMP_SEPA";
|
|
137
|
+
WalletTransactionRecordType["OMNIBUS_CRYPTO_TRANSFER"] = "OMNIBUS_CRYPTO_TRANSFER";
|
|
138
|
+
WalletTransactionRecordType["ONRAMP_ACHWIRE"] = "ONRAMP_ACHWIRE";
|
|
139
|
+
WalletTransactionRecordType["ONRAMP_SEPA"] = "ONRAMP_SEPA";
|
|
140
|
+
WalletTransactionRecordType["REFUND"] = "REFUND";
|
|
141
|
+
WalletTransactionRecordType["RN_CARDS_OFFRAMP"] = "RN_CARDS_OFFRAMP";
|
|
142
|
+
WalletTransactionRecordType["TRANSFER_CARD_PREPAID"] = "TRANSFER_CARD_PREPAID";
|
|
143
|
+
WalletTransactionRecordType["TRANSFER_CARD_SUBACCOUNT"] = "TRANSFER_CARD_SUBACCOUNT";
|
|
144
|
+
WalletTransactionRecordType["TRANSFER_CARD_WHOLESALE"] = "TRANSFER_CARD_WHOLESALE";
|
|
145
|
+
WalletTransactionRecordType["TRANSFER_INTERNAL"] = "TRANSFER_INTERNAL";
|
|
146
|
+
WalletTransactionRecordType["SEGREGATED_CRYPTO_TRANSFER"] = "SEGREGATED_CRYPTO_TRANSFER";
|
|
147
|
+
WalletTransactionRecordType["WHOLESALE_CARD_DEPOSIT"] = "WHOLESALE_CARD_DEPOSIT";
|
|
148
|
+
WalletTransactionRecordType["WITHDRAWAL"] = "WITHDRAWAL";
|
|
149
|
+
WalletTransactionRecordType["WITHDRAWAL_CRYPTO_EXTERNAL"] = "WITHDRAWAL_CRYPTO_EXTERNAL";
|
|
150
|
+
WalletTransactionRecordType["WITHDRAWAL_CRYPTO_INTERNAL"] = "WITHDRAWAL_CRYPTO_INTERNAL";
|
|
151
|
+
WalletTransactionRecordType["WITHDRAWAL_INTERNAL"] = "WITHDRAWAL_INTERNAL";
|
|
152
|
+
WalletTransactionRecordType["WITHDRAW_CARD_PREPAID"] = "WITHDRAW_CARD_PREPAID";
|
|
153
|
+
WalletTransactionRecordType["WITHDRAW_CARD_SUBACCOUNT"] = "WITHDRAW_CARD_SUBACCOUNT";
|
|
154
|
+
WalletTransactionRecordType["L2F_ACH_ONRAMP"] = "L2F_ACH_ONRAMP";
|
|
155
|
+
WalletTransactionRecordType["L2F_ACH_OFFRAMP"] = "L2F_ACH_OFFRAMP";
|
|
156
|
+
WalletTransactionRecordType["L2F_ACH_DEPOSIT"] = "L2F_ACH_DEPOSIT";
|
|
157
|
+
WalletTransactionRecordType["L2F_ACH_WITHDRAWAL"] = "L2F_ACH_WITHDRAWAL";
|
|
158
|
+
WalletTransactionRecordType["L2F_WIRE_ONRAMP"] = "L2F_WIRE_ONRAMP";
|
|
159
|
+
WalletTransactionRecordType["L2F_WIRE_OFFRAMP"] = "L2F_WIRE_OFFRAMP";
|
|
160
|
+
WalletTransactionRecordType["L2F_WIRE_DEPOSIT"] = "L2F_WIRE_DEPOSIT";
|
|
161
|
+
WalletTransactionRecordType["L2F_WIRE_WITHDRAWAL"] = "L2F_WIRE_WITHDRAWAL";
|
|
162
|
+
WalletTransactionRecordType["L2F_SWIFT_ONRAMP"] = "L2F_SWIFT_ONRAMP";
|
|
163
|
+
WalletTransactionRecordType["L2F_SWIFT_OFFRAMP"] = "L2F_SWIFT_OFFRAMP";
|
|
164
|
+
WalletTransactionRecordType["L2F_SWIFT_DEPOSIT"] = "L2F_SWIFT_DEPOSIT";
|
|
165
|
+
WalletTransactionRecordType["L2F_SWIFT_WITHDRAWAL"] = "L2F_SWIFT_WITHDRAWAL";
|
|
166
|
+
WalletTransactionRecordType["L2F_SEPA_ONRAMP"] = "L2F_SEPA_ONRAMP";
|
|
167
|
+
WalletTransactionRecordType["L2F_SEPA_OFFRAMP"] = "L2F_SEPA_OFFRAMP";
|
|
168
|
+
WalletTransactionRecordType["L2F_SEPA_DEPOSIT"] = "L2F_SEPA_DEPOSIT";
|
|
169
|
+
WalletTransactionRecordType["L2F_SEPA_WITHDRAWAL"] = "L2F_SEPA_WITHDRAWAL";
|
|
170
|
+
WalletTransactionRecordType["L2F_CRYPTO_WITHDRAWAL"] = "L2F_CRYPTO_WITHDRAWAL";
|
|
171
|
+
WalletTransactionRecordType["L2F_CRYPTO_DEPOSIT"] = "L2F_CRYPTO_DEPOSIT";
|
|
172
|
+
WalletTransactionRecordType["HIFI_WIRE_ONRAMP"] = "HIFI_WIRE_ONRAMP";
|
|
173
|
+
WalletTransactionRecordType["HIFI_WIRE_OFFRAMP"] = "HIFI_WIRE_OFFRAMP";
|
|
174
|
+
WalletTransactionRecordType["HIFI_WIRE_DEPOSIT"] = "HIFI_WIRE_DEPOSIT";
|
|
175
|
+
WalletTransactionRecordType["HIFI_WIRE_WITHDRAWAL"] = "HIFI_WIRE_WITHDRAWAL";
|
|
176
|
+
WalletTransactionRecordType["HIFI_ACH_ONRAMP"] = "HIFI_ACH_ONRAMP";
|
|
177
|
+
WalletTransactionRecordType["HIFI_ACH_OFFRAMP"] = "HIFI_ACH_OFFRAMP";
|
|
178
|
+
WalletTransactionRecordType["HIFI_ACH_DEPOSIT"] = "HIFI_ACH_DEPOSIT";
|
|
179
|
+
WalletTransactionRecordType["HIFI_ACH_WITHDRAWAL"] = "HIFI_ACH_WITHDRAWAL";
|
|
180
|
+
WalletTransactionRecordType["HIFI_SEPA_ONRAMP"] = "HIFI_SEPA_ONRAMP";
|
|
181
|
+
WalletTransactionRecordType["HIFI_SEPA_OFFRAMP"] = "HIFI_SEPA_OFFRAMP";
|
|
182
|
+
WalletTransactionRecordType["HIFI_SEPA_DEPOSIT"] = "HIFI_SEPA_DEPOSIT";
|
|
183
|
+
WalletTransactionRecordType["HIFI_SEPA_WITHDRAWAL"] = "HIFI_SEPA_WITHDRAWAL";
|
|
184
|
+
WalletTransactionRecordType["HIFI_CRYPTO_TRANSFER"] = "HIFI_CRYPTO_TRANSFER";
|
|
185
|
+
WalletTransactionRecordType["HIFI_CRYPTO_WITHDRAWAL"] = "HIFI_CRYPTO_WITHDRAWAL";
|
|
186
|
+
WalletTransactionRecordType["HIFI_CRYPTO_DEPOSIT"] = "HIFI_CRYPTO_DEPOSIT";
|
|
187
|
+
})(WalletTransactionRecordType || (WalletTransactionRecordType = {}));
|
|
188
|
+
export var RequestStatus;
|
|
189
|
+
(function (RequestStatus) {
|
|
190
|
+
RequestStatus["NONE"] = "none";
|
|
191
|
+
RequestStatus["PENDING"] = "pending";
|
|
192
|
+
RequestStatus["FULLFILLED"] = "fulfilled";
|
|
193
|
+
RequestStatus["REJECTED"] = "rejected";
|
|
194
|
+
})(RequestStatus || (RequestStatus = {}));
|
|
195
|
+
export var RequestLoadingType;
|
|
196
|
+
(function (RequestLoadingType) {
|
|
197
|
+
RequestLoadingType["NORMAL"] = "normal";
|
|
198
|
+
RequestLoadingType["TRANSPARENT"] = "transparent";
|
|
199
|
+
})(RequestLoadingType || (RequestLoadingType = {}));
|
|
200
|
+
export var ResponseStatus;
|
|
201
|
+
(function (ResponseStatus) {
|
|
202
|
+
ResponseStatus[ResponseStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
|
|
203
|
+
ResponseStatus[ResponseStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
204
|
+
ResponseStatus[ResponseStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
205
|
+
ResponseStatus[ResponseStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
|
|
206
|
+
ResponseStatus[ResponseStatus["VERIFICATION_EXPIRED"] = 419] = "VERIFICATION_EXPIRED";
|
|
207
|
+
ResponseStatus[ResponseStatus["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY";
|
|
208
|
+
ResponseStatus[ResponseStatus["USER_BLOCKED"] = 423] = "USER_BLOCKED";
|
|
209
|
+
ResponseStatus[ResponseStatus["SERVER_ERROR"] = 500] = "SERVER_ERROR";
|
|
210
|
+
})(ResponseStatus || (ResponseStatus = {}));
|
|
211
|
+
export var WalletTypeValues;
|
|
212
|
+
(function (WalletTypeValues) {
|
|
213
|
+
WalletTypeValues["BUSINESS"] = "business";
|
|
214
|
+
WalletTypeValues["PERSONAL"] = "personal";
|
|
215
|
+
WalletTypeValues["P2P"] = "trading";
|
|
216
|
+
WalletTypeValues["ESCROW"] = "escrow";
|
|
217
|
+
WalletTypeValues["MERCHANT"] = "merchant";
|
|
218
|
+
WalletTypeValues["EXCHANGE"] = "exchange";
|
|
219
|
+
WalletTypeValues["STAKING"] = "staking";
|
|
220
|
+
WalletTypeValues["VAULT"] = "vault";
|
|
221
|
+
})(WalletTypeValues || (WalletTypeValues = {}));
|
|
222
|
+
export const walletType = {
|
|
223
|
+
personal: { value: WalletTypeValues.PERSONAL, label: 'Personal' },
|
|
224
|
+
p2p: { value: 'p2p', label: 'P2P' },
|
|
225
|
+
escrow: { value: WalletTypeValues.ESCROW, label: 'Escrow' },
|
|
226
|
+
merchant: { value: WalletTypeValues.MERCHANT, label: 'Merchant' },
|
|
227
|
+
exchange: { value: WalletTypeValues.EXCHANGE, label: 'Exchange' },
|
|
228
|
+
staking: { value: WalletTypeValues.STAKING, label: 'Staking' },
|
|
229
|
+
vault: { value: WalletTypeValues.VAULT, label: 'Vault' },
|
|
230
|
+
};
|
|
231
|
+
export const defaultPaginationParams = {
|
|
232
|
+
limit: 10,
|
|
233
|
+
offset: 0,
|
|
234
|
+
isLastPage: true,
|
|
235
|
+
};
|
|
236
|
+
export var CalcType;
|
|
237
|
+
(function (CalcType) {
|
|
238
|
+
CalcType["ONRAMP"] = "onramp";
|
|
239
|
+
CalcType["OFFRAMP"] = "offramp";
|
|
240
|
+
CalcType["WITHDRAWAL"] = "withdrawal";
|
|
241
|
+
})(CalcType || (CalcType = {}));
|
|
242
|
+
export var KYCStatuses;
|
|
243
|
+
(function (KYCStatuses) {
|
|
244
|
+
KYCStatuses["APPROVED"] = "APPROVED";
|
|
245
|
+
KYCStatuses["DECLINED"] = "DECLINED";
|
|
246
|
+
KYCStatuses["PENDING"] = "PENDING";
|
|
247
|
+
KYCStatuses["HOLD"] = "HOLD";
|
|
248
|
+
KYCStatuses["DOUBLE"] = "DOUBLE";
|
|
249
|
+
KYCStatuses["SOFT_REJECT"] = "SOFT_REJECT";
|
|
250
|
+
KYCStatuses["REJECT"] = "REJECT";
|
|
251
|
+
KYCStatuses["UNVERIFIED"] = "UNVERIFIED";
|
|
252
|
+
})(KYCStatuses || (KYCStatuses = {}));
|
|
253
|
+
export var OrderStatuses;
|
|
254
|
+
(function (OrderStatuses) {
|
|
255
|
+
OrderStatuses["NEW"] = "NEW";
|
|
256
|
+
OrderStatuses["PENDING"] = "PENDING";
|
|
257
|
+
OrderStatuses["PROCESSING"] = "PROCESSING";
|
|
258
|
+
OrderStatuses["CANCELED"] = "CANCELED";
|
|
259
|
+
OrderStatuses["COMPLETE"] = "COMPLETE";
|
|
260
|
+
OrderStatuses["ERROR"] = "ERROR";
|
|
261
|
+
OrderStatuses["FAILED"] = "FAILED";
|
|
262
|
+
})(OrderStatuses || (OrderStatuses = {}));
|
|
263
|
+
export var CardStatus;
|
|
264
|
+
(function (CardStatus) {
|
|
265
|
+
CardStatus["ACTIVE"] = "ACTIVE";
|
|
266
|
+
CardStatus["FROZEN"] = "FROZEN";
|
|
267
|
+
CardStatus["BLOCKED"] = "BLOCKED";
|
|
268
|
+
CardStatus["INACTIVE"] = "INACTIVE";
|
|
269
|
+
CardStatus["CANCELED"] = "CANCELED";
|
|
270
|
+
CardStatus["CLOSED"] = "CLOSED";
|
|
271
|
+
})(CardStatus || (CardStatus = {}));
|
|
272
|
+
export var IssuingProgramStatus;
|
|
273
|
+
(function (IssuingProgramStatus) {
|
|
274
|
+
IssuingProgramStatus["ACTIVE"] = "ACTIVE";
|
|
275
|
+
IssuingProgramStatus["ARCHIVED"] = "ARCHIVED";
|
|
276
|
+
})(IssuingProgramStatus || (IssuingProgramStatus = {}));
|
|
277
|
+
export var SubAccountStatus;
|
|
278
|
+
(function (SubAccountStatus) {
|
|
279
|
+
SubAccountStatus["ACTIVE"] = "ACTIVE";
|
|
280
|
+
SubAccountStatus["BLOCKED"] = "BLOCKED";
|
|
281
|
+
SubAccountStatus["INACTIVE"] = "INACTIVE";
|
|
282
|
+
SubAccountStatus["CANCELED"] = "CANCELED";
|
|
283
|
+
})(SubAccountStatus || (SubAccountStatus = {}));
|
|
284
|
+
export var SubAccountType;
|
|
285
|
+
(function (SubAccountType) {
|
|
286
|
+
SubAccountType["PREPAID"] = "prepaid";
|
|
287
|
+
SubAccountType["BALANCE"] = "balance";
|
|
288
|
+
})(SubAccountType || (SubAccountType = {}));
|
|
289
|
+
export var CurrencyType;
|
|
290
|
+
(function (CurrencyType) {
|
|
291
|
+
CurrencyType["TOKEN"] = "token";
|
|
292
|
+
CurrencyType["NATIVE"] = "native";
|
|
293
|
+
CurrencyType["FIAT"] = "fiat";
|
|
294
|
+
})(CurrencyType || (CurrencyType = {}));
|
|
295
|
+
export var APIKeyRole;
|
|
296
|
+
(function (APIKeyRole) {
|
|
297
|
+
APIKeyRole["READ_ONLY"] = "READ_ONLY";
|
|
298
|
+
APIKeyRole["DEVELOPER"] = "DEVELOPER";
|
|
299
|
+
APIKeyRole["PRODUCTION"] = "PRODUCTION";
|
|
300
|
+
})(APIKeyRole || (APIKeyRole = {}));
|
|
301
|
+
export var SortingDirection;
|
|
302
|
+
(function (SortingDirection) {
|
|
303
|
+
SortingDirection["ASC"] = "ASC";
|
|
304
|
+
SortingDirection["DESC"] = "DESC";
|
|
305
|
+
})(SortingDirection || (SortingDirection = {}));
|
|
306
|
+
export var CounterpartyType;
|
|
307
|
+
(function (CounterpartyType) {
|
|
308
|
+
CounterpartyType["INDIVIDUAL"] = "INDIVIDUAL";
|
|
309
|
+
CounterpartyType["BUSINESS"] = "BUSINESS";
|
|
310
|
+
})(CounterpartyType || (CounterpartyType = {}));
|
|
311
|
+
export var CounterpartyDestinationType;
|
|
312
|
+
(function (CounterpartyDestinationType) {
|
|
313
|
+
CounterpartyDestinationType["DOMESTIC_WIRE"] = "DOMESTIC_WIRE";
|
|
314
|
+
CounterpartyDestinationType["ACH"] = "ACH";
|
|
315
|
+
CounterpartyDestinationType["SWIFT"] = "SWIFT";
|
|
316
|
+
CounterpartyDestinationType["SEPA"] = "SEPA";
|
|
317
|
+
CounterpartyDestinationType["CRYPTO_EXTERNAL"] = "CRYPTO_EXTERNAL";
|
|
318
|
+
CounterpartyDestinationType["CRYPTO_INTERNAL"] = "CRYPTO_INTERNAL";
|
|
319
|
+
})(CounterpartyDestinationType || (CounterpartyDestinationType = {}));
|
|
320
|
+
export var CardTransactionStatus;
|
|
321
|
+
(function (CardTransactionStatus) {
|
|
322
|
+
CardTransactionStatus["APPROVED"] = "APPROVED";
|
|
323
|
+
CardTransactionStatus["CLEARED"] = "CLEARED";
|
|
324
|
+
CardTransactionStatus["COMPLETED"] = "COMPLETED";
|
|
325
|
+
CardTransactionStatus["EXPIRED"] = "EXPIRED";
|
|
326
|
+
CardTransactionStatus["FAILED"] = "FAILED";
|
|
327
|
+
CardTransactionStatus["CANCELLED"] = "CANCELLED";
|
|
328
|
+
CardTransactionStatus["CANCELED"] = "CANCELED";
|
|
329
|
+
CardTransactionStatus["PENDING"] = "PENDING";
|
|
330
|
+
CardTransactionStatus["REVERSED"] = "REVERSED";
|
|
331
|
+
CardTransactionStatus["DECLINED"] = "DECLINED";
|
|
332
|
+
})(CardTransactionStatus || (CardTransactionStatus = {}));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { API } from '../api/types/types';
|
|
2
|
+
type CalcData = API.Orders.V2.Calc.Response & {
|
|
3
|
+
is_subtract: boolean;
|
|
4
|
+
is_reverse: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type OrderCalcHandlerProps = Omit<API.Orders.V2.Calc.Request, 'order_type'>;
|
|
7
|
+
export type UseOrderCalcProps = {
|
|
8
|
+
from_currency_id: string | null | undefined;
|
|
9
|
+
to_currency_id: string | null | undefined;
|
|
10
|
+
calcHandler: (props: OrderCalcHandlerProps) => Promise<API.Orders.V2.Calc.Response>;
|
|
11
|
+
disableCalculation?: boolean;
|
|
12
|
+
to_address?: string;
|
|
13
|
+
};
|
|
14
|
+
export type UseOrderCalcData = {
|
|
15
|
+
calcData: CalcData | null;
|
|
16
|
+
sellingAmount: number;
|
|
17
|
+
setSellingAmount: (value: number) => void;
|
|
18
|
+
buyingAmount: number;
|
|
19
|
+
setBuyingAmount: (value: number) => void;
|
|
20
|
+
isSellingValuePending: boolean;
|
|
21
|
+
isBuyingValuePending: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type UseOrderCalc = (props: UseOrderCalcProps) => UseOrderCalcData;
|
|
24
|
+
export declare const useOrderCalc: UseOrderCalc;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import debounce from 'lodash.debounce';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
export const useOrderCalc = (props) => {
|
|
4
|
+
const { from_currency_id, to_currency_id, calcHandler, disableCalculation, to_address } = props;
|
|
5
|
+
const [sellingAmount, setSellingAmount] = useState(0);
|
|
6
|
+
const [buyingAmount, setBuyingAmount] = useState(0);
|
|
7
|
+
const [calcData, setCalcData] = useState(null);
|
|
8
|
+
const [isSellingValuePending, setIsSellingValuePending] = useState(false);
|
|
9
|
+
const [isBuyingValuePending, setIsBuyingValuePending] = useState(false);
|
|
10
|
+
const abortControllerRef = useRef(null);
|
|
11
|
+
const resetOrderCalc = () => {
|
|
12
|
+
setCalcData(null);
|
|
13
|
+
setIsSellingValuePending(false);
|
|
14
|
+
setIsBuyingValuePending(false);
|
|
15
|
+
setSellingAmount(0);
|
|
16
|
+
setBuyingAmount(0);
|
|
17
|
+
};
|
|
18
|
+
const abortCurrentCalculation = () => {
|
|
19
|
+
if (abortControllerRef.current) {
|
|
20
|
+
abortControllerRef.current.abort();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const updateCalculations = async ({ is_reverse, is_subtract }) => {
|
|
24
|
+
if (disableCalculation) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
abortControllerRef.current = new AbortController();
|
|
28
|
+
if (!from_currency_id || !to_currency_id) {
|
|
29
|
+
throw new Error('From currency or to currency is not defined');
|
|
30
|
+
}
|
|
31
|
+
if (sellingAmount === 0 && buyingAmount === 0 && !calcData) {
|
|
32
|
+
resetOrderCalc();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const calcParams = {
|
|
36
|
+
from_currency_id,
|
|
37
|
+
to_currency_id,
|
|
38
|
+
amount: is_reverse ? buyingAmount : sellingAmount,
|
|
39
|
+
is_reverse,
|
|
40
|
+
is_subtract,
|
|
41
|
+
to_address,
|
|
42
|
+
signal: abortControllerRef.current.signal,
|
|
43
|
+
};
|
|
44
|
+
if (!calcParams.amount) {
|
|
45
|
+
resetOrderCalc();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
is_reverse ? setIsSellingValuePending(true) : setIsBuyingValuePending(true);
|
|
50
|
+
const data = await calcHandler(calcParams);
|
|
51
|
+
setCalcData({
|
|
52
|
+
...data,
|
|
53
|
+
is_reverse,
|
|
54
|
+
is_subtract,
|
|
55
|
+
});
|
|
56
|
+
setSellingAmount(data.from_amount);
|
|
57
|
+
setBuyingAmount(data.result_amount);
|
|
58
|
+
abortControllerRef.current = null;
|
|
59
|
+
is_reverse ? setIsSellingValuePending(false) : setIsBuyingValuePending(false);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error.code === 'ERR_CANCELED') {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
is_reverse ? setIsSellingValuePending(false) : setIsBuyingValuePending(false);
|
|
66
|
+
if (error.status === 404) {
|
|
67
|
+
// eslint-disable-next-line no-console
|
|
68
|
+
console.error('Rate not found');
|
|
69
|
+
resetOrderCalc();
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const onSellingValueUpdate = debounce((value) => {
|
|
75
|
+
if (value !== calcData?.from_amount || isBuyingValuePending) {
|
|
76
|
+
updateCalculations({ is_reverse: false, is_subtract: true });
|
|
77
|
+
}
|
|
78
|
+
}, abortControllerRef.current?.signal ? undefined : 1000);
|
|
79
|
+
const onBuyingValueUpdate = debounce((value) => {
|
|
80
|
+
if (value !== calcData?.result_amount || isSellingValuePending) {
|
|
81
|
+
updateCalculations({ is_reverse: true, is_subtract: false });
|
|
82
|
+
}
|
|
83
|
+
}, abortControllerRef.current?.signal ? undefined : 1000);
|
|
84
|
+
const onToAddressUpdate = debounce(() => {
|
|
85
|
+
updateCalculations({ is_reverse: false, is_subtract: true });
|
|
86
|
+
}, abortControllerRef.current?.signal ? undefined : 1000);
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
abortCurrentCalculation();
|
|
89
|
+
updateCalculations({ is_reverse: false, is_subtract: true });
|
|
90
|
+
}, [from_currency_id, to_currency_id]);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
abortCurrentCalculation();
|
|
93
|
+
onSellingValueUpdate(sellingAmount);
|
|
94
|
+
return onSellingValueUpdate.cancel;
|
|
95
|
+
}, [sellingAmount]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
abortCurrentCalculation();
|
|
98
|
+
onBuyingValueUpdate(buyingAmount);
|
|
99
|
+
return onBuyingValueUpdate.cancel;
|
|
100
|
+
}, [buyingAmount]);
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
abortCurrentCalculation();
|
|
103
|
+
onToAddressUpdate();
|
|
104
|
+
return onToAddressUpdate.cancel;
|
|
105
|
+
}, [to_address]);
|
|
106
|
+
return {
|
|
107
|
+
sellingAmount,
|
|
108
|
+
setSellingAmount,
|
|
109
|
+
buyingAmount,
|
|
110
|
+
setBuyingAmount,
|
|
111
|
+
calcData,
|
|
112
|
+
isSellingValuePending,
|
|
113
|
+
isBuyingValuePending,
|
|
114
|
+
};
|
|
115
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { UploadFileResult } from '../utils/fileStorage';
|
|
2
|
+
interface UseFileUploadOptions {
|
|
3
|
+
bucket: string;
|
|
4
|
+
folder?: string;
|
|
5
|
+
authToken?: string;
|
|
6
|
+
onSuccess?: (result: UploadFileResult) => void;
|
|
7
|
+
onError?: (error: string) => void;
|
|
8
|
+
}
|
|
9
|
+
interface UseFileUploadReturn {
|
|
10
|
+
upload: (file: File, fileName?: string) => Promise<UploadFileResult>;
|
|
11
|
+
uploading: boolean;
|
|
12
|
+
progress: number;
|
|
13
|
+
error: string | null;
|
|
14
|
+
result: UploadFileResult | null;
|
|
15
|
+
reset: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* React хук для загрузки файлов в Supabase Storage
|
|
19
|
+
*
|
|
20
|
+
* Папки создаются автоматически при загрузке файла, если их не существует.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* // Загрузка в корень бакета
|
|
25
|
+
* const { upload, uploading, error, result } = useFileUpload({
|
|
26
|
+
* bucket: 'user-files',
|
|
27
|
+
* onSuccess: (result) => console.log('Загружено:', result.path),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Загрузка в конкретную папку (папка создастся автоматически)
|
|
31
|
+
* const { upload } = useFileUpload({
|
|
32
|
+
* bucket: 'documents',
|
|
33
|
+
* folder: 'invoices', // файл будет загружен в invoices/
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* // Загрузка во вложенную папку (все папки создадутся автоматически)
|
|
37
|
+
* const { upload } = useFileUpload({
|
|
38
|
+
* bucket: 'images',
|
|
39
|
+
* folder: 'avatars/2024', // файл будет загружен в avatars/2024/
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
43
|
+
* const file = e.target.files?.[0];
|
|
44
|
+
* if (file) await upload(file);
|
|
45
|
+
* };
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare const useFileUpload: (options: UseFileUploadOptions) => UseFileUploadReturn;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
import { uploadFile } from '../utils/fileStorage';
|
|
3
|
+
/**
|
|
4
|
+
* React хук для загрузки файлов в Supabase Storage
|
|
5
|
+
*
|
|
6
|
+
* Папки создаются автоматически при загрузке файла, если их не существует.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* // Загрузка в корень бакета
|
|
11
|
+
* const { upload, uploading, error, result } = useFileUpload({
|
|
12
|
+
* bucket: 'user-files',
|
|
13
|
+
* onSuccess: (result) => console.log('Загружено:', result.path),
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Загрузка в конкретную папку (папка создастся автоматически)
|
|
17
|
+
* const { upload } = useFileUpload({
|
|
18
|
+
* bucket: 'documents',
|
|
19
|
+
* folder: 'invoices', // файл будет загружен в invoices/
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Загрузка во вложенную папку (все папки создадутся автоматически)
|
|
23
|
+
* const { upload } = useFileUpload({
|
|
24
|
+
* bucket: 'images',
|
|
25
|
+
* folder: 'avatars/2024', // файл будет загружен в avatars/2024/
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
29
|
+
* const file = e.target.files?.[0];
|
|
30
|
+
* if (file) await upload(file);
|
|
31
|
+
* };
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export const useFileUpload = (options) => {
|
|
35
|
+
const { bucket, folder, authToken, onSuccess, onError } = options;
|
|
36
|
+
const [uploading, setUploading] = useState(false);
|
|
37
|
+
const [progress, setProgress] = useState(0);
|
|
38
|
+
const [error, setError] = useState(null);
|
|
39
|
+
const [result, setResult] = useState(null);
|
|
40
|
+
const upload = useCallback(async (file, customFileName) => {
|
|
41
|
+
setUploading(true);
|
|
42
|
+
setProgress(0);
|
|
43
|
+
setError(null);
|
|
44
|
+
setResult(null);
|
|
45
|
+
try {
|
|
46
|
+
// Симулируем прогресс (Supabase не предоставляет реальный progress)
|
|
47
|
+
const progressInterval = setInterval(() => {
|
|
48
|
+
setProgress((prev) => Math.min(prev + 10, 90));
|
|
49
|
+
}, 100);
|
|
50
|
+
const uploadOptions = {
|
|
51
|
+
file,
|
|
52
|
+
fileName: customFileName || `${Date.now()}-${file.name}`,
|
|
53
|
+
bucket,
|
|
54
|
+
folder,
|
|
55
|
+
contentType: file.type,
|
|
56
|
+
authToken,
|
|
57
|
+
};
|
|
58
|
+
const uploadResult = await uploadFile(uploadOptions);
|
|
59
|
+
clearInterval(progressInterval);
|
|
60
|
+
setProgress(100);
|
|
61
|
+
setResult(uploadResult);
|
|
62
|
+
if (uploadResult.success) {
|
|
63
|
+
onSuccess?.(uploadResult);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const errorMsg = uploadResult.error || 'Ошибка загрузки файла';
|
|
67
|
+
setError(errorMsg);
|
|
68
|
+
onError?.(errorMsg);
|
|
69
|
+
}
|
|
70
|
+
return uploadResult;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const errorMsg = err instanceof Error ? err.message : 'Непредвиденная ошибка';
|
|
74
|
+
setError(errorMsg);
|
|
75
|
+
onError?.(errorMsg);
|
|
76
|
+
setProgress(0);
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
error: errorMsg,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
setUploading(false);
|
|
84
|
+
}
|
|
85
|
+
}, [bucket, folder, authToken, onSuccess, onError]);
|
|
86
|
+
const reset = useCallback(() => {
|
|
87
|
+
setUploading(false);
|
|
88
|
+
setProgress(0);
|
|
89
|
+
setError(null);
|
|
90
|
+
setResult(null);
|
|
91
|
+
}, []);
|
|
92
|
+
return {
|
|
93
|
+
upload,
|
|
94
|
+
uploading,
|
|
95
|
+
progress,
|
|
96
|
+
error,
|
|
97
|
+
result,
|
|
98
|
+
reset,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { createWalletTransactionsConfig } from './config';
|
|
2
|
-
import { UseWalletTransactionsSubscriptionProps } from './types';
|
|
3
2
|
import { useSupabaseSubscription } from './useSupabaseSubscription';
|
|
4
|
-
|
|
5
|
-
export const useWalletTransactionsSubscription = ({ walletId, ...props }: UseWalletTransactionsSubscriptionProps) =>
|
|
6
|
-
useSupabaseSubscription({
|
|
3
|
+
export const useWalletTransactionsSubscription = ({ walletId, ...props }) => useSupabaseSubscription({
|
|
7
4
|
...props,
|
|
8
5
|
config: createWalletTransactionsConfig(walletId || ''),
|
|
9
|
-
|
|
6
|
+
});
|