@berachain/berajs 0.2.0 → 0.2.1

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.
Files changed (131) hide show
  1. package/dist/{transactionStore-BvStaXf3.d.ts → BexStatusProvider-nS3NcdxI.d.cts} +1 -41
  2. package/dist/{transactionStore-CQrGYSY2.d.cts → BexStatusProvider-nS3NcdxI.d.ts} +1 -41
  3. package/dist/abi/exports.cjs.map +1 -1
  4. package/dist/actions/exports.cjs +1 -1
  5. package/dist/actions/exports.cjs.map +1 -1
  6. package/dist/actions/exports.d.cts +4 -5
  7. package/dist/actions/exports.d.ts +4 -5
  8. package/dist/actions/exports.mjs +1 -1
  9. package/dist/{chunk-OS5AJMYJ.cjs → chunk-22J3YJDN.cjs} +2 -2
  10. package/dist/chunk-22J3YJDN.cjs.map +1 -0
  11. package/dist/{chunk-MTS5SZLA.mjs → chunk-2LL3P5PN.mjs} +2 -2
  12. package/dist/chunk-3YXSUBA5.mjs +2 -0
  13. package/dist/{chunk-H2QSRMVS.mjs.map → chunk-3YXSUBA5.mjs.map} +1 -1
  14. package/dist/chunk-55L7STYD.mjs +2 -0
  15. package/dist/chunk-55L7STYD.mjs.map +1 -0
  16. package/dist/{chunk-BOYZVULX.cjs → chunk-6LDOG5RL.cjs} +2 -2
  17. package/dist/chunk-6LDOG5RL.cjs.map +1 -0
  18. package/dist/{chunk-UQUWMHVF.cjs → chunk-7LNBSOVV.cjs} +2 -2
  19. package/dist/chunk-7LNBSOVV.cjs.map +1 -0
  20. package/dist/{chunk-ZQRACIGR.mjs → chunk-7SMWQ6SN.mjs} +2 -2
  21. package/dist/{chunk-7GWTHOLO.mjs → chunk-7WRTK7RJ.mjs} +2 -2
  22. package/dist/chunk-A4UDYSB6.mjs +4 -0
  23. package/dist/chunk-A4UDYSB6.mjs.map +1 -0
  24. package/dist/chunk-AX2YQQFQ.mjs +2 -0
  25. package/dist/chunk-AX2YQQFQ.mjs.map +1 -0
  26. package/dist/chunk-C6ZGUO4H.cjs +2 -0
  27. package/dist/chunk-C6ZGUO4H.cjs.map +1 -0
  28. package/dist/chunk-CYKCYPFR.cjs.map +1 -1
  29. package/dist/chunk-ECRMUMTA.mjs +2 -0
  30. package/dist/chunk-ECRMUMTA.mjs.map +1 -0
  31. package/dist/{chunk-ZAKA4TGK.cjs → chunk-FCWDGE62.cjs} +2 -2
  32. package/dist/chunk-FCWDGE62.cjs.map +1 -0
  33. package/dist/chunk-FL2N3XHK.cjs.map +1 -1
  34. package/dist/chunk-MUCEYO3E.cjs +4 -0
  35. package/dist/chunk-MUCEYO3E.cjs.map +1 -0
  36. package/dist/chunk-OIYXOKTT.cjs.map +1 -1
  37. package/dist/chunk-P2Q7CMUD.cjs +2 -0
  38. package/dist/chunk-P2Q7CMUD.cjs.map +1 -0
  39. package/dist/chunk-PKXAW6MO.cjs +2 -0
  40. package/dist/chunk-PKXAW6MO.cjs.map +1 -0
  41. package/dist/chunk-SWMJQOH6.cjs.map +1 -1
  42. package/dist/{chunk-YQGZMWDT.mjs → chunk-THATXCJK.mjs} +2 -2
  43. package/dist/chunk-VP7XUOSI.cjs.map +1 -1
  44. package/dist/chunk-VXL2ZZ4X.cjs.map +1 -1
  45. package/dist/chunk-WRFDB3QJ.cjs.map +1 -1
  46. package/dist/chunk-XNJLSA6P.cjs.map +1 -1
  47. package/dist/chunk-YZV5LKIP.cjs +2 -0
  48. package/dist/chunk-YZV5LKIP.cjs.map +1 -0
  49. package/dist/contexts/exports.cjs +1 -1
  50. package/dist/contexts/exports.cjs.map +1 -1
  51. package/dist/contexts/exports.d.cts +2 -10
  52. package/dist/contexts/exports.d.ts +2 -10
  53. package/dist/contexts/exports.mjs +1 -1
  54. package/dist/contexts/exports.mjs.map +1 -1
  55. package/dist/enum/exports.cjs.map +1 -1
  56. package/dist/enum/exports.d.cts +1 -2
  57. package/dist/enum/exports.d.ts +1 -2
  58. package/dist/errors/exports.cjs +1 -1
  59. package/dist/errors/exports.cjs.map +1 -1
  60. package/dist/errors/exports.d.cts +25 -2
  61. package/dist/errors/exports.d.ts +25 -2
  62. package/dist/errors/exports.mjs +1 -1
  63. package/dist/{getValidatorQueuedOperatorAddress-It0GsdvQ.d.cts → getValidatorQueuedOperatorAddress-Dstyaomr.d.cts} +1 -1
  64. package/dist/{getValidatorQueuedOperatorAddress-BX35p2Lv.d.ts → getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts} +1 -1
  65. package/dist/{global.d-Ba-NIojH.d.cts → global.d-CN6l2b9E.d.cts} +1 -2
  66. package/dist/{global.d-By70bEv2.d.ts → global.d-wYu8G8IQ.d.ts} +1 -2
  67. package/dist/hooks/exports.cjs +2 -2
  68. package/dist/hooks/exports.cjs.map +1 -1
  69. package/dist/hooks/exports.d.cts +7 -15
  70. package/dist/hooks/exports.d.ts +7 -15
  71. package/dist/hooks/exports.mjs +3 -3
  72. package/dist/hooks/exports.mjs.map +1 -1
  73. package/dist/{txnEnum-BYNbCxla.d.ts → txnEnum-BlBYhNRl.d.cts} +74 -1
  74. package/dist/{txnEnum-BYNbCxla.d.cts → txnEnum-BlBYhNRl.d.ts} +74 -1
  75. package/dist/types/exports.cjs.map +1 -1
  76. package/dist/types/exports.d.cts +2 -3
  77. package/dist/types/exports.d.ts +2 -3
  78. package/dist/utils/exports.cjs +1 -1
  79. package/dist/utils/exports.cjs.map +1 -1
  80. package/dist/utils/exports.mjs +1 -1
  81. package/dist/utils/exports.mjs.map +1 -1
  82. package/package.json +6 -6
  83. package/src/actions/dex/aggregators/haiku.ts +1 -1
  84. package/src/actions/dex/aggregators/oogabooga.ts +1 -1
  85. package/src/actions/pol/getEarnedStakedBeraVault.ts +1 -1
  86. package/src/actions/pol/getStakingDailyAssets.ts +4 -1
  87. package/src/actions/tokens/getWalletBalances.integration.test.ts +1 -1
  88. package/src/contexts/exports.ts +0 -1
  89. package/src/data/contracts.ts +1 -1
  90. package/src/errors/BeraError.ts +11 -2
  91. package/src/errors/RequestError.ts +27 -1
  92. package/src/errors/errorMap.ts +7 -6
  93. package/src/errors/getErrorMessage.ts +59 -20
  94. package/src/errors/getRevertReason.integration.test.ts +1 -1
  95. package/src/hooks/exports.ts +0 -4
  96. package/src/hooks/pol/useStakedData.ts +1 -1
  97. package/dist/chunk-7SC4VD3U.cjs +0 -2
  98. package/dist/chunk-7SC4VD3U.cjs.map +0 -1
  99. package/dist/chunk-BHNQX4XC.mjs +0 -2
  100. package/dist/chunk-BHNQX4XC.mjs.map +0 -1
  101. package/dist/chunk-BOYZVULX.cjs.map +0 -1
  102. package/dist/chunk-C3G5KXCH.mjs +0 -2
  103. package/dist/chunk-C3G5KXCH.mjs.map +0 -1
  104. package/dist/chunk-G6NA6NSM.mjs +0 -4
  105. package/dist/chunk-G6NA6NSM.mjs.map +0 -1
  106. package/dist/chunk-H2QSRMVS.mjs +0 -2
  107. package/dist/chunk-IJM76AWK.cjs +0 -4
  108. package/dist/chunk-IJM76AWK.cjs.map +0 -1
  109. package/dist/chunk-MUNAP5TM.cjs +0 -2
  110. package/dist/chunk-MUNAP5TM.cjs.map +0 -1
  111. package/dist/chunk-OS5AJMYJ.cjs.map +0 -1
  112. package/dist/chunk-TJWKS54T.mjs +0 -2
  113. package/dist/chunk-TJWKS54T.mjs.map +0 -1
  114. package/dist/chunk-UQUWMHVF.cjs.map +0 -1
  115. package/dist/chunk-UXUWSRVV.cjs +0 -2
  116. package/dist/chunk-UXUWSRVV.cjs.map +0 -1
  117. package/dist/chunk-WTCBORPB.cjs +0 -2
  118. package/dist/chunk-WTCBORPB.cjs.map +0 -1
  119. package/dist/chunk-ZAKA4TGK.cjs.map +0 -1
  120. package/dist/contracts-CQIPk0Jc.d.cts +0 -74
  121. package/dist/contracts-CQIPk0Jc.d.ts +0 -74
  122. package/src/contexts/TransactionStoreContext.tsx +0 -87
  123. package/src/hooks/transactions/transactionStore.ts +0 -296
  124. package/src/hooks/transactions/transactionStore.unit.test.ts +0 -561
  125. package/src/hooks/transactions/useAddRecentTransaction.ts +0 -29
  126. package/src/hooks/transactions/useRecentTransactions.ts +0 -27
  127. package/src/hooks/transactions/useSetTransactionStatus.ts +0 -31
  128. /package/dist/{chunk-MTS5SZLA.mjs.map → chunk-2LL3P5PN.mjs.map} +0 -0
  129. /package/dist/{chunk-ZQRACIGR.mjs.map → chunk-7SMWQ6SN.mjs.map} +0 -0
  130. /package/dist/{chunk-7GWTHOLO.mjs.map → chunk-7WRTK7RJ.mjs.map} +0 -0
  131. /package/dist/{chunk-YQGZMWDT.mjs.map → chunk-THATXCJK.mjs.map} +0 -0
@@ -1,561 +0,0 @@
1
- import type { Config } from "@wagmi/core";
2
- import { beforeEach, describe, expect, it, vi } from "vitest";
3
-
4
- import type { Data, DataLegacy, Transaction } from "./transactionStore";
5
- import {
6
- convertLegacyDataToNewData,
7
- createTransactionStore,
8
- filterDuplicatefn,
9
- mergeData,
10
- } from "./transactionStore";
11
-
12
- const storage = new Map<string, string>();
13
-
14
- beforeEach(() => {
15
- storage.clear();
16
- const localStorageMock: Storage = {
17
- get length() {
18
- return storage.size;
19
- },
20
- clear: vi.fn(() => {
21
- storage.clear();
22
- }),
23
- getItem: vi.fn((key: string) => storage.get(key) ?? null),
24
- key: vi.fn((index: number) => Array.from(storage.keys())[index] ?? null),
25
- removeItem: vi.fn((key: string) => {
26
- storage.delete(key);
27
- }),
28
- setItem: vi.fn((key: string, value: string) => {
29
- storage.set(key, value);
30
- }),
31
- };
32
-
33
- vi.stubGlobal("localStorage", localStorageMock);
34
- });
35
-
36
- describe("convertLegacyDataToNewData", () => {
37
- it("should convert legacy nested data to flat array format", () => {
38
- const legacyData: DataLegacy = {
39
- "0xAccount1": {
40
- 1: [
41
- {
42
- hash: "0x123",
43
- description: "Swap",
44
- timestamp: 1000,
45
- status: "confirmed",
46
- chainId: 1,
47
- },
48
- ],
49
- 2: [
50
- {
51
- hash: "0x456",
52
- description: "Transfer",
53
- timestamp: 2000,
54
- status: "pending",
55
- chainId: 2,
56
- },
57
- ],
58
- },
59
- };
60
-
61
- const result = convertLegacyDataToNewData(legacyData);
62
-
63
- expect(result).toEqual({
64
- "0xAccount1": [
65
- {
66
- hash: "0x123",
67
- description: "Swap",
68
- timestamp: 1000,
69
- status: "confirmed",
70
- chainId: 1,
71
- },
72
- {
73
- hash: "0x456",
74
- description: "Transfer",
75
- timestamp: 2000,
76
- status: "pending",
77
- chainId: 2,
78
- },
79
- ],
80
- });
81
- });
82
-
83
- it("should handle multiple accounts with multiple chains", () => {
84
- const legacyData: DataLegacy = {
85
- "0xAccount1": {
86
- 1: [
87
- {
88
- hash: "0x111",
89
- description: "Tx1",
90
- timestamp: 1000,
91
- status: "confirmed",
92
- chainId: 1,
93
- },
94
- ],
95
- },
96
- "0xAccount2": {
97
- 2: [
98
- {
99
- hash: "0x222",
100
- description: "Tx2",
101
- timestamp: 2000,
102
- status: "pending",
103
- chainId: 2,
104
- },
105
- ],
106
- },
107
- };
108
-
109
- const result = convertLegacyDataToNewData(legacyData);
110
-
111
- expect(result).toEqual({
112
- "0xAccount1": [
113
- {
114
- hash: "0x111",
115
- description: "Tx1",
116
- timestamp: 1000,
117
- status: "confirmed",
118
- chainId: 1,
119
- },
120
- ],
121
- "0xAccount2": [
122
- {
123
- hash: "0x222",
124
- description: "Tx2",
125
- timestamp: 2000,
126
- status: "pending",
127
- chainId: 2,
128
- },
129
- ],
130
- });
131
- });
132
-
133
- it("should handle empty legacy data", () => {
134
- const legacyData: DataLegacy = {};
135
- const result = convertLegacyDataToNewData(legacyData);
136
- expect(result).toEqual({});
137
- });
138
-
139
- it("should skip undefined transactions", () => {
140
- const legacyData: DataLegacy = {
141
- "0xAccount1": {
142
- 1: undefined,
143
- 2: [
144
- {
145
- hash: "0x123",
146
- description: "Test",
147
- timestamp: 1000,
148
- status: "confirmed",
149
- chainId: 2,
150
- },
151
- ],
152
- },
153
- };
154
-
155
- const result = convertLegacyDataToNewData(legacyData);
156
-
157
- expect(result).toEqual({
158
- "0xAccount1": [
159
- {
160
- hash: "0x123",
161
- description: "Test",
162
- timestamp: 1000,
163
- status: "confirmed",
164
- chainId: 2,
165
- },
166
- ],
167
- });
168
- });
169
-
170
- it("should correctly convert chainId from string to number", () => {
171
- const legacyData: DataLegacy = {
172
- "0xAccount1": {
173
- 80085: [
174
- {
175
- hash: "0xbeef",
176
- description: "Berachain Tx",
177
- timestamp: 5000,
178
- status: "confirmed",
179
- chainId: 80085,
180
- },
181
- ],
182
- },
183
- };
184
-
185
- const result = convertLegacyDataToNewData(legacyData);
186
-
187
- expect(result["0xAccount1"]?.[0]?.chainId).toBe(80085);
188
- expect(typeof result["0xAccount1"]?.[0]?.chainId).toBe("number");
189
- });
190
- });
191
-
192
- describe("filterDuplicatefn", () => {
193
- it("should filter out duplicate transactions by hash", () => {
194
- const transactions: Transaction[] = [
195
- {
196
- hash: "0x123",
197
- description: "First",
198
- timestamp: 1000,
199
- status: "confirmed",
200
- chainId: 1,
201
- },
202
- {
203
- hash: "0x456",
204
- description: "Second",
205
- timestamp: 2000,
206
- status: "pending",
207
- chainId: 1,
208
- },
209
- {
210
- hash: "0x123",
211
- description: "Duplicate",
212
- timestamp: 3000,
213
- status: "failed",
214
- chainId: 1,
215
- },
216
- ];
217
-
218
- const result = transactions.filter(filterDuplicatefn);
219
-
220
- expect(result).toHaveLength(2);
221
- expect(result[0]?.hash).toBe("0x123");
222
- expect(result[0]?.description).toBe("First");
223
- expect(result[1]?.hash).toBe("0x456");
224
- });
225
-
226
- it("should keep all transactions when there are no duplicates", () => {
227
- const transactions: Transaction[] = [
228
- {
229
- hash: "0x111",
230
- description: "Tx1",
231
- timestamp: 1000,
232
- status: "confirmed",
233
- chainId: 1,
234
- },
235
- {
236
- hash: "0x222",
237
- description: "Tx2",
238
- timestamp: 2000,
239
- status: "pending",
240
- chainId: 1,
241
- },
242
- {
243
- hash: "0x333",
244
- description: "Tx3",
245
- timestamp: 3000,
246
- status: "failed",
247
- chainId: 1,
248
- },
249
- ];
250
-
251
- const result = transactions.filter(filterDuplicatefn);
252
-
253
- expect(result).toHaveLength(3);
254
- expect(result).toEqual(transactions);
255
- });
256
-
257
- it("should handle empty array", () => {
258
- const transactions: Transaction[] = [];
259
- const result = transactions.filter(filterDuplicatefn);
260
- expect(result).toEqual([]);
261
- });
262
-
263
- it("should handle array with single transaction", () => {
264
- const transactions: Transaction[] = [
265
- {
266
- hash: "0x123",
267
- description: "Only one",
268
- timestamp: 1000,
269
- status: "confirmed",
270
- chainId: 1,
271
- },
272
- ];
273
-
274
- const result = transactions.filter(filterDuplicatefn);
275
-
276
- expect(result).toHaveLength(1);
277
- expect(result[0]).toEqual(transactions[0]);
278
- });
279
-
280
- it("should keep first occurrence when there are multiple duplicates", () => {
281
- const transactions: Transaction[] = [
282
- {
283
- hash: "0xabc",
284
- description: "First",
285
- timestamp: 1000,
286
- status: "confirmed",
287
- chainId: 1,
288
- },
289
- {
290
- hash: "0xabc",
291
- description: "Second",
292
- timestamp: 2000,
293
- status: "pending",
294
- chainId: 1,
295
- },
296
- {
297
- hash: "0xabc",
298
- description: "Third",
299
- timestamp: 3000,
300
- status: "failed",
301
- chainId: 1,
302
- },
303
- ];
304
-
305
- const result = transactions.filter(filterDuplicatefn);
306
-
307
- expect(result).toHaveLength(1);
308
- expect(result[0]?.description).toBe("First");
309
- });
310
- });
311
-
312
- describe("mergeData", () => {
313
- it("should merge legacy and new data for same account", () => {
314
- const legacyData: DataLegacy = {
315
- "0xAccount1": {
316
- 1: [
317
- {
318
- hash: "0x111",
319
- description: "Legacy Tx",
320
- timestamp: 1000,
321
- status: "confirmed",
322
- chainId: 1,
323
- },
324
- ],
325
- },
326
- };
327
-
328
- const newData: Data = {
329
- "0xAccount1": [
330
- {
331
- hash: "0x222",
332
- description: "New Tx",
333
- timestamp: 2000,
334
- status: "pending",
335
- chainId: 1,
336
- },
337
- ],
338
- };
339
-
340
- const result = mergeData(legacyData, newData);
341
-
342
- expect(result["0xAccount1"]).toHaveLength(2);
343
- expect(result["0xAccount1"]?.map((tx) => tx.hash)).toContain("0x111");
344
- expect(result["0xAccount1"]?.map((tx) => tx.hash)).toContain("0x222");
345
- });
346
-
347
- it("should remove duplicate transactions when merging", () => {
348
- const legacyData: DataLegacy = {
349
- "0xAccount1": {
350
- 1: [
351
- {
352
- hash: "0xDuplicate",
353
- description: "Legacy",
354
- timestamp: 1000,
355
- status: "confirmed",
356
- chainId: 1,
357
- },
358
- ],
359
- },
360
- };
361
-
362
- const newData: Data = {
363
- "0xAccount1": [
364
- {
365
- hash: "0xDuplicate",
366
- description: "New",
367
- timestamp: 2000,
368
- status: "pending",
369
- chainId: 1,
370
- },
371
- ],
372
- };
373
-
374
- const result = mergeData(legacyData, newData);
375
-
376
- expect(result["0xAccount1"]).toHaveLength(1);
377
- expect(result["0xAccount1"]?.[0]?.hash).toBe("0xDuplicate");
378
- // Should keep the first occurrence (from newData since it's first in the array)
379
- expect(result["0xAccount1"]?.[0]?.description).toBe("New");
380
- });
381
-
382
- it("should handle accounts that only exist in legacy data", () => {
383
- const legacyData: DataLegacy = {
384
- "0xLegacyOnly": {
385
- 1: [
386
- {
387
- hash: "0x111",
388
- description: "Legacy",
389
- timestamp: 1000,
390
- status: "confirmed",
391
- chainId: 1,
392
- },
393
- ],
394
- },
395
- };
396
-
397
- const newData: Data = {
398
- "0xNewOnly": [
399
- {
400
- hash: "0x222",
401
- description: "New",
402
- timestamp: 2000,
403
- status: "pending",
404
- chainId: 1,
405
- },
406
- ],
407
- };
408
-
409
- const result = mergeData(legacyData, newData);
410
-
411
- expect(result["0xLegacyOnly"]).toHaveLength(1);
412
- expect(result["0xNewOnly"]).toHaveLength(1);
413
- });
414
-
415
- it("should handle empty legacy data", () => {
416
- const legacyData: DataLegacy = {};
417
- const newData: Data = {
418
- "0xAccount1": [
419
- {
420
- hash: "0x123",
421
- description: "New",
422
- timestamp: 1000,
423
- status: "confirmed",
424
- chainId: 1,
425
- },
426
- ],
427
- };
428
-
429
- const result = mergeData(legacyData, newData);
430
-
431
- expect(result).toEqual(newData);
432
- });
433
-
434
- it("should handle empty new data", () => {
435
- const legacyData: DataLegacy = {
436
- "0xAccount1": {
437
- 1: [
438
- {
439
- hash: "0x123",
440
- description: "Legacy",
441
- timestamp: 1000,
442
- status: "confirmed",
443
- chainId: 1,
444
- },
445
- ],
446
- },
447
- };
448
- const newData: Data = {};
449
-
450
- const result = mergeData(legacyData, newData);
451
-
452
- expect(result["0xAccount1"]).toHaveLength(1);
453
- expect(result["0xAccount1"]?.[0]?.hash).toBe("0x123");
454
- });
455
-
456
- it("should handle both empty legacy and new data", () => {
457
- const legacyData: DataLegacy = {};
458
- const newData: Data = {};
459
-
460
- const result = mergeData(legacyData, newData);
461
-
462
- expect(result).toEqual({});
463
- });
464
-
465
- it("should merge multiple chains from legacy data correctly", () => {
466
- const legacyData: DataLegacy = {
467
- "0xAccount1": {
468
- 1: [
469
- {
470
- hash: "0x111",
471
- description: "Chain 1",
472
- timestamp: 1000,
473
- status: "confirmed",
474
- chainId: 1,
475
- },
476
- ],
477
- 2: [
478
- {
479
- hash: "0x222",
480
- description: "Chain 2",
481
- timestamp: 2000,
482
- status: "pending",
483
- chainId: 2,
484
- },
485
- ],
486
- },
487
- };
488
-
489
- const newData: Data = {
490
- "0xAccount1": [
491
- {
492
- hash: "0x333",
493
- description: "New",
494
- timestamp: 3000,
495
- status: "confirmed",
496
- chainId: 1,
497
- },
498
- ],
499
- };
500
-
501
- const result = mergeData(legacyData, newData);
502
-
503
- expect(result["0xAccount1"]).toHaveLength(3);
504
- expect(result["0xAccount1"]?.map((tx) => tx.chainId)).toContain(1);
505
- expect(result["0xAccount1"]?.map((tx) => tx.chainId)).toContain(2);
506
- });
507
-
508
- it("should filter duplicates when new data has duplicates", () => {
509
- const legacyData: DataLegacy = {};
510
- const newData: Data = {
511
- "0xAccount1": [
512
- {
513
- hash: "0xDup",
514
- description: "First",
515
- timestamp: 1000,
516
- status: "confirmed",
517
- chainId: 1,
518
- },
519
- {
520
- hash: "0xDup",
521
- description: "Second",
522
- timestamp: 2000,
523
- status: "pending",
524
- chainId: 1,
525
- },
526
- ],
527
- };
528
-
529
- const result = mergeData(legacyData, newData);
530
-
531
- expect(result["0xAccount1"]).toHaveLength(1);
532
- expect(result["0xAccount1"]?.[0]?.description).toBe("First");
533
- });
534
- });
535
-
536
- describe("createTransactionStore", () => {
537
- it("adds transactions and updates status", () => {
538
- const store = createTransactionStore({ config: {} as Config });
539
- const account = "0xAccount1";
540
- const hash =
541
- "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
542
-
543
- store.addTransaction(account, {
544
- hash,
545
- description: "Submitted",
546
- timestamp: 123,
547
- chainId: 1,
548
- });
549
-
550
- expect(store.getTransactions(account)).toHaveLength(1);
551
- expect(store.getTransactions(account)[0]?.status).toBe("pending");
552
-
553
- store.setTransactionStatus(account, hash, "confirmed");
554
-
555
- expect(store.getTransactions(account)[0]?.status).toBe("confirmed");
556
-
557
- store.setTransactionStatus(account, hash, "failed");
558
-
559
- expect(store.getTransactions(account)[0]?.status).toBe("failed");
560
- });
561
- });
@@ -1,29 +0,0 @@
1
- import { useCallback } from "react";
2
-
3
- import { useBeraWagmi } from "@berachain/wagmi/hooks";
4
-
5
- import { InvalidArgumentError } from "~/errors/InvalidArgumentError";
6
- import { useTransactionStore } from "../../contexts/TransactionStoreContext";
7
- import type { NewTransaction } from "./transactionStore";
8
-
9
- export function useAddRecentTransaction(): (
10
- transaction: NewTransaction,
11
- ) => void {
12
- const store = useTransactionStore();
13
- const { account } = useBeraWagmi();
14
- const address = account?.wallet?.address;
15
- return useCallback(
16
- (transaction: NewTransaction) => {
17
- if (!address) {
18
- throw new InvalidArgumentError({
19
- property: "address",
20
- value: address,
21
- expected: "Address",
22
- });
23
- }
24
-
25
- store.addTransaction(address, transaction);
26
- },
27
- [store, address],
28
- );
29
- }
@@ -1,27 +0,0 @@
1
- import { useEffect, useState } from "react";
2
-
3
- import { useBeraWallet } from "@berachain/wagmi/hooks";
4
-
5
- import { useTransactionStore } from "../../contexts/TransactionStoreContext";
6
- import type { Transaction } from "./transactionStore";
7
-
8
- export function useRecentTransactions(): Transaction[] {
9
- const store = useTransactionStore();
10
- const { address } = useBeraWallet();
11
-
12
- const [transactions, setTransactions] = useState(() =>
13
- store && address ? store.getTransactions(address) : [],
14
- );
15
-
16
- useEffect(() => {
17
- if (store && address) {
18
- setTransactions(store.getTransactions(address));
19
-
20
- return store.onChange(() => {
21
- setTransactions(store.getTransactions(address));
22
- });
23
- }
24
- }, [store, address]);
25
-
26
- return transactions;
27
- }
@@ -1,31 +0,0 @@
1
- import { useCallback } from "react";
2
-
3
- import { useBeraWagmi } from "@berachain/wagmi/hooks";
4
-
5
- import { InvalidArgumentError } from "~/errors/InvalidArgumentError";
6
- import { useTransactionStore } from "../../contexts/TransactionStoreContext";
7
- import type { TransactionStatus } from "./transactionStore";
8
-
9
- export function useSetTransactionStatus(): (
10
- hash: string,
11
- status: TransactionStatus,
12
- ) => void {
13
- const store = useTransactionStore();
14
- const { account } = useBeraWagmi();
15
- const address = account?.wallet?.address;
16
-
17
- return useCallback(
18
- (hash: string, status: TransactionStatus) => {
19
- if (!address) {
20
- throw new InvalidArgumentError({
21
- property: "address",
22
- value: address,
23
- expected: "Address",
24
- });
25
- }
26
-
27
- store.setTransactionStatus(address, hash, status);
28
- },
29
- [store, address],
30
- );
31
- }