Skip to content

Commit 66e2c32

Browse files
author
cpl121
committedMar 7, 2024··
feat: remove hardcoded base token dependencies from the app
1 parent 3c274cd commit 66e2c32

File tree

12 files changed

+62
-145
lines changed

12 files changed

+62
-145
lines changed
 

‎packages/desktop/components/popups/NodeInfoPopup.svelte

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
import { onMount } from 'svelte'
33
import { Button, Checkbox, CopyableBox, Spinner, Text } from 'shared/components'
44
import { formatNumber, localize } from '@core/i18n'
5-
import { INode, INodeInfo } from '@core/network'
5+
import { INode } from '@core/network'
6+
import { INodeInfo } from '@iota/sdk/out/types'
67
import { closePopup } from '@auxiliary/popup'
78
import { showAppNotification } from '@auxiliary/notification'
89
import { resolveObjectPath, setClipboard } from '@core/utils'

‎packages/shared/lib/contexts/onboarding/stores/onboarding-profile.store.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ export function updateShimmerClaimingAccount(shimmerClaimingAccount: IShimmerCla
3737
updateOnboardingProfile({ shimmerClaimingAccounts })
3838
}
3939

40-
export function getOnboardingBaseToken(): IBaseToken {
40+
export function getOnboardingBaseToken(): IBaseToken | undefined {
4141
return get(onboardingProfile)?.network?.baseToken
4242
}

‎packages/shared/lib/core/network/constants/default-base-token.constant.ts

-50
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,37 @@
1-
import { COIN_TYPE, DEFAULT_BASE_TOKEN } from '../constants'
2-
import { NetworkId, TokenSupply } from '../enums'
1+
import { COIN_TYPE } from '../constants'
2+
import { NetworkId } from '../enums'
33
import { IStardustNetworkMetadata } from '../interfaces'
44
import { NetworkMetadata } from '../types'
5+
import { nodeInfoBaseToken, nodeInfoProtocol } from '../stores/node-info.store'
6+
import { get } from 'svelte/store'
57

68
export const DEFAULT_NETWORK_METADATA: Readonly<{ [key in NetworkId]?: NetworkMetadata }> = {
79
[NetworkId.Shimmer]: <IStardustNetworkMetadata>{
810
id: NetworkId.Shimmer,
911
name: 'Shimmer',
1012
coinType: COIN_TYPE[NetworkId.Shimmer],
11-
protocol: {
12-
version: 2,
13-
networkName: 'shimmer',
14-
bech32Hrp: 'smr',
15-
minPowScore: 1500,
16-
belowMaxDepth: 15,
17-
rentStructure: {
18-
vByteCost: 100,
19-
vByteFactorData: 1,
20-
vByteFactorKey: 10,
21-
},
22-
tokenSupply: TokenSupply.Shimmer,
23-
},
24-
baseToken: DEFAULT_BASE_TOKEN[NetworkId.Shimmer],
13+
protocol: get(nodeInfoProtocol),
14+
baseToken: get(nodeInfoBaseToken),
2515
},
2616
[NetworkId.Testnet]: <IStardustNetworkMetadata>{
2717
id: NetworkId.Testnet,
2818
name: 'Testnet',
2919
coinType: COIN_TYPE[NetworkId.Testnet],
30-
protocol: {
31-
version: 2,
32-
networkName: 'testnet',
33-
bech32Hrp: 'rms',
34-
minPowScore: 1500,
35-
belowMaxDepth: 15,
36-
rentStructure: {
37-
vByteCost: 100,
38-
vByteFactorData: 1,
39-
vByteFactorKey: 10,
40-
},
41-
tokenSupply: TokenSupply.Testnet,
42-
},
43-
baseToken: DEFAULT_BASE_TOKEN[NetworkId.Testnet],
20+
protocol: get(nodeInfoProtocol),
21+
baseToken: get(nodeInfoBaseToken),
4422
},
4523
[NetworkId.Iota]: <IStardustNetworkMetadata>{
4624
id: NetworkId.Iota,
4725
name: 'IOTA',
4826
coinType: COIN_TYPE[NetworkId.Iota],
49-
protocol: {
50-
version: 2,
51-
networkName: 'iota',
52-
bech32Hrp: 'iota',
53-
minPowScore: 1500,
54-
belowMaxDepth: 15,
55-
rentStructure: {
56-
vByteCost: 250,
57-
vByteFactorData: 1,
58-
vByteFactorKey: 10,
59-
},
60-
tokenSupply: TokenSupply.Iota,
61-
},
62-
baseToken: DEFAULT_BASE_TOKEN[NetworkId.Iota],
27+
protocol: get(nodeInfoProtocol),
28+
baseToken: get(nodeInfoBaseToken),
6329
},
6430
[NetworkId.IotaAlphanet]: <IStardustNetworkMetadata>{
6531
id: NetworkId.IotaAlphanet,
6632
name: 'IOTA Alphanet',
6733
coinType: COIN_TYPE[NetworkId.IotaAlphanet],
68-
protocol: {
69-
version: 2,
70-
networkName: 'iota-alphanet-2',
71-
bech32Hrp: 'atoi',
72-
minPowScore: 1500,
73-
belowMaxDepth: 15,
74-
rentStructure: {
75-
vByteCost: 250,
76-
vByteFactorData: 1,
77-
vByteFactorKey: 10,
78-
},
79-
tokenSupply: TokenSupply.Iota,
80-
},
81-
baseToken: DEFAULT_BASE_TOKEN[NetworkId.IotaAlphanet],
34+
protocol: get(nodeInfoProtocol),
35+
baseToken: get(nodeInfoBaseToken),
8236
},
8337
}

‎packages/shared/lib/core/network/constants/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export * from './coin-type.constant'
2-
export * from './default-base-token.constant'
32
export * from './default-chain-configurations.constant'
43
export * from './default-max-parallel-api-requests'
54
export * from './default-network-metadata.constant'

‎packages/shared/lib/core/network/interfaces/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@ export * from './network-status.interface'
66
export * from './node-info-response.interface'
77
export * from './node.interface'
88
export * from './persisted-network.interface'
9-
export * from './protocol.interface'
109
export * from './rent-structure.interface'
1110
export * from './stardust-network-metadata.interface'

‎packages/shared/lib/core/network/interfaces/protocol.interface.ts

-11
This file was deleted.

‎packages/shared/lib/core/network/interfaces/stardust-network-metadata.interface.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { IBaseToken } from '@core/wallet'
22
import { NetworkId } from '../enums'
3-
import { IProtocol } from './protocol.interface'
3+
import { INodeInfoProtocol } from '@iota/sdk'
44

55
/**
66
* Holds relevant data
@@ -11,6 +11,6 @@ export interface IStardustNetworkMetadata {
1111
id: NetworkId
1212
name: string
1313
coinType: number
14-
protocol: IProtocol
14+
protocol: INodeInfoProtocol
1515
baseToken: IBaseToken
1616
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { INodeInfo } from '@iota/sdk/out/types'
2-
import { writable } from 'svelte/store'
2+
import { writable, derived } from 'svelte/store'
33

44
export const nodeInfo = writable<INodeInfo | undefined>(undefined)
55

66
export function setNodeInfo(newNodeInfo: INodeInfo | undefined): void {
77
return nodeInfo.set(newNodeInfo)
88
}
9+
10+
export const nodeInfoBaseToken = derived(nodeInfo, ($nodeInfo) => $nodeInfo?.baseToken)
11+
12+
export const nodeInfoProtocol = derived(nodeInfo, ($nodeInfo) => $nodeInfo?.protocol)

‎packages/shared/lib/core/profile/actions/active-profile/checkAndUpdateActiveProfileNetwork.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ export async function checkAndUpdateActiveProfileNetwork(): Promise<void> {
77
const $activeProfile = get(activeProfile)
88
const nodeInfoResponse = await getAndUpdateNodeInfo(true)
99
const networkId = $activeProfile?.network?.id
10-
if (!networkId || networkId === NetworkId.Custom) {
10+
if (
11+
!networkId ||
12+
networkId === NetworkId.Custom ||
13+
!$activeProfile?.network?.protocol ||
14+
!$activeProfile?.network?.baseToken
15+
) {
1116
const network = buildPersistedNetworkFromNodeInfoResponse(nodeInfoResponse)
1217
network.chains = $activeProfile.network?.chains || []
1318
updateActiveProfile({ network })
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1+
import { INodeInfoBaseToken } from '@iota/sdk/out/types'
12
import { TokenStandard } from '../enums'
23

3-
export interface IBaseToken {
4+
export interface IBaseToken extends INodeInfoBaseToken {
45
standard: TokenStandard.BaseToken
5-
name: string
6-
tickerSymbol?: string
7-
unit: string
8-
subunit?: string | null
9-
decimals: number
10-
useMetricPrefix?: boolean
116
}

‎packages/shared/lib/core/wallet/tests/convertToRawAmount.test.ts

+32-11
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { convertToRawAmount } from '../utils'
44
import { TokenMetadata } from '../types'
55
import { TokenStandard } from '../enums'
66
import { MAX_SUPPORTED_DECIMALS } from '../constants'
7-
import { DEFAULT_BASE_TOKEN, NetworkId } from '@core/network'
7+
import { NetworkId } from '@core/network'
8+
import { IBaseToken } from '../interfaces'
89

910
const WEB3_TOKEN_METADATA: TokenMetadata = {
1011
name: 'RAWR',
@@ -35,6 +36,26 @@ const INVALID_TOKEN_METADATA: TokenMetadata = {
3536
decimals: 0,
3637
}
3738

39+
const DEFAULT_IOTA_BASE_TOKEN: IBaseToken = {
40+
standard: TokenStandard.BaseToken,
41+
name: 'IOTA',
42+
tickerSymbol: 'IOTA',
43+
unit: 'IOTA',
44+
decimals: 6,
45+
subunit: 'micro',
46+
useMetricPrefix: false,
47+
}
48+
49+
const DEFAULT_SHIMMER_BASE_TOKEN: IBaseToken = {
50+
standard: TokenStandard.BaseToken,
51+
name: 'Shimmer',
52+
tickerSymbol: 'SMR',
53+
unit: 'SMR',
54+
decimals: 6,
55+
subunit: 'glow',
56+
useMetricPrefix: false,
57+
}
58+
3859
describe('File: convertToRawAmount.ts', () => {
3960
it('should return undefined if amount is empty', () => {
4061
expect(convertToRawAmount('', INVALID_TOKEN_METADATA)).toStrictEqual(undefined)
@@ -43,40 +64,40 @@ describe('File: convertToRawAmount.ts', () => {
4364
describe('given the tokenMetadata standard is BaseToken', () => {
4465
describe("given useMetricPrefix is false (currently IOTA's case)", () => {
4566
it("should return Big(amount) * decimal property if selectedUnit is unit and baseToken's decimal is less than MAX_SUPPORTED_DECIMALS", () => {
46-
let value = convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Iota], 'IOTA')
47-
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(DEFAULT_BASE_TOKEN[NetworkId.Iota].decimals)))
67+
let value = convertToRawAmount('1', DEFAULT_IOTA_BASE_TOKEN, 'IOTA')
68+
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(DEFAULT_IOTA_BASE_TOKEN.decimals)))
4869
})
4970
it("should return XXX if selectedUnit is unit and baseToken's decimals property is greater than MAX_SUPPORTED_DECIMALS", () => {
5071
let value = convertToRawAmount('1', WEB3_TOKEN_METADATA, 'RAWR')
5172
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(MAX_SUPPORTED_DECIMALS)))
5273
})
5374
it('should return same Big(amount) if selectedUnit is subunit', () => {
54-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Iota], 'micro')).toStrictEqual(Big('1'))
75+
expect(convertToRawAmount('1', DEFAULT_IOTA_BASE_TOKEN, 'micro')).toStrictEqual(Big('1'))
5576
})
5677
it('should return undefined if a unit is not provided', () => {
57-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Iota])).toStrictEqual(undefined)
78+
expect(convertToRawAmount('1', DEFAULT_IOTA_BASE_TOKEN)).toStrictEqual(undefined)
5879
})
5980
it('should return undefined if provided unit does not match the tokenMetadata unit or subunit', () => {
60-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Iota], 'test')).toStrictEqual(undefined)
81+
expect(convertToRawAmount('1', DEFAULT_IOTA_BASE_TOKEN, 'test')).toStrictEqual(undefined)
6182
})
6283
})
6384
describe("given useMetricPrefix is false (currently Shimmer's case)", () => {
6485
it("should return Big(amount) * decimal property if selectedUnit is unit and baseToken's decimal is less than MAX_SUPPORTED_DECIMALS", () => {
65-
let value = convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Shimmer], 'SMR')
66-
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(DEFAULT_BASE_TOKEN[NetworkId.Shimmer].decimals)))
86+
let value = convertToRawAmount('1', DEFAULT_SHIMMER_BASE_TOKEN, 'SMR')
87+
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(DEFAULT_SHIMMER_BASE_TOKEN.decimals)))
6788
})
6889
it("should return XXX if selectedUnit is unit and baseToken's decimals property is greater than MAX_SUPPORTED_DECIMALS", () => {
6990
let value = convertToRawAmount('1', WEB3_TOKEN_METADATA, 'RAWR')
7091
expect(value).toStrictEqual(Big('1').mul(Big(10).pow(MAX_SUPPORTED_DECIMALS)))
7192
})
7293
it('should return same Big(amount) if selectedUnit is subunit', () => {
73-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Shimmer], 'glow')).toStrictEqual(Big('1'))
94+
expect(convertToRawAmount('1', DEFAULT_SHIMMER_BASE_TOKEN, 'glow')).toStrictEqual(Big('1'))
7495
})
7596
it('should return undefined if a unit is not provided', () => {
76-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Shimmer])).toStrictEqual(undefined)
97+
expect(convertToRawAmount('1', DEFAULT_SHIMMER_BASE_TOKEN)).toStrictEqual(undefined)
7798
})
7899
it('should return undefined if provided unit does not match the tokenMetadata unit or subunit', () => {
79-
expect(convertToRawAmount('1', DEFAULT_BASE_TOKEN[NetworkId.Shimmer], 'test')).toStrictEqual(undefined)
100+
expect(convertToRawAmount('1', DEFAULT_SHIMMER_BASE_TOKEN, 'test')).toStrictEqual(undefined)
80101
})
81102
})
82103
})

0 commit comments

Comments
 (0)
Please sign in to comment.