Skip to content

Commit c1da199

Browse files
committed
feat: migrate clover from legacy to hub
1 parent 5438438 commit c1da199

File tree

12 files changed

+236
-51
lines changed

12 files changed

+236
-51
lines changed

wallets/provider-all/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as argentx from '@rango-dev/provider-argentx';
77
import * as bitget from '@rango-dev/provider-bitget';
88
import * as braavos from '@rango-dev/provider-braavos';
99
import * as brave from '@rango-dev/provider-brave';
10-
import * as clover from '@rango-dev/provider-clover';
10+
import { versions as clover } from '@rango-dev/provider-clover';
1111
import * as coin98 from '@rango-dev/provider-coin98';
1212
import * as coinbase from '@rango-dev/provider-coinbase';
1313
import * as cosmostation from '@rango-dev/provider-cosmostation';
@@ -119,7 +119,7 @@ export const allProviders = (options?: Options): VersionedProviders[] => {
119119
legacyProviderImportsToVersionsInterface(bitget),
120120
legacyProviderImportsToVersionsInterface(enkrypt),
121121
legacyProviderImportsToVersionsInterface(xdefi),
122-
legacyProviderImportsToVersionsInterface(clover),
122+
clover,
123123
legacyProviderImportsToVersionsInterface(safepal),
124124
legacyProviderImportsToVersionsInterface(brave),
125125
legacyProviderImportsToVersionsInterface(coin98),

wallets/provider-clover/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
"version": "0.41.1-next.0",
44
"license": "MIT",
55
"type": "module",
6-
"source": "./src/index.ts",
7-
"main": "./dist/index.js",
6+
"source": "./src/mod.ts",
7+
"main": "./dist/mod.js",
88
"exports": {
9-
".": "./dist/index.js"
9+
".": "./dist/mod.js"
1010
},
11-
"typings": "dist/index.d.ts",
11+
"typings": "dist/mod.d.ts",
1212
"files": [
1313
"dist",
1414
"src"
1515
],
1616
"scripts": {
17-
"build": "node ../../scripts/build/command.mjs --path wallets/provider-clover",
17+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-clover --inputs src/mod.ts",
1818
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
1919
"clean": "rimraf dist",
2020
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
@@ -30,4 +30,4 @@
3030
"publishConfig": {
3131
"access": "public"
3232
}
33-
}
33+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { type ProviderInfo } from '@rango-dev/wallets-core';
2+
3+
export const WALLET_ID = 'clover';
4+
5+
export const info: ProviderInfo = {
6+
name: 'Clover',
7+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/clover/icon.svg',
8+
extensions: {
9+
chrome:
10+
'https://chrome.google.com/webstore/detail/clover-wallet/nhnkbkgjikgcigadomkphalanndcapjk',
11+
brave:
12+
'https://chrome.google.com/webstore/detail/clover-wallet/nhnkbkgjikgcigadomkphalanndcapjk',
13+
homepage: 'https://wallet.clover.finance',
14+
},
15+
properties: [
16+
{
17+
name: 'detached',
18+
// if you are adding a new namespace, don't forget to also update `getWalletInfo`
19+
value: ['solana', 'evm'],
20+
},
21+
],
22+
};

wallets/provider-clover/src/helpers.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.

wallets/provider-clover/src/index.ts renamed to wallets/provider-clover/src/legacy/index.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
12
import type {
23
CanEagerConnect,
34
CanSwitchNetwork,
@@ -20,7 +21,8 @@ import {
2021
} from '@rango-dev/wallets-shared';
2122
import { evmBlockchains, isEvmBlockchain, solanaBlockchain } from 'rango-types';
2223

23-
import { clover as clover_instance, getNonEvmAccounts } from './helpers.js';
24+
import { clover as clover_instance, getSolanaAccounts } from '../utils.js';
25+
2426
import signer from './signer.js';
2527

2628
const WALLET = WalletTypes.CLOVER;
@@ -44,7 +46,7 @@ export const connect: Connect = async ({ instance, meta }) => {
4446
});
4547
}
4648

47-
const nonEvmResults = await getNonEvmAccounts(instance);
49+
const nonEvmResults = await getSolanaAccounts(instance);
4850
results = [...results, ...nonEvmResults];
4951

5052
return results;
@@ -118,3 +120,17 @@ export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
118120
supportedChains: [...evms, ...solana],
119121
};
120122
};
123+
124+
const legacyProvider: LegacyProviderInterface = {
125+
config,
126+
getInstance,
127+
connect,
128+
subscribe,
129+
canSwitchNetworkTo,
130+
getSigners,
131+
getWalletInfo,
132+
canEagerConnect,
133+
switchNetwork,
134+
};
135+
136+
export { legacyProvider };
File renamed without changes.
File renamed without changes.

wallets/provider-clover/src/mod.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { defineVersions } from '@rango-dev/wallets-core/utils';
2+
3+
import { legacyProvider } from './legacy/index.js';
4+
import { provider } from './provider.js';
5+
6+
const versions = defineVersions()
7+
.version('0.0.0', legacyProvider)
8+
.version('1.0.0', provider)
9+
.build();
10+
11+
export { versions };
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2+
3+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
4+
import { builders as commonBuilders } from '@rango-dev/wallets-core/namespaces/common';
5+
import { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';
6+
7+
import { WALLET_ID } from '../constants.js';
8+
import { evmClover } from '../utils.js';
9+
10+
const [changeAccountSubscriber, changeAccountCleanup] =
11+
actions.changeAccountSubscriber(evmClover);
12+
13+
const [changeChainSubscriber, changeChainCleanup] =
14+
actions.changeChainSubscriber(evmClover);
15+
16+
const connect = builders
17+
.connect()
18+
.action(actions.connect(evmClover))
19+
.before(changeAccountSubscriber)
20+
.before(changeChainSubscriber)
21+
.or(changeAccountCleanup)
22+
.or(changeChainCleanup)
23+
.build();
24+
25+
const disconnect = commonBuilders
26+
.disconnect<EvmActions>()
27+
.after(changeAccountCleanup)
28+
.after(changeChainCleanup)
29+
.build();
30+
31+
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
32+
.action(connect)
33+
.action(disconnect)
34+
.build();
35+
36+
export { evm };
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import type { CaipAccount } from '@rango-dev/wallets-core/namespaces/common';
2+
import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
3+
4+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
5+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
6+
import { builders as commonBuilders } from '@rango-dev/wallets-core/namespaces/common';
7+
import {
8+
builders,
9+
CAIP_NAMESPACE,
10+
CAIP_SOLANA_CHAIN_ID,
11+
} from '@rango-dev/wallets-core/namespaces/solana';
12+
import { CAIP } from '@rango-dev/wallets-core/utils';
13+
14+
import { WALLET_ID } from '../constants.js';
15+
import { solanaClover } from '../utils.js';
16+
17+
const connect = builders
18+
.connect()
19+
.action(async function () {
20+
const solanaInstance = solanaClover();
21+
const solanaAccounts = await solanaInstance.getAccount();
22+
const result = {
23+
accounts: [solanaAccounts],
24+
chainId: LegacyNetworks.SOLANA,
25+
};
26+
27+
const formatAccounts = result.accounts.map(
28+
(account) =>
29+
CAIP.AccountId.format({
30+
address: account,
31+
chainId: {
32+
namespace: CAIP_NAMESPACE,
33+
reference: CAIP_SOLANA_CHAIN_ID,
34+
},
35+
}) as CaipAccount
36+
);
37+
38+
return formatAccounts;
39+
})
40+
.build();
41+
42+
const disconnect = commonBuilders.disconnect<SolanaActions>().build();
43+
44+
const solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)
45+
.action(connect)
46+
.action(disconnect)
47+
.build();
48+
49+
export { solana };

0 commit comments

Comments
 (0)