forked from w3f-webops/polkadot-staking-dashboard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Providers.tsx
123 lines (119 loc) · 4.38 KB
/
Providers.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Copyright 2023 @paritytech/polkadot-staking-dashboard authors & contributors
// SPDX-License-Identifier: GPL-3.0-only
import { BalancesProvider } from 'contexts/Balances';
import { BondedProvider } from 'contexts/Bonded';
import {
ExtensionsProvider,
ExtensionAccountsProvider,
OverlayProvider,
LedgerAccountsProvider,
} from '@polkadot-cloud/react/providers';
import { ExtrinsicsProvider } from 'contexts/Extrinsics';
import { FastUnstakeProvider } from 'contexts/FastUnstake';
import { FiltersProvider } from 'contexts/Filters';
import { LedgerHardwareProvider } from 'contexts/Hardware/Ledger/LedgerHardware';
import { VaultAccountsProvider } from 'contexts/Hardware/Vault/VaultAccounts';
import { HelpProvider } from 'contexts/Help';
import { IdentitiesProvider } from 'contexts/Identities';
import { MenuProvider } from 'contexts/Menu';
import { MigrateProvider } from 'contexts/Migrate';
import { NetworkMetricsProvider } from 'contexts/NetworkMetrics';
import { PromptProvider } from 'contexts/Prompt';
import { PluginsProvider } from 'contexts/Plugins';
import { ActivePoolsProvider } from 'contexts/Pools/ActivePools';
import { BondedPoolsProvider } from 'contexts/Pools/BondedPools';
import { PoolMembersProvider } from 'contexts/Pools/PoolMembers';
import { PoolMembershipsProvider } from 'contexts/Pools/PoolMemberships';
import { PoolsConfigProvider } from 'contexts/Pools/PoolsConfig';
import { ProxiesProvider } from 'contexts/Proxies';
import { SetupProvider } from 'contexts/Setup';
import { StakingProvider } from 'contexts/Staking';
import { SubscanProvider } from 'contexts/Plugins/Subscan';
import { TooltipProvider } from 'contexts/Tooltip';
import { TransferOptionsProvider } from 'contexts/TransferOptions';
import { TxMetaProvider } from 'contexts/TxMeta';
import { UIProvider } from 'contexts/UI';
import { ValidatorsProvider } from 'contexts/Validators/ValidatorEntries';
import { FavoriteValidatorsProvider } from 'contexts/Validators/FavoriteValidators';
import { PayoutsProvider } from 'contexts/Payouts';
import { PolkawatchProvider } from 'contexts/Plugins/Polkawatch';
import { useNetwork } from 'contexts/Network';
import { APIProvider } from 'contexts/Api';
import { ThemedRouter } from 'Themes';
import type { AnyJson } from 'types';
import type { FC } from 'react';
import { withProviders } from 'library/Hooks';
import { OtherAccountsProvider } from 'contexts/Connect/OtherAccounts';
import { useActiveAccounts } from 'contexts/ActiveAccounts';
import { DappName } from 'consts';
import { ImportedAccountsProvider } from 'contexts/Connect/ImportedAccounts';
import { PoolPerformanceProvider } from 'contexts/Pools/PoolPerformance';
import { registerSaEvent } from 'Utils';
import { ExternalAccountsProvider } from 'contexts/Connect/ExternalAccounts';
// Embed providers from hook.
export const Providers = () => {
const {
network,
networkData: { ss58 },
} = useNetwork();
const { activeAccount, setActiveAccount } = useActiveAccounts();
// !! Provider order matters
const providers: (FC<AnyJson> | [FC<AnyJson>, AnyJson])[] = [
[APIProvider, { network }],
VaultAccountsProvider,
LedgerHardwareProvider,
ExtensionsProvider,
[
ExtensionAccountsProvider,
{
ss58,
network,
activeAccount,
setActiveAccount,
dappName: DappName,
// Successful extension enabled event.
onExtensionEnabled: (id: string) => {
registerSaEvent(`${network.toLowerCase()}_extension_connected`, {
id,
});
},
},
],
[LedgerAccountsProvider, { network }],
ExternalAccountsProvider,
OtherAccountsProvider,
ImportedAccountsProvider,
ProxiesProvider,
NetworkMetricsProvider,
HelpProvider,
PluginsProvider,
SubscanProvider,
PolkawatchProvider,
IdentitiesProvider,
BalancesProvider,
BondedProvider,
StakingProvider,
PoolsConfigProvider,
BondedPoolsProvider,
PoolMembershipsProvider,
PoolMembersProvider,
ActivePoolsProvider,
TransferOptionsProvider,
ValidatorsProvider,
FavoriteValidatorsProvider,
FastUnstakeProvider,
PayoutsProvider,
PoolPerformanceProvider,
UIProvider,
SetupProvider,
MenuProvider,
TooltipProvider,
TxMetaProvider,
ExtrinsicsProvider,
OverlayProvider,
PromptProvider,
MigrateProvider,
FiltersProvider,
];
return withProviders(providers, ThemedRouter);
};