@reown/appkit-core-react-native 0.0.0-canary-20240912195440
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/lib/commonjs/controllers/AccountController.js +59 -0
- package/lib/commonjs/controllers/AccountController.js.map +1 -0
- package/lib/commonjs/controllers/ApiController.js +332 -0
- package/lib/commonjs/controllers/ApiController.js.map +1 -0
- package/lib/commonjs/controllers/AssetController.js +34 -0
- package/lib/commonjs/controllers/AssetController.js.map +1 -0
- package/lib/commonjs/controllers/BlockchainApiController.js +45 -0
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -0
- package/lib/commonjs/controllers/ConnectionController.js +98 -0
- package/lib/commonjs/controllers/ConnectionController.js.map +1 -0
- package/lib/commonjs/controllers/ConnectorController.js +41 -0
- package/lib/commonjs/controllers/ConnectorController.js.map +1 -0
- package/lib/commonjs/controllers/EventsController.js +79 -0
- package/lib/commonjs/controllers/EventsController.js.map +1 -0
- package/lib/commonjs/controllers/ModalController.js +64 -0
- package/lib/commonjs/controllers/ModalController.js.map +1 -0
- package/lib/commonjs/controllers/NetworkController.js +65 -0
- package/lib/commonjs/controllers/NetworkController.js.map +1 -0
- package/lib/commonjs/controllers/OptionsController.js +63 -0
- package/lib/commonjs/controllers/OptionsController.js.map +1 -0
- package/lib/commonjs/controllers/PublicStateController.js +33 -0
- package/lib/commonjs/controllers/PublicStateController.js.map +1 -0
- package/lib/commonjs/controllers/RouterController.js +56 -0
- package/lib/commonjs/controllers/RouterController.js.map +1 -0
- package/lib/commonjs/controllers/SnackController.js +34 -0
- package/lib/commonjs/controllers/SnackController.js.map +1 -0
- package/lib/commonjs/controllers/ThemeController.js +32 -0
- package/lib/commonjs/controllers/ThemeController.js.map +1 -0
- package/lib/commonjs/index.js +146 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/utils/AssetUtil.js +37 -0
- package/lib/commonjs/utils/AssetUtil.js.map +1 -0
- package/lib/commonjs/utils/ConstantsUtil.js +14 -0
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -0
- package/lib/commonjs/utils/CoreHelperUtil.js +214 -0
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -0
- package/lib/commonjs/utils/EventUtil.js +25 -0
- package/lib/commonjs/utils/EventUtil.js.map +1 -0
- package/lib/commonjs/utils/FetchUtil.js +118 -0
- package/lib/commonjs/utils/FetchUtil.js.map +1 -0
- package/lib/commonjs/utils/RouterUtil.js +25 -0
- package/lib/commonjs/utils/RouterUtil.js.map +1 -0
- package/lib/commonjs/utils/StorageUtil.js +130 -0
- package/lib/commonjs/utils/StorageUtil.js.map +1 -0
- package/lib/commonjs/utils/TypeUtil.js +2 -0
- package/lib/commonjs/utils/TypeUtil.js.map +1 -0
- package/lib/module/controllers/AccountController.js +54 -0
- package/lib/module/controllers/AccountController.js.map +1 -0
- package/lib/module/controllers/ApiController.js +327 -0
- package/lib/module/controllers/ApiController.js.map +1 -0
- package/lib/module/controllers/AssetController.js +29 -0
- package/lib/module/controllers/AssetController.js.map +1 -0
- package/lib/module/controllers/BlockchainApiController.js +40 -0
- package/lib/module/controllers/BlockchainApiController.js.map +1 -0
- package/lib/module/controllers/ConnectionController.js +93 -0
- package/lib/module/controllers/ConnectionController.js.map +1 -0
- package/lib/module/controllers/ConnectorController.js +36 -0
- package/lib/module/controllers/ConnectorController.js.map +1 -0
- package/lib/module/controllers/EventsController.js +73 -0
- package/lib/module/controllers/EventsController.js.map +1 -0
- package/lib/module/controllers/ModalController.js +59 -0
- package/lib/module/controllers/ModalController.js.map +1 -0
- package/lib/module/controllers/NetworkController.js +60 -0
- package/lib/module/controllers/NetworkController.js.map +1 -0
- package/lib/module/controllers/OptionsController.js +58 -0
- package/lib/module/controllers/OptionsController.js.map +1 -0
- package/lib/module/controllers/PublicStateController.js +28 -0
- package/lib/module/controllers/PublicStateController.js.map +1 -0
- package/lib/module/controllers/RouterController.js +51 -0
- package/lib/module/controllers/RouterController.js.map +1 -0
- package/lib/module/controllers/SnackController.js +29 -0
- package/lib/module/controllers/SnackController.js.map +1 -0
- package/lib/module/controllers/ThemeController.js +27 -0
- package/lib/module/controllers/ThemeController.js.map +1 -0
- package/lib/module/index.js +23 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/utils/AssetUtil.js +31 -0
- package/lib/module/utils/AssetUtil.js.map +1 -0
- package/lib/module/utils/ConstantsUtil.js +8 -0
- package/lib/module/utils/ConstantsUtil.js.map +1 -0
- package/lib/module/utils/CoreHelperUtil.js +208 -0
- package/lib/module/utils/CoreHelperUtil.js.map +1 -0
- package/lib/module/utils/EventUtil.js +19 -0
- package/lib/module/utils/EventUtil.js.map +1 -0
- package/lib/module/utils/FetchUtil.js +111 -0
- package/lib/module/utils/FetchUtil.js.map +1 -0
- package/lib/module/utils/RouterUtil.js +19 -0
- package/lib/module/utils/RouterUtil.js.map +1 -0
- package/lib/module/utils/StorageUtil.js +122 -0
- package/lib/module/utils/StorageUtil.js.map +1 -0
- package/lib/module/utils/TypeUtil.js +2 -0
- package/lib/module/utils/TypeUtil.js.map +1 -0
- package/lib/typescript/controllers/AccountController.d.ts +25 -0
- package/lib/typescript/controllers/AccountController.d.ts.map +1 -0
- package/lib/typescript/controllers/ApiController.d.ts +37 -0
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -0
- package/lib/typescript/controllers/AssetController.d.ts +14 -0
- package/lib/typescript/controllers/AssetController.d.ts.map +1 -0
- package/lib/typescript/controllers/BlockchainApiController.d.ts +12 -0
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -0
- package/lib/typescript/controllers/ConnectionController.d.ts +47 -0
- package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -0
- package/lib/typescript/controllers/ConnectorController.d.ts +17 -0
- package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -0
- package/lib/typescript/controllers/EventsController.d.ts +18 -0
- package/lib/typescript/controllers/EventsController.d.ts.map +1 -0
- package/lib/typescript/controllers/ModalController.d.ts +17 -0
- package/lib/typescript/controllers/ModalController.d.ts.map +1 -0
- package/lib/typescript/controllers/NetworkController.d.ts +28 -0
- package/lib/typescript/controllers/NetworkController.d.ts.map +1 -0
- package/lib/typescript/controllers/OptionsController.d.ts +35 -0
- package/lib/typescript/controllers/OptionsController.d.ts.map +1 -0
- package/lib/typescript/controllers/PublicStateController.d.ts +12 -0
- package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -0
- package/lib/typescript/controllers/RouterController.d.ts +21 -0
- package/lib/typescript/controllers/RouterController.d.ts.map +1 -0
- package/lib/typescript/controllers/SnackController.d.ts +12 -0
- package/lib/typescript/controllers/SnackController.d.ts.map +1 -0
- package/lib/typescript/controllers/ThemeController.d.ts +12 -0
- package/lib/typescript/controllers/ThemeController.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +35 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/utils/AssetUtil.d.ts +7 -0
- package/lib/typescript/utils/AssetUtil.d.ts.map +1 -0
- package/lib/typescript/utils/ConstantsUtil.d.ts +8 -0
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -0
- package/lib/typescript/utils/CoreHelperUtil.d.ts +32 -0
- package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -0
- package/lib/typescript/utils/EventUtil.d.ts +5 -0
- package/lib/typescript/utils/EventUtil.d.ts.map +1 -0
- package/lib/typescript/utils/FetchUtil.d.ts +26 -0
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -0
- package/lib/typescript/utils/RouterUtil.d.ts +5 -0
- package/lib/typescript/utils/RouterUtil.d.ts.map +1 -0
- package/lib/typescript/utils/StorageUtil.d.ts +19 -0
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -0
- package/lib/typescript/utils/TypeUtil.d.ts +277 -0
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -0
- package/package.json +69 -0
- package/readme.md +9 -0
- package/src/controllers/AccountController.ts +80 -0
- package/src/controllers/ApiController.ts +360 -0
- package/src/controllers/AssetController.ts +38 -0
- package/src/controllers/BlockchainApiController.ts +43 -0
- package/src/controllers/ConnectionController.ts +147 -0
- package/src/controllers/ConnectorController.ts +50 -0
- package/src/controllers/EventsController.ts +79 -0
- package/src/controllers/ModalController.ts +64 -0
- package/src/controllers/NetworkController.ts +79 -0
- package/src/controllers/OptionsController.ts +89 -0
- package/src/controllers/PublicStateController.ts +37 -0
- package/src/controllers/RouterController.ts +84 -0
- package/src/controllers/SnackController.ts +36 -0
- package/src/controllers/ThemeController.ts +31 -0
- package/src/index.ts +57 -0
- package/src/utils/AssetUtil.ts +40 -0
- package/src/utils/ConstantsUtil.ts +11 -0
- package/src/utils/CoreHelperUtil.ts +249 -0
- package/src/utils/EventUtil.ts +22 -0
- package/src/utils/FetchUtil.ts +117 -0
- package/src/utils/RouterUtil.ts +18 -0
- package/src/utils/StorageUtil.ts +138 -0
- package/src/utils/TypeUtil.ts +342 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { subscribeKey as subKey } from 'valtio/utils';
|
|
2
|
+
import { proxy, ref } from 'valtio';
|
|
3
|
+
import type { Connector, ConnectorType } from '../utils/TypeUtil';
|
|
4
|
+
|
|
5
|
+
// -- Types --------------------------------------------- //
|
|
6
|
+
export interface ConnectorControllerState {
|
|
7
|
+
connectors: Connector[];
|
|
8
|
+
connectedConnector?: ConnectorType;
|
|
9
|
+
authLoading?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type StateKey = keyof ConnectorControllerState;
|
|
13
|
+
|
|
14
|
+
// -- State --------------------------------------------- //
|
|
15
|
+
const state = proxy<ConnectorControllerState>({
|
|
16
|
+
connectors: []
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// -- Controller ---------------------------------------- //
|
|
20
|
+
export const ConnectorController = {
|
|
21
|
+
state,
|
|
22
|
+
|
|
23
|
+
subscribeKey<K extends StateKey>(key: K, callback: (value: ConnectorControllerState[K]) => void) {
|
|
24
|
+
return subKey(state, key, callback);
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
setConnectors(connectors: ConnectorControllerState['connectors']) {
|
|
28
|
+
state.connectors = connectors.map(c => ref(c));
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
addConnector(connector: Connector) {
|
|
32
|
+
state.connectors.push(ref(connector));
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
getConnectors() {
|
|
36
|
+
return state.connectors;
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
getAuthConnector() {
|
|
40
|
+
return state.connectors.find(c => c.type === 'AUTH');
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
setConnectedConnector(connectorType: ConnectorControllerState['connectedConnector']) {
|
|
44
|
+
state.connectedConnector = connectorType;
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
setAuthLoading(loading: ConnectorControllerState['authLoading']) {
|
|
48
|
+
state.authLoading = loading;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { proxy, subscribe as sub } from 'valtio/vanilla';
|
|
3
|
+
import { ApiController } from './ApiController';
|
|
4
|
+
import { OptionsController } from './OptionsController';
|
|
5
|
+
import { CoreHelperUtil } from '../utils/CoreHelperUtil';
|
|
6
|
+
import { FetchUtil } from '../utils/FetchUtil';
|
|
7
|
+
import type { Event } from '../utils/TypeUtil';
|
|
8
|
+
|
|
9
|
+
// -- Helpers ------------------------------------------- //
|
|
10
|
+
const baseUrl = CoreHelperUtil.getAnalyticsUrl();
|
|
11
|
+
const api = new FetchUtil({ baseUrl });
|
|
12
|
+
const excluded = ['MODAL_CREATED'];
|
|
13
|
+
|
|
14
|
+
// -- Types --------------------------------------------- //
|
|
15
|
+
export interface EventsControllerState {
|
|
16
|
+
timestamp: number;
|
|
17
|
+
data: Event;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// -- State --------------------------------------------- //
|
|
21
|
+
const state = proxy<EventsControllerState>({
|
|
22
|
+
timestamp: Date.now(),
|
|
23
|
+
data: {
|
|
24
|
+
type: 'track',
|
|
25
|
+
event: 'MODAL_CREATED' // just for init purposes
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// -- Controller ---------------------------------------- //
|
|
30
|
+
export const EventsController = {
|
|
31
|
+
state,
|
|
32
|
+
|
|
33
|
+
subscribe(callback: (newState: EventsControllerState) => void) {
|
|
34
|
+
return sub(state, () => callback(state));
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
_getApiHeaders() {
|
|
38
|
+
const { projectId, sdkType, sdkVersion } = OptionsController.state;
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
'x-project-id': projectId,
|
|
42
|
+
'x-sdk-type': sdkType,
|
|
43
|
+
'x-sdk-version': sdkVersion,
|
|
44
|
+
'User-Agent': `${Platform.OS}-${Platform.Version}`
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
async _sendAnalyticsEvent(data: EventsControllerState['data'], timestamp: number) {
|
|
49
|
+
if (excluded.includes(data.event)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
try {
|
|
54
|
+
await api.post({
|
|
55
|
+
path: '/e',
|
|
56
|
+
headers: this._getApiHeaders(),
|
|
57
|
+
body: {
|
|
58
|
+
eventId: CoreHelperUtil.getUUID(),
|
|
59
|
+
bundleId: CoreHelperUtil.getBundleId(),
|
|
60
|
+
timestamp,
|
|
61
|
+
props: data
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
} catch {
|
|
65
|
+
// Catch silently
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
async sendEvent(data: EventsControllerState['data']) {
|
|
70
|
+
const timestamp = Date.now();
|
|
71
|
+
state.timestamp = timestamp;
|
|
72
|
+
state.data = data;
|
|
73
|
+
await ApiController.state.prefetchPromise;
|
|
74
|
+
|
|
75
|
+
if (OptionsController.state.enableAnalytics) {
|
|
76
|
+
EventsController._sendAnalyticsEvent(data, timestamp);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { proxy } from 'valtio';
|
|
2
|
+
import { AccountController } from './AccountController';
|
|
3
|
+
import type { RouterControllerState } from './RouterController';
|
|
4
|
+
import { RouterController } from './RouterController';
|
|
5
|
+
import { PublicStateController } from './PublicStateController';
|
|
6
|
+
import { EventsController } from './EventsController';
|
|
7
|
+
import { ApiController } from './ApiController';
|
|
8
|
+
|
|
9
|
+
// -- Types --------------------------------------------- //
|
|
10
|
+
export interface ModalControllerState {
|
|
11
|
+
open: boolean;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ModalControllerArguments {
|
|
16
|
+
open: {
|
|
17
|
+
view?: RouterControllerState['view'];
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// -- State --------------------------------------------- //
|
|
22
|
+
const state = proxy<ModalControllerState>({
|
|
23
|
+
open: false,
|
|
24
|
+
loading: false
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// -- Controller ---------------------------------------- //
|
|
28
|
+
export const ModalController = {
|
|
29
|
+
state,
|
|
30
|
+
|
|
31
|
+
async open(options?: ModalControllerArguments['open']) {
|
|
32
|
+
await ApiController.state.prefetchPromise;
|
|
33
|
+
const connected = AccountController.state.isConnected;
|
|
34
|
+
if (options?.view) {
|
|
35
|
+
RouterController.reset(options.view);
|
|
36
|
+
} else if (AccountController.state.isConnected) {
|
|
37
|
+
RouterController.reset('Account');
|
|
38
|
+
} else {
|
|
39
|
+
RouterController.reset('Connect');
|
|
40
|
+
}
|
|
41
|
+
state.open = true;
|
|
42
|
+
PublicStateController.set({ open: true });
|
|
43
|
+
EventsController.sendEvent({
|
|
44
|
+
type: 'track',
|
|
45
|
+
event: 'MODAL_OPEN',
|
|
46
|
+
properties: { connected }
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
close() {
|
|
51
|
+
const connected = AccountController.state.isConnected;
|
|
52
|
+
state.open = false;
|
|
53
|
+
PublicStateController.set({ open: false });
|
|
54
|
+
EventsController.sendEvent({
|
|
55
|
+
type: 'track',
|
|
56
|
+
event: 'MODAL_CLOSE',
|
|
57
|
+
properties: { connected }
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
setLoading(loading: ModalControllerState['loading']) {
|
|
62
|
+
state.loading = loading;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { proxy, ref } from 'valtio';
|
|
2
|
+
import type { CaipNetwork, CaipNetworkId } from '../utils/TypeUtil';
|
|
3
|
+
import { PublicStateController } from './PublicStateController';
|
|
4
|
+
|
|
5
|
+
// -- Types --------------------------------------------- //
|
|
6
|
+
export interface NetworkControllerClient {
|
|
7
|
+
switchCaipNetwork: (network: NetworkControllerState['caipNetwork']) => Promise<void>;
|
|
8
|
+
getApprovedCaipNetworksData: () => Promise<{
|
|
9
|
+
approvedCaipNetworkIds: NetworkControllerState['approvedCaipNetworkIds'];
|
|
10
|
+
supportsAllNetworks: NetworkControllerState['supportsAllNetworks'];
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface NetworkControllerState {
|
|
15
|
+
supportsAllNetworks: boolean;
|
|
16
|
+
isDefaultCaipNetwork: boolean;
|
|
17
|
+
_client?: NetworkControllerClient;
|
|
18
|
+
caipNetwork?: CaipNetwork;
|
|
19
|
+
requestedCaipNetworks?: CaipNetwork[];
|
|
20
|
+
approvedCaipNetworkIds?: CaipNetworkId[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// -- State --------------------------------------------- //
|
|
24
|
+
const state = proxy<NetworkControllerState>({
|
|
25
|
+
supportsAllNetworks: true,
|
|
26
|
+
isDefaultCaipNetwork: false
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// -- Controller ---------------------------------------- //
|
|
30
|
+
export const NetworkController = {
|
|
31
|
+
state,
|
|
32
|
+
|
|
33
|
+
_getClient() {
|
|
34
|
+
if (!state._client) {
|
|
35
|
+
throw new Error('NetworkController client not set');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return state._client;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
setClient(client: NetworkControllerClient) {
|
|
42
|
+
state._client = ref(client);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
setCaipNetwork(caipNetwork: NetworkControllerState['caipNetwork']) {
|
|
46
|
+
state.caipNetwork = caipNetwork;
|
|
47
|
+
PublicStateController.set({ selectedNetworkId: caipNetwork?.id });
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
setDefaultCaipNetwork(caipNetwork: NetworkControllerState['caipNetwork']) {
|
|
51
|
+
state.caipNetwork = caipNetwork;
|
|
52
|
+
state.isDefaultCaipNetwork = true;
|
|
53
|
+
PublicStateController.set({ selectedNetworkId: caipNetwork?.id });
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
setRequestedCaipNetworks(requestedNetworks: NetworkControllerState['requestedCaipNetworks']) {
|
|
57
|
+
state.requestedCaipNetworks = requestedNetworks;
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
async getApprovedCaipNetworksData() {
|
|
61
|
+
const data = await this._getClient().getApprovedCaipNetworksData();
|
|
62
|
+
state.supportsAllNetworks = data.supportsAllNetworks;
|
|
63
|
+
state.approvedCaipNetworkIds = data.approvedCaipNetworkIds;
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
async switchActiveNetwork(network: NetworkControllerState['caipNetwork']) {
|
|
67
|
+
await this._getClient().switchCaipNetwork(network);
|
|
68
|
+
state.caipNetwork = network;
|
|
69
|
+
PublicStateController.set({ selectedNetworkId: network?.id });
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
resetNetwork() {
|
|
73
|
+
if (!state.isDefaultCaipNetwork) {
|
|
74
|
+
state.caipNetwork = undefined;
|
|
75
|
+
}
|
|
76
|
+
state.approvedCaipNetworkIds = undefined;
|
|
77
|
+
state.supportsAllNetworks = true;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { proxy, ref } from 'valtio';
|
|
2
|
+
import type { CustomWallet, Metadata, ProjectId, SdkVersion, Tokens } from '../utils/TypeUtil';
|
|
3
|
+
|
|
4
|
+
// -- Types --------------------------------------------- //
|
|
5
|
+
export interface ClipboardClient {
|
|
6
|
+
setString: (value: string) => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface OptionsControllerState {
|
|
10
|
+
projectId: ProjectId;
|
|
11
|
+
_clipboardClient?: ClipboardClient;
|
|
12
|
+
includeWalletIds?: string[];
|
|
13
|
+
excludeWalletIds?: string[];
|
|
14
|
+
featuredWalletIds?: string[];
|
|
15
|
+
customWallets?: CustomWallet[];
|
|
16
|
+
tokens?: Tokens;
|
|
17
|
+
enableAnalytics?: boolean;
|
|
18
|
+
sdkType: string;
|
|
19
|
+
sdkVersion: SdkVersion;
|
|
20
|
+
metadata?: Metadata;
|
|
21
|
+
isSiweEnabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// -- State --------------------------------------------- //
|
|
25
|
+
const state = proxy<OptionsControllerState>({
|
|
26
|
+
projectId: '',
|
|
27
|
+
sdkType: 'appkit',
|
|
28
|
+
sdkVersion: 'react-native-wagmi-undefined'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// -- Controller ---------------------------------------- //
|
|
32
|
+
export const OptionsController = {
|
|
33
|
+
state,
|
|
34
|
+
|
|
35
|
+
setClipboardClient(client: ClipboardClient) {
|
|
36
|
+
state._clipboardClient = ref(client);
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
setProjectId(projectId: OptionsControllerState['projectId']) {
|
|
40
|
+
state.projectId = projectId;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
setIncludeWalletIds(includeWalletIds: OptionsControllerState['includeWalletIds']) {
|
|
44
|
+
state.includeWalletIds = includeWalletIds;
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
setExcludeWalletIds(excludeWalletIds: OptionsControllerState['excludeWalletIds']) {
|
|
48
|
+
state.excludeWalletIds = excludeWalletIds;
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
setFeaturedWalletIds(featuredWalletIds: OptionsControllerState['featuredWalletIds']) {
|
|
52
|
+
state.featuredWalletIds = featuredWalletIds;
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
setTokens(tokens: OptionsControllerState['tokens']) {
|
|
56
|
+
state.tokens = tokens;
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
setCustomWallets(customWallets: OptionsControllerState['customWallets']) {
|
|
60
|
+
state.customWallets = customWallets;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
setEnableAnalytics(enableAnalytics: OptionsControllerState['enableAnalytics']) {
|
|
64
|
+
state.enableAnalytics = enableAnalytics;
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
setSdkVersion(sdkVersion: OptionsControllerState['sdkVersion']) {
|
|
68
|
+
state.sdkVersion = sdkVersion;
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
setMetadata(metadata: OptionsControllerState['metadata']) {
|
|
72
|
+
state.metadata = metadata;
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
setIsSiweEnabled(isSiweEnabled: OptionsControllerState['isSiweEnabled']) {
|
|
76
|
+
state.isSiweEnabled = isSiweEnabled;
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
isClipboardAvailable() {
|
|
80
|
+
return !!state._clipboardClient;
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
copyToClipboard(value: string) {
|
|
84
|
+
const client = state._clipboardClient;
|
|
85
|
+
if (client) {
|
|
86
|
+
client.setString(value);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { proxy, subscribe as sub } from 'valtio';
|
|
2
|
+
import { subscribeKey as subKey } from 'valtio/utils';
|
|
3
|
+
import type { CaipNetworkId } from '../utils/TypeUtil.js';
|
|
4
|
+
|
|
5
|
+
// -- Types --------------------------------------------- //
|
|
6
|
+
export interface PublicStateControllerState {
|
|
7
|
+
open: boolean;
|
|
8
|
+
selectedNetworkId?: CaipNetworkId;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type StateKey = keyof PublicStateControllerState;
|
|
12
|
+
|
|
13
|
+
// -- State --------------------------------------------- //
|
|
14
|
+
const state = proxy<PublicStateControllerState>({
|
|
15
|
+
open: false,
|
|
16
|
+
selectedNetworkId: undefined
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// -- Controller ---------------------------------------- //
|
|
20
|
+
export const PublicStateController = {
|
|
21
|
+
state,
|
|
22
|
+
|
|
23
|
+
subscribe(callback: (newState: PublicStateControllerState) => void) {
|
|
24
|
+
return sub(state, () => callback(state));
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
subscribeKey<K extends StateKey>(
|
|
28
|
+
key: K,
|
|
29
|
+
callback: (value: PublicStateControllerState[K]) => void
|
|
30
|
+
) {
|
|
31
|
+
return subKey(state, key, callback);
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
set(newState: Partial<PublicStateControllerState>) {
|
|
35
|
+
Object.assign(state, { ...state, ...newState });
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { proxy } from 'valtio';
|
|
2
|
+
import type { WcWallet, CaipNetwork, Connector } from '../utils/TypeUtil';
|
|
3
|
+
|
|
4
|
+
// -- Types --------------------------------------------- //
|
|
5
|
+
export interface RouterControllerState {
|
|
6
|
+
view:
|
|
7
|
+
| 'Account'
|
|
8
|
+
| 'Connect'
|
|
9
|
+
| 'ConnectingWalletConnect'
|
|
10
|
+
| 'ConnectingExternal'
|
|
11
|
+
| 'Networks'
|
|
12
|
+
| 'SwitchNetwork'
|
|
13
|
+
| 'AllWallets'
|
|
14
|
+
| 'WhatIsAWallet'
|
|
15
|
+
| 'WhatIsANetwork'
|
|
16
|
+
| 'GetWallet'
|
|
17
|
+
| 'EmailVerifyDevice'
|
|
18
|
+
| 'EmailVerifyOtp'
|
|
19
|
+
| 'UpdateEmailWallet'
|
|
20
|
+
| 'UpdateEmailPrimaryOtp'
|
|
21
|
+
| 'UpdateEmailSecondaryOtp'
|
|
22
|
+
| 'UpgradeEmailWallet'
|
|
23
|
+
| 'ConnectingSiwe';
|
|
24
|
+
history: RouterControllerState['view'][];
|
|
25
|
+
data?: {
|
|
26
|
+
connector?: Connector;
|
|
27
|
+
wallet?: WcWallet;
|
|
28
|
+
network?: CaipNetwork;
|
|
29
|
+
email?: string;
|
|
30
|
+
newEmail?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// -- State --------------------------------------------- //
|
|
35
|
+
const state = proxy<RouterControllerState>({
|
|
36
|
+
view: 'Connect',
|
|
37
|
+
history: ['Connect']
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// -- Controller ---------------------------------------- //
|
|
41
|
+
export const RouterController = {
|
|
42
|
+
state,
|
|
43
|
+
|
|
44
|
+
push(view: RouterControllerState['view'], data?: RouterControllerState['data']) {
|
|
45
|
+
if (view !== state.view) {
|
|
46
|
+
state.view = view;
|
|
47
|
+
state.history.push(view);
|
|
48
|
+
state.data = data;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
reset(view: RouterControllerState['view']) {
|
|
53
|
+
state.view = view;
|
|
54
|
+
state.history = [view];
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
replace(view: RouterControllerState['view'], data?: RouterControllerState['data']) {
|
|
58
|
+
if (state.history.length > 1 && state.history.at(-1) !== view) {
|
|
59
|
+
state.view = view;
|
|
60
|
+
state.history[state.history.length - 1] = view;
|
|
61
|
+
state.data = data;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
goBack() {
|
|
66
|
+
if (state.history.length > 1) {
|
|
67
|
+
state.history.pop();
|
|
68
|
+
const [last] = state.history.slice(-1);
|
|
69
|
+
if (last) {
|
|
70
|
+
state.view = last;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
goBackToIndex(historyIndex: number) {
|
|
76
|
+
if (state.history.length > 1) {
|
|
77
|
+
state.history = state.history.slice(0, historyIndex + 1);
|
|
78
|
+
const [last] = state.history.slice(-1);
|
|
79
|
+
if (last) {
|
|
80
|
+
state.view = last;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { proxy } from 'valtio';
|
|
2
|
+
|
|
3
|
+
// -- Types --------------------------------------------- //
|
|
4
|
+
export interface SnackControllerState {
|
|
5
|
+
message: string;
|
|
6
|
+
variant: 'error' | 'success';
|
|
7
|
+
open: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// -- State --------------------------------------------- //
|
|
11
|
+
const state = proxy<SnackControllerState>({
|
|
12
|
+
message: '',
|
|
13
|
+
variant: 'success',
|
|
14
|
+
open: false
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// -- Controller ---------------------------------------- //
|
|
18
|
+
export const SnackController = {
|
|
19
|
+
state,
|
|
20
|
+
|
|
21
|
+
showSuccess(message: SnackControllerState['message']) {
|
|
22
|
+
state.message = message;
|
|
23
|
+
state.variant = 'success';
|
|
24
|
+
state.open = true;
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
showError(message: SnackControllerState['message']) {
|
|
28
|
+
state.message = message;
|
|
29
|
+
state.variant = 'error';
|
|
30
|
+
state.open = true;
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
hide() {
|
|
34
|
+
state.open = false;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { proxy, subscribe as sub } from 'valtio';
|
|
2
|
+
import type { ThemeMode, ThemeVariables } from '../utils/TypeUtil';
|
|
3
|
+
|
|
4
|
+
// -- Types --------------------------------------------- //
|
|
5
|
+
export interface ThemeControllerState {
|
|
6
|
+
themeMode: ThemeMode;
|
|
7
|
+
themeVariables: ThemeVariables;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// -- State --------------------------------------------- //
|
|
11
|
+
const state = proxy<ThemeControllerState>({
|
|
12
|
+
themeMode: 'dark',
|
|
13
|
+
themeVariables: {}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// -- Controller ---------------------------------------- //
|
|
17
|
+
export const ThemeController = {
|
|
18
|
+
state,
|
|
19
|
+
|
|
20
|
+
subscribe(callback: (newState: ThemeControllerState) => void) {
|
|
21
|
+
return sub(state, () => callback(state));
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
setThemeMode(themeMode: ThemeControllerState['themeMode']) {
|
|
25
|
+
state.themeMode = themeMode;
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
setThemeVariables(themeVariables: ThemeControllerState['themeVariables']) {
|
|
29
|
+
state.themeVariables = { ...state.themeVariables, ...themeVariables };
|
|
30
|
+
}
|
|
31
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// -- Controllers -------------------------------------------------------------
|
|
2
|
+
export { ModalController } from './controllers/ModalController';
|
|
3
|
+
export type { ModalControllerArguments, ModalControllerState } from './controllers/ModalController';
|
|
4
|
+
|
|
5
|
+
export { RouterController } from './controllers/RouterController';
|
|
6
|
+
export type { RouterControllerState } from './controllers/RouterController';
|
|
7
|
+
|
|
8
|
+
export { AccountController } from './controllers/AccountController';
|
|
9
|
+
export type { AccountControllerState } from './controllers/AccountController';
|
|
10
|
+
|
|
11
|
+
export { NetworkController } from './controllers/NetworkController';
|
|
12
|
+
export type {
|
|
13
|
+
NetworkControllerClient,
|
|
14
|
+
NetworkControllerState
|
|
15
|
+
} from './controllers/NetworkController';
|
|
16
|
+
|
|
17
|
+
export { ConnectionController } from './controllers/ConnectionController';
|
|
18
|
+
export type {
|
|
19
|
+
ConnectionControllerClient,
|
|
20
|
+
ConnectionControllerState
|
|
21
|
+
} from './controllers/ConnectionController';
|
|
22
|
+
|
|
23
|
+
export { ConnectorController } from './controllers/ConnectorController';
|
|
24
|
+
export type { ConnectorControllerState } from './controllers/ConnectorController';
|
|
25
|
+
|
|
26
|
+
export { SnackController } from './controllers/SnackController';
|
|
27
|
+
export type { SnackControllerState } from './controllers/SnackController';
|
|
28
|
+
|
|
29
|
+
export { ApiController } from './controllers/ApiController';
|
|
30
|
+
export type { ApiControllerState } from './controllers/ApiController';
|
|
31
|
+
|
|
32
|
+
export { AssetController } from './controllers/AssetController';
|
|
33
|
+
export type { AssetControllerState } from './controllers/AssetController';
|
|
34
|
+
|
|
35
|
+
export { ThemeController } from './controllers/ThemeController';
|
|
36
|
+
export type { ThemeControllerState } from './controllers/ThemeController';
|
|
37
|
+
|
|
38
|
+
export { OptionsController } from './controllers/OptionsController';
|
|
39
|
+
export type { OptionsControllerState } from './controllers/OptionsController';
|
|
40
|
+
|
|
41
|
+
export { PublicStateController } from './controllers/PublicStateController';
|
|
42
|
+
export type { PublicStateControllerState } from './controllers/PublicStateController';
|
|
43
|
+
|
|
44
|
+
export { BlockchainApiController } from './controllers/BlockchainApiController';
|
|
45
|
+
|
|
46
|
+
export { EventsController } from './controllers/EventsController';
|
|
47
|
+
export type { EventsControllerState } from './controllers/EventsController';
|
|
48
|
+
|
|
49
|
+
// -- Utils -------------------------------------------------------------------
|
|
50
|
+
export { AssetUtil } from './utils/AssetUtil';
|
|
51
|
+
export { ConstantsUtil } from './utils/ConstantsUtil';
|
|
52
|
+
export { CoreHelperUtil } from './utils/CoreHelperUtil';
|
|
53
|
+
export { StorageUtil } from './utils/StorageUtil';
|
|
54
|
+
export { EventUtil } from './utils/EventUtil';
|
|
55
|
+
export { RouterUtil } from './utils/RouterUtil';
|
|
56
|
+
|
|
57
|
+
export type * from './utils/TypeUtil';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { AssetController } from '../controllers/AssetController';
|
|
2
|
+
import type { CaipNetwork, Connector, WcWallet } from './TypeUtil';
|
|
3
|
+
|
|
4
|
+
export const AssetUtil = {
|
|
5
|
+
getWalletImage(wallet?: WcWallet) {
|
|
6
|
+
if (wallet?.image_url) {
|
|
7
|
+
return wallet?.image_url;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (wallet?.image_id) {
|
|
11
|
+
return AssetController.state.walletImages[wallet.image_id];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return undefined;
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
getNetworkImage(network?: CaipNetwork) {
|
|
18
|
+
if (network?.imageUrl) {
|
|
19
|
+
return network?.imageUrl;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (network?.imageId) {
|
|
23
|
+
return AssetController.state.networkImages[network.imageId];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return undefined;
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
getConnectorImage(connector?: Connector) {
|
|
30
|
+
if (connector?.imageUrl) {
|
|
31
|
+
return connector.imageUrl;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (connector?.imageId) {
|
|
35
|
+
return AssetController.state.connectorImages[connector.imageId];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
};
|