Skip to content

Commit b67818a

Browse files
authored
Update owner reserve (#397)
* Update owner reserve * Get owner reserve from ledger info * Fix tests
1 parent 44a89fe commit b67818a

File tree

4 files changed

+37
-22
lines changed

4 files changed

+37
-22
lines changed

packages/extension/src/components/organisms/TokenListing/TokenListing.test.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ vi.mock('../../../contexts', () => {
5151
serverInfo: {
5252
info: {
5353
validated_ledger: {
54-
reserve_base_xrp: 10
54+
reserve_base_xrp: DEFAULT_RESERVE,
55+
reserve_inc_xrp: RESERVE_PER_OWNER
5556
}
5657
}
5758
}
@@ -135,7 +136,7 @@ describe('TokenListing', () => {
135136
await user.click(explainButton);
136137
expect(
137138
screen.getByText(
138-
'The activation of this account was made through a minimum deposit of 10 XRP.'
139+
`The activation of this account was made through a minimum deposit of ${DEFAULT_RESERVE} XRP.`
139140
)
140141
).toBeVisible();
141142
});

packages/extension/src/components/organisms/TokenListing/TokenListing.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,13 @@ export const TokenListing: FC<TokenListingProps> = ({ address }) => {
171171
return <TokenLoader />;
172172
}
173173
const baseReserve = serverInfo?.info.validated_ledger?.reserve_base_xrp || DEFAULT_RESERVE;
174+
const ownerReserveBase =
175+
chainName === Chain.XAHAU
176+
? serverInfo?.info.validated_ledger?.reserve_inc_xrp || XAHAU_RESERVE_PER_OWNER
177+
: serverInfo?.info.validated_ledger?.reserve_inc_xrp || RESERVE_PER_OWNER;
174178
getAccountInfo()
175179
.then((accountInfo) => {
176-
const ownerReserve =
177-
chainName === Chain.XAHAU
178-
? accountInfo.result.account_data.OwnerCount * XAHAU_RESERVE_PER_OWNER
179-
: accountInfo.result.account_data.OwnerCount * RESERVE_PER_OWNER;
180+
const ownerReserve = accountInfo.result.account_data.OwnerCount * ownerReserveBase;
180181
setOwnerReserve(ownerReserve);
181182
setReserve(ownerReserve + baseReserve);
182183
})
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export const DEFAULT_RESERVE = 10;
2-
export const RESERVE_PER_OWNER = 2;
1+
export const DEFAULT_RESERVE = 1;
2+
export const RESERVE_PER_OWNER = 0.2;
33
export const XAHAU_RESERVE_PER_OWNER = 0.2;

packages/extension/src/hooks/useFees/useFees.test.ts

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ import { SubmittableTransaction } from 'xrpl';
33

44
import { useFees } from './useFees';
55
import { vi } from 'vitest';
6+
import { DEFAULT_RESERVE, RESERVE_PER_OWNER } from '../../constants';
7+
8+
const mockDefaultFee = '12';
9+
const mockOwnerCount = 2;
10+
const mockReservePerOwner = RESERVE_PER_OWNER;
11+
const mockReserve = DEFAULT_RESERVE;
612

713
// Mock the modules and hooks that `useFees` depends on
814
vi.mock('@sentry/react', () => ({
@@ -13,9 +19,9 @@ let mockGetXrpBalance = () => Promise.resolve(50);
1319
vi.mock('../../contexts', () => {
1420
return {
1521
useLedger: () => ({
16-
estimateNetworkFees: vi.fn().mockResolvedValue('12'),
22+
estimateNetworkFees: vi.fn().mockResolvedValue(mockDefaultFee),
1723
getAccountInfo: vi.fn().mockResolvedValue({
18-
result: { account_data: { OwnerCount: 2 } }
24+
result: { account_data: { OwnerCount: mockOwnerCount } }
1925
})
2026
}),
2127
useNetwork: () => ({
@@ -28,7 +34,7 @@ vi.mock('../../contexts', () => {
2834
}),
2935
useServer: () => ({
3036
serverInfo: {
31-
info: { validated_ledger: { reserve_base_xrp: '20' } }
37+
info: { validated_ledger: { reserve_base_xrp: mockReserve } }
3238
}
3339
}),
3440
useWallet: () => ({ getCurrentWallet: () => ({ publicAddress: 'address' }) })
@@ -106,22 +112,26 @@ describe('useFees', () => {
106112
it('should calculate difference correctly when a fee is provided', async () => {
107113
const { result } = renderHook(() => useFees(transaction, '199'));
108114

109-
// Check the results
110-
// balance = 50, reserve = 20 + 2 * 2 = 24, fee = dropsToXrp(199) = 0.000199
111-
// So, difference = balance - reserve - fee = 50 - 24 - 0.000199 = 25.999801
112-
await waitFor(() => expect(result.current.difference).toEqual(25.999801));
115+
const balance = 50;
116+
const reserve = mockReserve + 2 * mockReservePerOwner;
117+
const fee = 0.000199;
118+
const difference = balance - reserve - fee;
119+
120+
await waitFor(() => expect(result.current.difference).toEqual(difference));
113121
});
114122

115123
it('should calculate difference correctly when balance is more than reserve + fees', async () => {
116124
// Set the balance to be more than reserve + fees
117-
118125
mockGetXrpBalance = () => Promise.resolve(100);
119126

120127
const { result } = renderHook(() => useFees(transaction, null));
121128

122-
// balance = 100, reserve = 20 + 2 * 2 = 24, fee = 12 drops
123-
// So, difference = balance - reserve - fee = 100 - 24 - 0.000012 = 75.999988
124-
await waitFor(() => expect(result.current.difference).toEqual(75.999988));
129+
const balance = 100;
130+
const reserve = mockReserve + 2 * mockReservePerOwner;
131+
const fee = 0.000012;
132+
const difference = balance - reserve - fee;
133+
134+
await waitFor(() => expect(result.current.difference).toEqual(difference));
125135
});
126136

127137
it('should calculate difference correctly when balance is less than reserve + fees', async () => {
@@ -130,9 +140,12 @@ describe('useFees', () => {
130140

131141
const { result } = renderHook(() => useFees(transaction, null));
132142

133-
// balance = 20, reserve = 20 + 2 * 2 = 24, fee = 12 drops
134-
// So, difference = balance - reserve - fee = 20 - 24 - 0.000012 = -4.000012
135-
await waitFor(() => expect(result.current.difference).toEqual(-4.000012));
143+
const balance = 20;
144+
const reserve = mockReserve + 2 * mockReservePerOwner;
145+
const fee = 0.000012;
146+
const difference = balance - reserve - fee;
147+
148+
await waitFor(() => expect(result.current.difference).toEqual(difference));
136149
});
137150
});
138151
});

0 commit comments

Comments
 (0)