@exodus/assets-feature 5.11.3 → 5.13.0
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/CHANGELOG.md +13 -0
- package/api/index.js +4 -0
- package/atoms/legacy-address-mode.js +34 -0
- package/atoms/multi-address-mode.js +37 -4
- package/atoms/taproot-address-mode.js +34 -0
- package/client/asset-client-interface.js +3 -2
- package/index.d.ts +1 -1
- package/index.js +4 -0
- package/module/asset-preferences.js +67 -9
- package/module/assets-module.js +1 -1
- package/module/utils.js +1 -1
- package/package.json +8 -8
- package/plugin/index.js +6 -0
- package/redux/index.d.ts +2 -2
- package/redux/index.js +8 -0
- package/redux/initial-state.js +2 -0
- package/redux/selectors/index.js +28 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.13.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@5.12.0...@exodus/assets-feature@5.13.0) (2024-10-02)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **asset-preferences:** add syncable bitcoin preferences ([#9652](https://github.com/ExodusMovement/exodus-hydra/issues/9652)) ([14dad30](https://github.com/ExodusMovement/exodus-hydra/commit/14dad306e1fdbbec0095737aafe37bd9573d426a))
|
|
11
|
+
- use atoms v9 ([#9651](https://github.com/ExodusMovement/exodus-hydra/issues/9651)) ([524aa61](https://github.com/ExodusMovement/exodus-hydra/commit/524aa61f69c81e6ac00b2f94ea830688a105b3e4))
|
|
12
|
+
|
|
13
|
+
## [5.12.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@5.11.3...@exodus/assets-feature@5.12.0) (2024-09-24)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- allow returning highest unused indexes ([#9498](https://github.com/ExodusMovement/exodus-hydra/issues/9498)) ([df90160](https://github.com/ExodusMovement/exodus-hydra/commit/df90160623e62d1118ed11b887173966d8924350))
|
|
18
|
+
|
|
6
19
|
## [5.11.3](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/assets-feature@5.11.2...@exodus/assets-feature@5.11.3) (2024-09-09)
|
|
7
20
|
|
|
8
21
|
**Note:** Version bump only for package @exodus/assets-feature
|
package/api/index.js
CHANGED
|
@@ -3,6 +3,10 @@ const createAssetsApi = ({ assetPreferences, assetsModule }) => {
|
|
|
3
3
|
assetPreferences: {
|
|
4
4
|
enableMultiAddressMode: assetPreferences.enableMultiAddressMode,
|
|
5
5
|
disableMultiAddressMode: assetPreferences.disableMultiAddressMode,
|
|
6
|
+
enableLegacyAddressMode: assetPreferences.enableLegacyAddressMode,
|
|
7
|
+
disableLegacyAddressMode: assetPreferences.disableLegacyAddressMode,
|
|
8
|
+
enableTaprootAddressMode: assetPreferences.enableTaprootAddressMode,
|
|
9
|
+
disableTaprootAddressMode: assetPreferences.disableTaprootAddressMode,
|
|
6
10
|
disablePurpose: assetPreferences.disablePurpose,
|
|
7
11
|
enablePurpose: assetPreferences.enablePurpose,
|
|
8
12
|
},
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { compute } from '@exodus/atoms'
|
|
2
|
+
import { createFusionAtom } from '@exodus/fusion-atoms'
|
|
3
|
+
|
|
4
|
+
const createLegacyAddressModeAtom = ({ fusion }) => {
|
|
5
|
+
const bitcoinFusionAtom = createFusionAtom({
|
|
6
|
+
fusion,
|
|
7
|
+
path: `bitcoinLegacyAddressEnabled`,
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
const computedAtom = compute({
|
|
11
|
+
atom: bitcoinFusionAtom,
|
|
12
|
+
selector: (bitcoin) => (bitcoin === undefined ? {} : { bitcoin }),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const set = async (value) => {
|
|
16
|
+
const { bitcoin } = typeof value === 'function' ? value(await computedAtom.get()) : value
|
|
17
|
+
|
|
18
|
+
if (bitcoin !== undefined) {
|
|
19
|
+
await bitcoinFusionAtom.set(bitcoin)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return { ...computedAtom, set }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const legacyAddressModeAtomDefinition = {
|
|
27
|
+
id: 'legacyAddressModeAtom',
|
|
28
|
+
type: 'atom',
|
|
29
|
+
factory: createLegacyAddressModeAtom,
|
|
30
|
+
dependencies: ['fusion'],
|
|
31
|
+
public: true,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default legacyAddressModeAtomDefinition
|
|
@@ -1,18 +1,51 @@
|
|
|
1
|
-
import { createStorageAtomFactory } from '@exodus/atoms'
|
|
1
|
+
import { combine, compute, createStorageAtomFactory } from '@exodus/atoms'
|
|
2
|
+
import { omitBy } from '@exodus/basic-utils'
|
|
3
|
+
import { createFusionAtom } from '@exodus/fusion-atoms'
|
|
4
|
+
import lodash from 'lodash'
|
|
2
5
|
|
|
3
|
-
const
|
|
4
|
-
|
|
6
|
+
const { isUndefined } = lodash
|
|
7
|
+
|
|
8
|
+
const createMultiAddressModeAtom = ({ storage, fusion, logger, config }) => {
|
|
9
|
+
const storageAtom = createStorageAtomFactory({ storage, logger })({
|
|
5
10
|
key: 'multiAddressMode',
|
|
6
11
|
defaultValue: config.defaults ?? {},
|
|
7
12
|
isSoleWriter: true,
|
|
8
13
|
})
|
|
14
|
+
|
|
15
|
+
const bitcoinFusionAtom = createFusionAtom({
|
|
16
|
+
fusion,
|
|
17
|
+
path: `enableMultipleAddresses`,
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
const combinedAtom = combine({
|
|
21
|
+
storage: storageAtom,
|
|
22
|
+
bitcoin: bitcoinFusionAtom,
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const computedAtom = compute({
|
|
26
|
+
atom: combinedAtom,
|
|
27
|
+
selector: ({ storage, bitcoin }) => omitBy({ ...storage, bitcoin }, isUndefined),
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
const set = async (value) => {
|
|
31
|
+
const { bitcoin, ...rest } =
|
|
32
|
+
typeof value === 'function' ? value(await computedAtom.get()) : value
|
|
33
|
+
|
|
34
|
+
await Promise.all([bitcoinFusionAtom.set(bitcoin), storageAtom.set(rest)])
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const reset = async () => {
|
|
38
|
+
await storageAtom.reset()
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return { ...computedAtom, set, reset }
|
|
9
42
|
}
|
|
10
43
|
|
|
11
44
|
const multiAddressModeAtomDefinition = {
|
|
12
45
|
id: 'multiAddressModeAtom',
|
|
13
46
|
type: 'atom',
|
|
14
47
|
factory: createMultiAddressModeAtom,
|
|
15
|
-
dependencies: ['storage', 'logger', 'config'],
|
|
48
|
+
dependencies: ['storage', 'fusion', 'logger', 'config'],
|
|
16
49
|
public: true,
|
|
17
50
|
}
|
|
18
51
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { compute } from '@exodus/atoms'
|
|
2
|
+
import { createFusionAtom } from '@exodus/fusion-atoms'
|
|
3
|
+
|
|
4
|
+
const createTaprootAddressModeAtom = ({ fusion }) => {
|
|
5
|
+
const bitcoinFusionAtom = createFusionAtom({
|
|
6
|
+
fusion,
|
|
7
|
+
path: `bitcoinTaprootAddressEnabled`,
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
const computedAtom = compute({
|
|
11
|
+
atom: bitcoinFusionAtom,
|
|
12
|
+
selector: (bitcoin) => (bitcoin === undefined ? {} : { bitcoin }),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const set = async (value) => {
|
|
16
|
+
const { bitcoin } = typeof value === 'function' ? value(await computedAtom.get()) : value
|
|
17
|
+
|
|
18
|
+
if (bitcoin !== undefined) {
|
|
19
|
+
await bitcoinFusionAtom.set(bitcoin)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return { ...computedAtom, set }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const taprootAddressModeAtomDefinition = {
|
|
27
|
+
id: 'taprootAddressModeAtom',
|
|
28
|
+
type: 'atom',
|
|
29
|
+
factory: createTaprootAddressModeAtom,
|
|
30
|
+
dependencies: ['fusion'],
|
|
31
|
+
public: true,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default taprootAddressModeAtomDefinition
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { pickBy, filterAsync } from '@exodus/basic-utils'
|
|
2
|
-
import lodash from 'lodash'
|
|
2
|
+
import lodash from 'lodash'
|
|
3
3
|
import assert from 'minimalistic-assert'
|
|
4
4
|
|
|
5
5
|
const { isEmpty } = lodash
|
|
@@ -313,10 +313,11 @@ class AssetClientInterface {
|
|
|
313
313
|
})
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
-
getUnusedAddressIndexes = async ({ assetName, walletAccount }) => {
|
|
316
|
+
getUnusedAddressIndexes = async ({ assetName, walletAccount, highestUnusedIndexes }) => {
|
|
317
317
|
return this.addressProvider.getUnusedAddressIndexes({
|
|
318
318
|
assetName,
|
|
319
319
|
walletAccount: await this.#getWalletAccount(walletAccount),
|
|
320
|
+
highestUnusedIndexes,
|
|
320
321
|
})
|
|
321
322
|
}
|
|
322
323
|
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import assetsClientInterfaceDefinition from './client/index.js'
|
|
2
2
|
import assetsPluginDefinition from './plugin/index.js'
|
|
3
3
|
import multiAddressModeAtomDefinition from './atoms/multi-address-mode.js'
|
|
4
|
+
import legacyAddressModeAtomDefinition from './atoms/legacy-address-mode.js'
|
|
5
|
+
import taprootAddressModeAtomDefinition from './atoms/taproot-address-mode.js'
|
|
4
6
|
import disabledPurposesAtomDefinition from './atoms/disabled-purposes.js'
|
|
5
7
|
import assetsApiDefinition from './api/index.js'
|
|
6
8
|
import assetModuleDefinition from './module/index.js'
|
|
@@ -19,6 +21,8 @@ const assets = ({ config = {} } = {}) => {
|
|
|
19
21
|
storage: { namespace: 'assetPreferences' },
|
|
20
22
|
config: config.multiAddressMode || {},
|
|
21
23
|
},
|
|
24
|
+
{ definition: legacyAddressModeAtomDefinition },
|
|
25
|
+
{ definition: taprootAddressModeAtomDefinition },
|
|
22
26
|
{ definition: assetsAtomDefinition },
|
|
23
27
|
{
|
|
24
28
|
definition: disabledPurposesAtomDefinition,
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import ExodusModule from '@exodus/module' // eslint-disable-line import/no-deprecated
|
|
2
1
|
import { omit } from '@exodus/basic-utils'
|
|
2
|
+
import assert from 'minimalistic-assert'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class AssetPreferences extends ExodusModule {
|
|
4
|
+
class AssetPreferences {
|
|
7
5
|
#disabledPurposesAtom
|
|
8
6
|
#multiAddressModeAtom
|
|
7
|
+
#legacyAddressModeAtom
|
|
8
|
+
#taprootAddressModeAtom
|
|
9
9
|
|
|
10
|
-
constructor({
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
constructor({
|
|
11
|
+
disabledPurposesAtom,
|
|
12
|
+
multiAddressModeAtom,
|
|
13
|
+
legacyAddressModeAtom,
|
|
14
|
+
taprootAddressModeAtom,
|
|
15
|
+
}) {
|
|
13
16
|
this.#disabledPurposesAtom = disabledPurposesAtom
|
|
14
17
|
this.#multiAddressModeAtom = multiAddressModeAtom
|
|
18
|
+
this.#legacyAddressModeAtom = legacyAddressModeAtom
|
|
19
|
+
this.#taprootAddressModeAtom = taprootAddressModeAtom
|
|
15
20
|
}
|
|
16
21
|
|
|
17
22
|
enableMultiAddressMode = ({ assetNames }) =>
|
|
@@ -26,6 +31,54 @@ class AssetPreferences extends ExodusModule {
|
|
|
26
31
|
disableMultiAddressMode = ({ assetNames }) =>
|
|
27
32
|
this.#multiAddressModeAtom.set((value) => omit(value, assetNames))
|
|
28
33
|
|
|
34
|
+
enableLegacyAddressMode = async ({ assetNames }) => {
|
|
35
|
+
assert(
|
|
36
|
+
assetNames.length === 1 && assetNames[0] === 'bitcoin',
|
|
37
|
+
'enableLegacyAddressMode only supports bitcoin'
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
await this.#legacyAddressModeAtom.set((value) => ({
|
|
41
|
+
...value,
|
|
42
|
+
...assetNames.reduce((acc, assetName) => {
|
|
43
|
+
acc[assetName] = true
|
|
44
|
+
return acc
|
|
45
|
+
}, {}),
|
|
46
|
+
}))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
disableLegacyAddressMode = async ({ assetNames }) => {
|
|
50
|
+
assert(
|
|
51
|
+
assetNames.length === 1 && assetNames[0] === 'bitcoin',
|
|
52
|
+
'disableLegacyAddressMode only supports bitcoin'
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
await this.#legacyAddressModeAtom.set((value) => omit(value, assetNames))
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
enableTaprootAddressMode = async ({ assetNames }) => {
|
|
59
|
+
assert(
|
|
60
|
+
assetNames.length === 1 && assetNames[0] === 'bitcoin',
|
|
61
|
+
'enableTaprootAddressMode only supports bitcoin'
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
await this.#taprootAddressModeAtom.set((value) => ({
|
|
65
|
+
...value,
|
|
66
|
+
...assetNames.reduce((acc, assetName) => {
|
|
67
|
+
acc[assetName] = true
|
|
68
|
+
return acc
|
|
69
|
+
}, {}),
|
|
70
|
+
}))
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
disableTaprootAddressMode = async ({ assetNames }) => {
|
|
74
|
+
assert(
|
|
75
|
+
assetNames.length === 1 && assetNames[0] === 'bitcoin',
|
|
76
|
+
'disableTaprootAddressMode only supports bitcoin'
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
await this.#taprootAddressModeAtom.set((value) => omit(value, assetNames))
|
|
80
|
+
}
|
|
81
|
+
|
|
29
82
|
disablePurpose = ({ assetName, purpose }) =>
|
|
30
83
|
this.#disabledPurposesAtom.set((value) => {
|
|
31
84
|
const assetValue = value[assetName] || []
|
|
@@ -52,10 +105,15 @@ class AssetPreferences extends ExodusModule {
|
|
|
52
105
|
}
|
|
53
106
|
|
|
54
107
|
const assetPreferencesDefinition = {
|
|
55
|
-
id:
|
|
108
|
+
id: 'assetPreferences',
|
|
56
109
|
type: 'module',
|
|
57
110
|
factory: (opts) => new AssetPreferences(opts),
|
|
58
|
-
dependencies: [
|
|
111
|
+
dependencies: [
|
|
112
|
+
'disabledPurposesAtom',
|
|
113
|
+
'multiAddressModeAtom',
|
|
114
|
+
'legacyAddressModeAtom',
|
|
115
|
+
'taprootAddressModeAtom',
|
|
116
|
+
],
|
|
59
117
|
public: true,
|
|
60
118
|
}
|
|
61
119
|
|
package/module/assets-module.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
CT_UPDATEABLE_PROPERTIES,
|
|
6
6
|
} from '@exodus/assets'
|
|
7
7
|
import { keyBy, mapValues, partition, pick, pickBy } from '@exodus/basic-utils'
|
|
8
|
-
import lodash from 'lodash'
|
|
8
|
+
import lodash from 'lodash'
|
|
9
9
|
import assert from 'minimalistic-assert'
|
|
10
10
|
|
|
11
11
|
import {
|
package/module/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/assets-feature",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.13.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Assets module, clients and apis",
|
|
6
6
|
"type": "module",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@exodus/assets": "^11.0.0",
|
|
37
|
-
"@exodus/atoms": "^
|
|
37
|
+
"@exodus/atoms": "^9.0.0",
|
|
38
38
|
"@exodus/basic-utils": "^3.0.1",
|
|
39
39
|
"@exodus/fetch": "^1.3.0",
|
|
40
|
-
"@exodus/
|
|
40
|
+
"@exodus/fusion-atoms": "^1.2.0",
|
|
41
41
|
"@exodus/timer": "^1.1.2",
|
|
42
42
|
"lodash": "^4.17.21",
|
|
43
43
|
"minimalistic-assert": "^1.0.1",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"reselect": "^3.0.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@exodus/available-assets": "^8.
|
|
48
|
+
"@exodus/available-assets": "^8.6.0",
|
|
49
49
|
"@exodus/bip44-constants": "^195.0.0",
|
|
50
50
|
"@exodus/bitcoin-meta": "^2.0.0",
|
|
51
51
|
"@exodus/bitcoin-plugin": "^1.0.3",
|
|
@@ -57,19 +57,19 @@
|
|
|
57
57
|
"@exodus/cosmos-plugin": "^1.0.0",
|
|
58
58
|
"@exodus/ethereum-lib": "^5.0.0",
|
|
59
59
|
"@exodus/ethereum-meta": "^2.0.0",
|
|
60
|
+
"@exodus/fusion-local": "^2.0.6",
|
|
60
61
|
"@exodus/keychain": "^6.9.1",
|
|
61
62
|
"@exodus/models": "^12.0.1",
|
|
62
63
|
"@exodus/osmosis-plugin": "^1.0.0",
|
|
63
64
|
"@exodus/public-key-provider": "^2.5.0",
|
|
64
|
-
"@exodus/public-key-store": "^1.2.2",
|
|
65
65
|
"@exodus/redux-dependency-injection": "^4.0.3",
|
|
66
|
-
"@exodus/storage-memory": "^2.2.
|
|
67
|
-
"@exodus/wallet-accounts": "^16.
|
|
66
|
+
"@exodus/storage-memory": "^2.2.1",
|
|
67
|
+
"@exodus/wallet-accounts": "^16.12.0",
|
|
68
68
|
"@exodus/wild-emitter": "^1.0.0",
|
|
69
69
|
"bip39": "^3.1.0",
|
|
70
70
|
"events": "^3.3.0",
|
|
71
71
|
"msw": "^2.0.0",
|
|
72
72
|
"redux": "^4.0.0"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "bad902c3b2bf0c642f82378bb183fb687caab356"
|
|
75
75
|
}
|
package/plugin/index.js
CHANGED
|
@@ -8,6 +8,8 @@ const createAssetsPlugin = ({
|
|
|
8
8
|
customTokensMonitor,
|
|
9
9
|
disabledPurposesAtom,
|
|
10
10
|
multiAddressModeAtom,
|
|
11
|
+
legacyAddressModeAtom,
|
|
12
|
+
taprootAddressModeAtom,
|
|
11
13
|
}) => {
|
|
12
14
|
const emitAssets = async () => {
|
|
13
15
|
const { value: assets } = await assetsAtom.get()
|
|
@@ -25,6 +27,8 @@ const createAssetsPlugin = ({
|
|
|
25
27
|
const observers = [
|
|
26
28
|
createAtomObserver({ atom: disabledPurposesAtom, port, event: 'disabledPurposes' }),
|
|
27
29
|
createAtomObserver({ atom: multiAddressModeAtom, port, event: 'multiAddressMode' }),
|
|
30
|
+
createAtomObserver({ atom: legacyAddressModeAtom, port, event: 'legacyAddressMode' }),
|
|
31
|
+
createAtomObserver({ atom: taprootAddressModeAtom, port, event: 'taprootAddressMode' }),
|
|
28
32
|
]
|
|
29
33
|
|
|
30
34
|
const subscribers = []
|
|
@@ -90,6 +94,8 @@ const assetsPluginDefinition = {
|
|
|
90
94
|
'customTokensMonitor?',
|
|
91
95
|
'disabledPurposesAtom',
|
|
92
96
|
'multiAddressModeAtom',
|
|
97
|
+
'legacyAddressModeAtom',
|
|
98
|
+
'taprootAddressModeAtom',
|
|
93
99
|
],
|
|
94
100
|
public: true,
|
|
95
101
|
}
|
package/redux/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import initialState from './initial-state.js'
|
|
2
|
-
import selectorDefinitions from './selectors/index.js'
|
|
1
|
+
import type initialState from './initial-state.js'
|
|
2
|
+
import type selectorDefinitions from './selectors/index.js'
|
|
3
3
|
|
|
4
4
|
declare const assetsReduxDefinition: {
|
|
5
5
|
id: 'assets'
|
package/redux/index.js
CHANGED
|
@@ -25,6 +25,14 @@ const assetsReduxDefinition = {
|
|
|
25
25
|
...state,
|
|
26
26
|
multiAddressMode: payload,
|
|
27
27
|
}),
|
|
28
|
+
legacyAddressMode: (state, payload) => ({
|
|
29
|
+
...state,
|
|
30
|
+
legacyAddressMode: payload,
|
|
31
|
+
}),
|
|
32
|
+
taprootAddressMode: (state, payload) => ({
|
|
33
|
+
...state,
|
|
34
|
+
taprootAddressMode: payload,
|
|
35
|
+
}),
|
|
28
36
|
disabledPurposes: (state, payload) => ({
|
|
29
37
|
...state,
|
|
30
38
|
disabledPurposes: payload,
|
package/redux/initial-state.js
CHANGED
package/redux/selectors/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { keyBy } from '@exodus/basic-utils'
|
|
2
2
|
import { createSelector } from 'reselect'
|
|
3
3
|
|
|
4
|
-
import lodash from 'lodash'
|
|
4
|
+
import lodash from 'lodash'
|
|
5
5
|
|
|
6
|
-
const { memoize } = lodash
|
|
6
|
+
const { memoize } = lodash // eslint-disable-line @exodus/basic-utils/prefer-basic-utils
|
|
7
7
|
|
|
8
8
|
// just a semantic alias for `data`
|
|
9
9
|
const allAssetsSelectorDefinition = {
|
|
@@ -67,6 +67,30 @@ const createMultiAddressModeSelectorDefinition = {
|
|
|
67
67
|
dependencies: [{ selector: 'multiAddressMode' }],
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
const createLegacyAddressModeSelectorDefinition = {
|
|
71
|
+
id: 'createLegacyAddressMode',
|
|
72
|
+
selectorFactory: (legacyAddressModeDataSelector) =>
|
|
73
|
+
memoize((assetName) =>
|
|
74
|
+
createSelector(
|
|
75
|
+
legacyAddressModeDataSelector,
|
|
76
|
+
(legacyAddressModeData) => legacyAddressModeData[assetName] || false
|
|
77
|
+
)
|
|
78
|
+
),
|
|
79
|
+
dependencies: [{ selector: 'legacyAddressMode' }],
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const createTaprootAddressModeSelectorDefinition = {
|
|
83
|
+
id: 'createTaprootAddressMode',
|
|
84
|
+
selectorFactory: (taprootAddressModeDataSelector) =>
|
|
85
|
+
memoize((assetName) =>
|
|
86
|
+
createSelector(
|
|
87
|
+
taprootAddressModeDataSelector,
|
|
88
|
+
(taprootAddressModeData) => taprootAddressModeData[assetName] || false
|
|
89
|
+
)
|
|
90
|
+
),
|
|
91
|
+
dependencies: [{ selector: 'taprootAddressMode' }],
|
|
92
|
+
}
|
|
93
|
+
|
|
70
94
|
const createDisabledPurposesSelectorDefinition = {
|
|
71
95
|
id: 'createDisabledPurposes',
|
|
72
96
|
selectorFactory: (disabledPurposesDataSelector) => {
|
|
@@ -91,6 +115,8 @@ const assetSelectors = [
|
|
|
91
115
|
getAssetFromTickerSelectorDefinition,
|
|
92
116
|
createMultiAddressModeSelectorDefinition,
|
|
93
117
|
createDisabledPurposesSelectorDefinition,
|
|
118
|
+
createLegacyAddressModeSelectorDefinition,
|
|
119
|
+
createTaprootAddressModeSelectorDefinition,
|
|
94
120
|
]
|
|
95
121
|
|
|
96
122
|
export default assetSelectors
|