@xyo-network/react-chain-network 1.19.6 → 1.19.7
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/dist/browser/components/broadcast/CloseDrawerIconButton.d.ts +8 -0
- package/dist/browser/components/broadcast/CloseDrawerIconButton.d.ts.map +1 -0
- package/dist/browser/components/broadcast/Drawer.d.ts +9 -0
- package/dist/browser/components/broadcast/Drawer.d.ts.map +1 -0
- package/dist/browser/components/broadcast/details/Card.d.ts +7 -0
- package/dist/browser/components/broadcast/details/Card.d.ts.map +1 -0
- package/dist/browser/components/broadcast/details/SummaryStack.d.ts +11 -0
- package/dist/browser/components/broadcast/details/SummaryStack.d.ts.map +1 -0
- package/dist/browser/components/broadcast/details/index.d.ts +3 -0
- package/dist/browser/components/broadcast/details/index.d.ts.map +1 -0
- package/dist/browser/components/broadcast/helpers/formatEvents.d.ts +7 -0
- package/dist/browser/components/broadcast/helpers/formatEvents.d.ts.map +1 -0
- package/dist/browser/components/broadcast/helpers/index.d.ts +2 -0
- package/dist/browser/components/broadcast/helpers/index.d.ts.map +1 -0
- package/dist/browser/components/broadcast/index.d.ts +2 -0
- package/dist/browser/components/broadcast/index.d.ts.map +1 -0
- package/dist/browser/components/index.d.ts +1 -0
- package/dist/browser/components/index.d.ts.map +1 -1
- package/dist/browser/context/network/Provider.d.ts +2 -0
- package/dist/browser/context/network/Provider.d.ts.map +1 -1
- package/dist/browser/context/network/context.d.ts +6 -0
- package/dist/browser/context/network/context.d.ts.map +1 -1
- package/dist/browser/context/network/index.d.ts +1 -0
- package/dist/browser/context/network/index.d.ts.map +1 -1
- package/dist/browser/context/network/settings/defaultChainNetworkSettings.d.ts +3 -0
- package/dist/browser/context/network/settings/defaultChainNetworkSettings.d.ts.map +1 -0
- package/dist/browser/context/network/settings/index.d.ts +4 -0
- package/dist/browser/context/network/settings/index.d.ts.map +1 -0
- package/dist/browser/context/network/settings/types.d.ts +6 -0
- package/dist/browser/context/network/settings/types.d.ts.map +1 -0
- package/dist/browser/context/network/settings/useChainNetworkSettings.d.ts +7 -0
- package/dist/browser/context/network/settings/useChainNetworkSettings.d.ts.map +1 -0
- package/dist/browser/context/network/state.d.ts +3 -0
- package/dist/browser/context/network/state.d.ts.map +1 -1
- package/dist/browser/context/network/use.d.ts +2 -0
- package/dist/browser/context/network/use.d.ts.map +1 -1
- package/dist/browser/hooks/provider/UseViewerInPage.stories.d.ts +2 -4
- package/dist/browser/hooks/provider/UseViewerInPage.stories.d.ts.map +1 -1
- package/dist/browser/hooks/provider/index.d.ts +1 -0
- package/dist/browser/hooks/provider/index.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkCurrentBlock.d.ts +36 -24
- package/dist/browser/hooks/provider/useActiveNetworkCurrentBlock.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkRunner.d.ts +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkRunner.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useRpcBroadcastListener.d.ts +5 -0
- package/dist/browser/hooks/provider/useRpcBroadcastListener.d.ts.map +1 -0
- package/dist/browser/hooks/provider/useViewerInPage.d.ts +2 -2
- package/dist/browser/hooks/provider/useViewerInPage.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useViewerInWallet.d.ts +1 -1
- package/dist/browser/hooks/provider/useViewerInWallet.d.ts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.mjs +318 -43
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/model/BroadcastRpc.d.ts +20 -0
- package/dist/browser/model/BroadcastRpc.d.ts.map +1 -0
- package/dist/browser/model/index.d.ts +2 -0
- package/dist/browser/model/index.d.ts.map +1 -0
- package/package.json +13 -11
- package/src/components/broadcast/CloseDrawerIconButton.tsx +23 -0
- package/src/components/broadcast/Drawer.tsx +33 -0
- package/src/components/broadcast/details/Card.tsx +54 -0
- package/src/components/broadcast/details/SummaryStack.tsx +34 -0
- package/src/components/broadcast/details/index.ts +2 -0
- package/src/components/broadcast/helpers/formatEvents.ts +40 -0
- package/src/components/broadcast/helpers/index.ts +1 -0
- package/src/components/broadcast/index.ts +1 -0
- package/src/components/index.ts +1 -0
- package/src/context/network/Provider.tsx +8 -2
- package/src/context/network/index.ts +1 -0
- package/src/context/network/settings/defaultChainNetworkSettings.ts +5 -0
- package/src/context/network/settings/index.ts +3 -0
- package/src/context/network/settings/types.ts +7 -0
- package/src/context/network/settings/useChainNetworkSettings.ts +27 -0
- package/src/context/network/state.ts +4 -0
- package/src/hooks/provider/UseViewerInPage.stories.tsx +69 -14
- package/src/hooks/provider/index.ts +1 -0
- package/src/hooks/provider/useRpcBroadcastListener.ts +40 -0
- package/src/hooks/provider/useViewerInPage.ts +19 -6
- package/src/index.ts +1 -0
- package/src/model/BroadcastRpc.ts +24 -0
- package/src/model/index.ts +1 -0
package/dist/browser/index.mjs
CHANGED
|
@@ -1,9 +1,189 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
|
+
// src/components/broadcast/Drawer.tsx
|
|
5
|
+
import { Drawer, Stack as Stack3, Typography as Typography3 } from "@mui/material";
|
|
6
|
+
import React4, { useMemo } from "react";
|
|
7
|
+
|
|
8
|
+
// src/components/broadcast/CloseDrawerIconButton.tsx
|
|
9
|
+
import { Cancel } from "@mui/icons-material";
|
|
10
|
+
import { IconButton } from "@mui/material";
|
|
11
|
+
import React from "react";
|
|
12
|
+
var CloseDrawerIconButton = /* @__PURE__ */ __name(({ anchor, onClose }) => {
|
|
13
|
+
return /* @__PURE__ */ React.createElement(IconButton, {
|
|
14
|
+
onClick: /* @__PURE__ */ __name((e) => onClose?.(e, "backdropClick"), "onClick"),
|
|
15
|
+
size: "small",
|
|
16
|
+
sx: {
|
|
17
|
+
alignSelf: anchor === "right" ? "start" : "end",
|
|
18
|
+
top: 8,
|
|
19
|
+
right: anchor === "right" ? void 0 : 8,
|
|
20
|
+
left: anchor === "left" ? void 0 : 8
|
|
21
|
+
}
|
|
22
|
+
}, /* @__PURE__ */ React.createElement(Cancel, {
|
|
23
|
+
fontSize: "small"
|
|
24
|
+
}));
|
|
25
|
+
}, "CloseDrawerIconButton");
|
|
26
|
+
|
|
27
|
+
// src/components/broadcast/details/Card.tsx
|
|
28
|
+
import { Card, Collapse, Stack as Stack2, Typography as Typography2 } from "@mui/material";
|
|
29
|
+
import { isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
30
|
+
import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
|
|
31
|
+
import React3, { useState } from "react";
|
|
32
|
+
|
|
33
|
+
// src/components/broadcast/details/SummaryStack.tsx
|
|
34
|
+
import { ArrowRight, CheckCircle, Warning } from "@mui/icons-material";
|
|
35
|
+
import { Icon, IconButton as IconButton2, Stack, Typography } from "@mui/material";
|
|
36
|
+
import { isDefined } from "@xylabs/sdk-js";
|
|
37
|
+
import React2 from "react";
|
|
38
|
+
var BroadcastedRpcCallDetailsSummaryStack = /* @__PURE__ */ __name(({ expanded, setExpanded, method, timestamp, hasResult, ...props }) => {
|
|
39
|
+
return /* @__PURE__ */ React2.createElement(Stack, {
|
|
40
|
+
direction: "row",
|
|
41
|
+
gap: 2,
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
justifyContent: "space-between",
|
|
44
|
+
...props
|
|
45
|
+
}, /* @__PURE__ */ React2.createElement(Stack, {
|
|
46
|
+
direction: "row",
|
|
47
|
+
gap: 2,
|
|
48
|
+
alignItems: "center"
|
|
49
|
+
}, /* @__PURE__ */ React2.createElement(IconButton2, {
|
|
50
|
+
size: "small",
|
|
51
|
+
onClick: /* @__PURE__ */ __name(() => setExpanded?.(!expanded), "onClick")
|
|
52
|
+
}, /* @__PURE__ */ React2.createElement(ArrowRight, {
|
|
53
|
+
fontSize: "small"
|
|
54
|
+
})), /* @__PURE__ */ React2.createElement(Typography, {
|
|
55
|
+
component: "span",
|
|
56
|
+
variant: "body2",
|
|
57
|
+
fontFamily: "monospace"
|
|
58
|
+
}, method), /* @__PURE__ */ React2.createElement(Typography, {
|
|
59
|
+
component: "span",
|
|
60
|
+
variant: "caption",
|
|
61
|
+
color: "text.secondary",
|
|
62
|
+
sx: {
|
|
63
|
+
opacity: 0.6
|
|
64
|
+
}
|
|
65
|
+
}, isDefined(timestamp) ? new Date(timestamp).toLocaleString() : "")), /* @__PURE__ */ React2.createElement(Icon, {
|
|
66
|
+
sx: {
|
|
67
|
+
justifySelf: "end"
|
|
68
|
+
}
|
|
69
|
+
}, hasResult ? /* @__PURE__ */ React2.createElement(CheckCircle, {
|
|
70
|
+
color: "success"
|
|
71
|
+
}) : /* @__PURE__ */ React2.createElement(Warning, {
|
|
72
|
+
color: "warning"
|
|
73
|
+
})));
|
|
74
|
+
}, "BroadcastedRpcCallDetailsSummaryStack");
|
|
75
|
+
|
|
76
|
+
// src/components/broadcast/details/Card.tsx
|
|
77
|
+
var BroadcastedRpcCallDetails = /* @__PURE__ */ __name(({ rpcRequestResponsePairs }) => {
|
|
78
|
+
const [expanded, setExpanded] = useState(false);
|
|
79
|
+
if (!rpcRequestResponsePairs) return null;
|
|
80
|
+
const { request, result, source } = rpcRequestResponsePairs;
|
|
81
|
+
return /* @__PURE__ */ React3.createElement(Card, {
|
|
82
|
+
sx: {
|
|
83
|
+
p: 1
|
|
84
|
+
}
|
|
85
|
+
}, /* @__PURE__ */ React3.createElement(BroadcastedRpcCallDetailsSummaryStack, {
|
|
86
|
+
expanded,
|
|
87
|
+
hasResult: isDefined2(result),
|
|
88
|
+
method: request.rpcCall.method,
|
|
89
|
+
setExpanded,
|
|
90
|
+
timestamp: request.timestamp
|
|
91
|
+
}), /* @__PURE__ */ React3.createElement(Collapse, {
|
|
92
|
+
in: expanded
|
|
93
|
+
}, /* @__PURE__ */ React3.createElement(Stack2, {
|
|
94
|
+
direction: "column",
|
|
95
|
+
p: 1,
|
|
96
|
+
gap: 2,
|
|
97
|
+
width: 600
|
|
98
|
+
}, /* @__PURE__ */ React3.createElement(Typography2, {
|
|
99
|
+
variant: "body2"
|
|
100
|
+
}, "Source:", /* @__PURE__ */ React3.createElement(Typography2, {
|
|
101
|
+
variant: "caption",
|
|
102
|
+
component: "span",
|
|
103
|
+
fontFamily: "monospace",
|
|
104
|
+
sx: {
|
|
105
|
+
ml: 1
|
|
106
|
+
}
|
|
107
|
+
}, source)), /* @__PURE__ */ React3.createElement(Typography2, {
|
|
108
|
+
variant: "body2"
|
|
109
|
+
}, "Request:"), /* @__PURE__ */ React3.createElement(JsonViewerEx, {
|
|
110
|
+
value: request,
|
|
111
|
+
sx: {
|
|
112
|
+
maxHeight: 300,
|
|
113
|
+
overflow: "auto"
|
|
114
|
+
}
|
|
115
|
+
}), isDefined2(result) ? /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Typography2, {
|
|
116
|
+
variant: "body2"
|
|
117
|
+
}, "Result:"), /* @__PURE__ */ React3.createElement(JsonViewerEx, {
|
|
118
|
+
value: result,
|
|
119
|
+
sx: {
|
|
120
|
+
maxHeight: 300,
|
|
121
|
+
overflow: "auto"
|
|
122
|
+
}
|
|
123
|
+
})) : null)));
|
|
124
|
+
}, "BroadcastedRpcCallDetails");
|
|
125
|
+
|
|
126
|
+
// src/components/broadcast/helpers/formatEvents.ts
|
|
127
|
+
import { isJsonRpcRequest, isJsonRpcResponse } from "@metamask/utils";
|
|
128
|
+
import { isArray, isDefined as isDefined3 } from "@xylabs/sdk-js";
|
|
129
|
+
var formatEvents = /* @__PURE__ */ __name((events) => {
|
|
130
|
+
if (!isArray(events) || events.length === 0) return {};
|
|
131
|
+
const parseRpcCall = /* @__PURE__ */ __name((acc2, event) => {
|
|
132
|
+
if (isJsonRpcResponse(event.rpcCall)) {
|
|
133
|
+
const castedEvent = event;
|
|
134
|
+
acc2[castedEvent.rpcCall.id].result = castedEvent;
|
|
135
|
+
} else if (isJsonRpcRequest(event.rpcCall)) {
|
|
136
|
+
const castedEvent = event;
|
|
137
|
+
acc2[castedEvent.rpcCall.id].request = castedEvent;
|
|
138
|
+
} else {
|
|
139
|
+
console.error("Unknown RPC call type", event);
|
|
140
|
+
}
|
|
141
|
+
acc2[event.rpcCall.id].source = event.source;
|
|
142
|
+
return acc2;
|
|
143
|
+
}, "parseRpcCall");
|
|
144
|
+
let acc = {};
|
|
145
|
+
for (const event of events) {
|
|
146
|
+
const { id } = event.rpcCall;
|
|
147
|
+
if (isDefined3(acc[id])) {
|
|
148
|
+
acc = parseRpcCall(acc, event);
|
|
149
|
+
} else {
|
|
150
|
+
acc[id] = {};
|
|
151
|
+
acc = parseRpcCall(acc, event);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return acc;
|
|
155
|
+
}, "formatEvents");
|
|
156
|
+
|
|
157
|
+
// src/components/broadcast/Drawer.tsx
|
|
158
|
+
var BroadcastedRpcCallsDrawer = /* @__PURE__ */ __name(({ anchor = "right", drawerTitle, events, onClose, ...props }) => {
|
|
159
|
+
const formattedEvents = useMemo(() => formatEvents(events), [
|
|
160
|
+
events
|
|
161
|
+
]);
|
|
162
|
+
return /* @__PURE__ */ React4.createElement(Drawer, {
|
|
163
|
+
anchor,
|
|
164
|
+
onClose,
|
|
165
|
+
...props
|
|
166
|
+
}, /* @__PURE__ */ React4.createElement(CloseDrawerIconButton, {
|
|
167
|
+
anchor,
|
|
168
|
+
onClose
|
|
169
|
+
}), /* @__PURE__ */ React4.createElement(Stack3, {
|
|
170
|
+
gap: 2,
|
|
171
|
+
sx: {
|
|
172
|
+
p: 3
|
|
173
|
+
}
|
|
174
|
+
}, /* @__PURE__ */ React4.createElement(Typography3, {
|
|
175
|
+
variant: "h6"
|
|
176
|
+
}, drawerTitle ?? "Broadcasted RPC Calls"), Object.entries(formattedEvents ?? {}).map(([id, broadcastedRpcCall]) => {
|
|
177
|
+
return /* @__PURE__ */ React4.createElement(BroadcastedRpcCallDetails, {
|
|
178
|
+
key: id,
|
|
179
|
+
rpcRequestResponsePairs: broadcastedRpcCall
|
|
180
|
+
});
|
|
181
|
+
})));
|
|
182
|
+
}, "BroadcastedRpcCallsDrawer");
|
|
183
|
+
|
|
4
184
|
// src/components/menu/Avatar.tsx
|
|
5
185
|
import { Avatar } from "@mui/material";
|
|
6
|
-
import
|
|
186
|
+
import React7 from "react";
|
|
7
187
|
|
|
8
188
|
// src/context/network/context.ts
|
|
9
189
|
import { createContextEx } from "@xylabs/react-shared";
|
|
@@ -12,12 +192,42 @@ var ChainNetworkContext = createContextEx();
|
|
|
12
192
|
// src/context/network/Provider.tsx
|
|
13
193
|
import { ErrorRender } from "@xylabs/react-error";
|
|
14
194
|
import { usePromise } from "@xylabs/react-promise";
|
|
15
|
-
import { isDefined } from "@xylabs/sdk-js";
|
|
195
|
+
import { isDefined as isDefined4 } from "@xylabs/sdk-js";
|
|
16
196
|
import { MainNetwork } from "@xyo-network/xl1-sdk";
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
197
|
+
import React5, { useCallback as useCallback2, useMemo as useMemo2, useState as useState3 } from "react";
|
|
198
|
+
|
|
199
|
+
// src/context/network/settings/defaultChainNetworkSettings.ts
|
|
200
|
+
import { LocalNetwork } from "@xyo-network/xl1-sdk";
|
|
201
|
+
var defaultChainNetworkSettings = {
|
|
202
|
+
[LocalNetwork.id]: {
|
|
203
|
+
proxy: true
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
// src/context/network/settings/useChainNetworkSettings.ts
|
|
208
|
+
import { useCallback, useState as useState2 } from "react";
|
|
209
|
+
var useChainNetworkSettings = /* @__PURE__ */ __name((defaults = defaultChainNetworkSettings) => {
|
|
210
|
+
const [networkSettings, setNetworkSettings] = useState2(defaults);
|
|
211
|
+
const updateNetworkSettings = useCallback((networkId, settings) => {
|
|
212
|
+
setNetworkSettings((prevSettings) => ({
|
|
213
|
+
...prevSettings,
|
|
214
|
+
[networkId]: {
|
|
215
|
+
...prevSettings[networkId],
|
|
216
|
+
...settings
|
|
217
|
+
}
|
|
218
|
+
}));
|
|
219
|
+
}, []);
|
|
220
|
+
return {
|
|
221
|
+
networkSettings,
|
|
222
|
+
updateNetworkSettings
|
|
223
|
+
};
|
|
224
|
+
}, "useChainNetworkSettings");
|
|
225
|
+
|
|
226
|
+
// src/context/network/Provider.tsx
|
|
227
|
+
var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork, networkSettings: networkSettingsProp = defaultChainNetworkSettings, networks, setActiveNetwork: setActiveNetworkExternal }) => {
|
|
228
|
+
const [activeNetwork, setActiveNetwork] = useState3();
|
|
229
|
+
const [error, setError] = useState3();
|
|
230
|
+
const { networkSettings, updateNetworkSettings } = useChainNetworkSettings(networkSettingsProp);
|
|
21
231
|
const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {
|
|
22
232
|
if (!networks) return;
|
|
23
233
|
const activeNetwork2 = await getActiveNetwork?.();
|
|
@@ -31,12 +241,12 @@ var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork,
|
|
|
31
241
|
}, [
|
|
32
242
|
networks
|
|
33
243
|
]);
|
|
34
|
-
const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] =
|
|
35
|
-
if (
|
|
244
|
+
const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState3(resolvedActiveNetwork);
|
|
245
|
+
if (isDefined4(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {
|
|
36
246
|
setActiveNetwork(resolvedActiveNetwork);
|
|
37
247
|
setPreviousResolvedActiveNetwork(resolvedActiveNetwork);
|
|
38
248
|
}
|
|
39
|
-
const updateActiveNetwork =
|
|
249
|
+
const updateActiveNetwork = useCallback2((networkId) => {
|
|
40
250
|
setError(void 0);
|
|
41
251
|
const network = networks?.find((network2) => network2.id === networkId);
|
|
42
252
|
if (!network) {
|
|
@@ -49,22 +259,26 @@ var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork,
|
|
|
49
259
|
networks,
|
|
50
260
|
setActiveNetworkExternal
|
|
51
261
|
]);
|
|
52
|
-
const value =
|
|
262
|
+
const value = useMemo2(() => ({
|
|
53
263
|
activeNetwork,
|
|
54
264
|
networks,
|
|
55
265
|
provided: true,
|
|
56
266
|
updateActiveNetwork,
|
|
267
|
+
networkSettings,
|
|
268
|
+
updateNetworkSettings,
|
|
57
269
|
chainNetworkError: error ?? activeNetworkError
|
|
58
270
|
}), [
|
|
59
271
|
activeNetwork,
|
|
60
272
|
activeNetworkError,
|
|
61
273
|
error,
|
|
274
|
+
networkSettings,
|
|
62
275
|
networks,
|
|
63
|
-
updateActiveNetwork
|
|
276
|
+
updateActiveNetwork,
|
|
277
|
+
updateNetworkSettings
|
|
64
278
|
]);
|
|
65
|
-
return /* @__PURE__ */
|
|
279
|
+
return /* @__PURE__ */ React5.createElement(ChainNetworkContext, {
|
|
66
280
|
value
|
|
67
|
-
}, /* @__PURE__ */
|
|
281
|
+
}, /* @__PURE__ */ React5.createElement(ErrorRender, {
|
|
68
282
|
error: error ?? activeNetworkError,
|
|
69
283
|
scope: "ChainNetworkProvider"
|
|
70
284
|
}), children);
|
|
@@ -75,9 +289,9 @@ import { useContextEx } from "@xylabs/react-shared";
|
|
|
75
289
|
var useChainNetwork = /* @__PURE__ */ __name((required = true) => useContextEx(ChainNetworkContext, "ChainNetwork", required), "useChainNetwork");
|
|
76
290
|
|
|
77
291
|
// src/components/menu/Icon.tsx
|
|
78
|
-
import
|
|
292
|
+
import React6 from "react";
|
|
79
293
|
var NetworkIcon = /* @__PURE__ */ __name(({ icon, style, ...props }) => {
|
|
80
|
-
return /* @__PURE__ */
|
|
294
|
+
return /* @__PURE__ */ React6.createElement("span", {
|
|
81
295
|
// eslint-disable-next-line react-dom/no-dangerously-set-innerhtml
|
|
82
296
|
dangerouslySetInnerHTML: {
|
|
83
297
|
__html: icon ?? ""
|
|
@@ -94,14 +308,14 @@ var NetworkIcon = /* @__PURE__ */ __name(({ icon, style, ...props }) => {
|
|
|
94
308
|
|
|
95
309
|
// src/components/menu/Avatar.tsx
|
|
96
310
|
var NetworkAvatar = /* @__PURE__ */ __name(({ icon, iconStyles, name, sx, ...props }) => {
|
|
97
|
-
return /* @__PURE__ */
|
|
311
|
+
return /* @__PURE__ */ React7.createElement(Avatar, {
|
|
98
312
|
sx: {
|
|
99
313
|
backgroundColor: "white",
|
|
100
314
|
...sx
|
|
101
315
|
},
|
|
102
316
|
alt: name,
|
|
103
317
|
...props
|
|
104
|
-
}, /* @__PURE__ */
|
|
318
|
+
}, /* @__PURE__ */ React7.createElement(NetworkIcon, {
|
|
105
319
|
icon,
|
|
106
320
|
style: {
|
|
107
321
|
...iconStyles
|
|
@@ -110,7 +324,7 @@ var NetworkAvatar = /* @__PURE__ */ __name(({ icon, iconStyles, name, sx, ...pro
|
|
|
110
324
|
}, "NetworkAvatar");
|
|
111
325
|
var ActiveNetworkAvatar = /* @__PURE__ */ __name((props) => {
|
|
112
326
|
const { activeNetwork } = useChainNetwork();
|
|
113
|
-
return /* @__PURE__ */
|
|
327
|
+
return /* @__PURE__ */ React7.createElement(NetworkAvatar, {
|
|
114
328
|
icon: activeNetwork?.icon,
|
|
115
329
|
name: activeNetwork?.name,
|
|
116
330
|
...props
|
|
@@ -120,14 +334,14 @@ var ActiveNetworkAvatar = /* @__PURE__ */ __name((props) => {
|
|
|
120
334
|
// src/components/menu/MenuItem.tsx
|
|
121
335
|
import { ListItemText } from "@mui/material";
|
|
122
336
|
import { ActiveMenuItem } from "@xyo-network/react-chain-shared";
|
|
123
|
-
import
|
|
337
|
+
import React8 from "react";
|
|
124
338
|
var NetworkMenuItem = /* @__PURE__ */ __name(({ active, network, onClick, updateActiveNetwork, ...props }) => {
|
|
125
339
|
const handleClick = /* @__PURE__ */ __name((event) => {
|
|
126
340
|
if (network === void 0) throw new Error("Network is undefined");
|
|
127
341
|
updateActiveNetwork?.(network.id);
|
|
128
342
|
onClick?.(event);
|
|
129
343
|
}, "handleClick");
|
|
130
|
-
return /* @__PURE__ */
|
|
344
|
+
return /* @__PURE__ */ React8.createElement(ActiveMenuItem, {
|
|
131
345
|
title: network?.name,
|
|
132
346
|
disableRipple: true,
|
|
133
347
|
onClick: handleClick,
|
|
@@ -136,38 +350,38 @@ var NetworkMenuItem = /* @__PURE__ */ __name(({ active, network, onClick, update
|
|
|
136
350
|
py: 1
|
|
137
351
|
},
|
|
138
352
|
...props
|
|
139
|
-
}, /* @__PURE__ */
|
|
353
|
+
}, /* @__PURE__ */ React8.createElement(NetworkAvatar, {
|
|
140
354
|
icon: network?.icon,
|
|
141
355
|
name: network?.name,
|
|
142
356
|
sx: {
|
|
143
357
|
width: 30,
|
|
144
358
|
height: 30
|
|
145
359
|
}
|
|
146
|
-
}), /* @__PURE__ */
|
|
360
|
+
}), /* @__PURE__ */ React8.createElement(ListItemText, null, network?.name));
|
|
147
361
|
}, "NetworkMenuItem");
|
|
148
362
|
|
|
149
363
|
// src/components/status/Alert.tsx
|
|
150
364
|
import { Alert, AlertTitle, Button as Button2 } from "@mui/material";
|
|
151
|
-
import
|
|
365
|
+
import React10, { useMemo as useMemo3, useState as useState4 } from "react";
|
|
152
366
|
|
|
153
367
|
// src/components/status/Dialog.tsx
|
|
154
|
-
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, List, ListItem, Typography } from "@mui/material";
|
|
155
|
-
import
|
|
368
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, List, ListItem, Typography as Typography4 } from "@mui/material";
|
|
369
|
+
import React9 from "react";
|
|
156
370
|
var NetworkStatusDialog = /* @__PURE__ */ __name(({ updates, ...props }) => {
|
|
157
|
-
return /* @__PURE__ */
|
|
371
|
+
return /* @__PURE__ */ React9.createElement(Dialog, props, /* @__PURE__ */ React9.createElement(DialogTitle, null, "Recent Status Updates"), /* @__PURE__ */ React9.createElement(DialogContent, null, /* @__PURE__ */ React9.createElement(List, null, updates.map(({ start, end, update }) => /* @__PURE__ */ React9.createElement(ListItem, {
|
|
158
372
|
key: start + update,
|
|
159
373
|
sx: {
|
|
160
374
|
flexDirection: "column",
|
|
161
375
|
alignItems: "start",
|
|
162
376
|
pl: 0
|
|
163
377
|
}
|
|
164
|
-
}, /* @__PURE__ */
|
|
378
|
+
}, /* @__PURE__ */ React9.createElement(Typography4, null, update), /* @__PURE__ */ React9.createElement(Typography4, {
|
|
165
379
|
gutterBottom: true,
|
|
166
380
|
sx: {
|
|
167
381
|
opacity: 0.75,
|
|
168
382
|
fontSize: ".8333rem"
|
|
169
383
|
}
|
|
170
|
-
}, "Start:", " ", new Date(start).toLocaleString(), " ", /* @__PURE__ */
|
|
384
|
+
}, "Start:", " ", new Date(start).toLocaleString(), " ", /* @__PURE__ */ React9.createElement("br", null), "End:", " ", new Date(end).toLocaleString()))))), /* @__PURE__ */ React9.createElement(DialogActions, null, /* @__PURE__ */ React9.createElement(Button, {
|
|
171
385
|
onClick: /* @__PURE__ */ __name((e) => props.onClose?.(e, "backdropClick"), "onClick"),
|
|
172
386
|
color: "primary",
|
|
173
387
|
variant: "outlined"
|
|
@@ -176,9 +390,9 @@ var NetworkStatusDialog = /* @__PURE__ */ __name(({ updates, ...props }) => {
|
|
|
176
390
|
|
|
177
391
|
// src/components/status/Alert.tsx
|
|
178
392
|
var NetworkStatusAlert = /* @__PURE__ */ __name(({ status, ...props }) => {
|
|
179
|
-
const [open, setOpen] =
|
|
393
|
+
const [open, setOpen] = useState4(false);
|
|
180
394
|
const handleClose = /* @__PURE__ */ __name(() => setOpen(false), "handleClose");
|
|
181
|
-
const severity =
|
|
395
|
+
const severity = useMemo3(() => {
|
|
182
396
|
if (!status) return;
|
|
183
397
|
switch (status.state) {
|
|
184
398
|
case "online": {
|
|
@@ -197,15 +411,15 @@ var NetworkStatusAlert = /* @__PURE__ */ __name(({ status, ...props }) => {
|
|
|
197
411
|
}, [
|
|
198
412
|
status
|
|
199
413
|
]);
|
|
200
|
-
return /* @__PURE__ */
|
|
414
|
+
return /* @__PURE__ */ React10.createElement(Alert, {
|
|
201
415
|
severity,
|
|
202
416
|
...props
|
|
203
|
-
}, /* @__PURE__ */
|
|
417
|
+
}, /* @__PURE__ */ React10.createElement(AlertTitle, null, status?.description), status?.updates && status.updates.length > 0 ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Button2, {
|
|
204
418
|
color: severity,
|
|
205
419
|
variant: "outlined",
|
|
206
420
|
size: "small",
|
|
207
421
|
onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick")
|
|
208
|
-
}, "Updates"), /* @__PURE__ */
|
|
422
|
+
}, "Updates"), /* @__PURE__ */ React10.createElement(NetworkStatusDialog, {
|
|
209
423
|
open,
|
|
210
424
|
onClose: handleClose,
|
|
211
425
|
updates: status.updates
|
|
@@ -213,22 +427,28 @@ var NetworkStatusAlert = /* @__PURE__ */ __name(({ status, ...props }) => {
|
|
|
213
427
|
}, "NetworkStatusAlert");
|
|
214
428
|
|
|
215
429
|
// src/components/status/NetworkStatus.tsx
|
|
216
|
-
import
|
|
430
|
+
import React11 from "react";
|
|
217
431
|
|
|
218
432
|
// src/hooks/provider/useActiveNetworkCurrentBlock.ts
|
|
219
433
|
import { useCurrentBlock, useViewerFromWallet as useViewerFromWallet2 } from "@xyo-network/react-chain-provider";
|
|
220
434
|
|
|
221
435
|
// src/hooks/provider/useViewerInPage.ts
|
|
222
|
-
import { isDefined as
|
|
436
|
+
import { isDefined as isDefined5, isUndefined } from "@xylabs/sdk-js";
|
|
223
437
|
import { useHttpRpcViewer, useViewerFromWallet } from "@xyo-network/react-chain-provider";
|
|
438
|
+
var shouldProxy = /* @__PURE__ */ __name((networkSettings, networkBootstrap) => {
|
|
439
|
+
return isDefined5(networkBootstrap) && isDefined5(networkSettings[networkBootstrap.id]) && networkSettings[networkBootstrap.id].proxy;
|
|
440
|
+
}, "shouldProxy");
|
|
224
441
|
var useViewerInPage = /* @__PURE__ */ __name((networkOverride) => {
|
|
225
442
|
let networkBootstrap;
|
|
226
|
-
const { activeNetwork } = useChainNetwork();
|
|
227
|
-
networkBootstrap =
|
|
443
|
+
const { activeNetwork, networkSettings } = useChainNetwork();
|
|
444
|
+
networkBootstrap = isDefined5(networkOverride) ? networkOverride : activeNetwork;
|
|
228
445
|
const httpRpcViewer = useHttpRpcViewer(networkBootstrap?.url);
|
|
229
446
|
const [walletRpcViewer] = useViewerFromWallet(networkBootstrap?.id);
|
|
230
447
|
if (isUndefined(walletRpcViewer)) return;
|
|
231
|
-
|
|
448
|
+
if (shouldProxy(networkSettings, networkBootstrap) && isDefined5(walletRpcViewer)) {
|
|
449
|
+
return walletRpcViewer;
|
|
450
|
+
}
|
|
451
|
+
return httpRpcViewer;
|
|
232
452
|
}, "useViewerInPage");
|
|
233
453
|
|
|
234
454
|
// src/hooks/provider/useActiveNetworkCurrentBlock.ts
|
|
@@ -263,6 +483,46 @@ var useActiveNetworkRunner = /* @__PURE__ */ __name(() => {
|
|
|
263
483
|
return runner;
|
|
264
484
|
}, "useActiveNetworkRunner");
|
|
265
485
|
|
|
486
|
+
// src/hooks/provider/useRpcBroadcastListener.ts
|
|
487
|
+
import { isString } from "@xylabs/sdk-js";
|
|
488
|
+
import { useEffect, useState as useState5 } from "react";
|
|
489
|
+
var useRpcBroadcastListener = /* @__PURE__ */ __name(() => {
|
|
490
|
+
const [events, setEvents] = useState5([]);
|
|
491
|
+
useEffect(() => {
|
|
492
|
+
const listener = /* @__PURE__ */ __name((e) => {
|
|
493
|
+
if ("detail" in e) {
|
|
494
|
+
const { detail } = e ?? {};
|
|
495
|
+
if (isString(detail)) {
|
|
496
|
+
try {
|
|
497
|
+
const parsedDetail = JSON.parse(detail);
|
|
498
|
+
const { data: rpcCall, source } = parsedDetail;
|
|
499
|
+
const broadcastedRpcCall = {
|
|
500
|
+
rpcCall,
|
|
501
|
+
source,
|
|
502
|
+
timestamp: e.timeStamp
|
|
503
|
+
};
|
|
504
|
+
setEvents((prev) => [
|
|
505
|
+
broadcastedRpcCall,
|
|
506
|
+
...prev
|
|
507
|
+
]);
|
|
508
|
+
} catch (err) {
|
|
509
|
+
console.error(err);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}, "listener");
|
|
514
|
+
globalThis.addEventListener("xyo:broadcast-rpc-request", listener);
|
|
515
|
+
globalThis.addEventListener("xyo:broadcast-rpc-response", listener);
|
|
516
|
+
return () => {
|
|
517
|
+
globalThis.removeEventListener("xyo:broadcast-rpc-request", listener);
|
|
518
|
+
globalThis.removeEventListener("xyo:broadcast-rpc-response", listener);
|
|
519
|
+
};
|
|
520
|
+
}, []);
|
|
521
|
+
return {
|
|
522
|
+
events
|
|
523
|
+
};
|
|
524
|
+
}, "useRpcBroadcastListener");
|
|
525
|
+
|
|
266
526
|
// src/hooks/provider/useViewerInWallet.ts
|
|
267
527
|
import { useHttpRpcViewer as useHttpRpcViewer2 } from "@xyo-network/react-chain-provider";
|
|
268
528
|
var useViewerInWallet = /* @__PURE__ */ __name(() => {
|
|
@@ -273,13 +533,13 @@ var useViewerInWallet = /* @__PURE__ */ __name(() => {
|
|
|
273
533
|
|
|
274
534
|
// src/hooks/status/usePollNetworkStatus.ts
|
|
275
535
|
import { delay, isUndefined as isUndefined2 } from "@xylabs/sdk-js";
|
|
276
|
-
import { useEffect, useState as
|
|
536
|
+
import { useEffect as useEffect2, useState as useState6 } from "react";
|
|
277
537
|
var STATUS_CHECK_INTERVAL = 1e4;
|
|
278
538
|
var usePollNetworkStatus = /* @__PURE__ */ __name(() => {
|
|
279
539
|
const network = useActiveNetworkNetwork();
|
|
280
|
-
const [networkStatus, setNetworkStatus] =
|
|
281
|
-
const [networkStatusError, setNetworkStatusError] =
|
|
282
|
-
|
|
540
|
+
const [networkStatus, setNetworkStatus] = useState6();
|
|
541
|
+
const [networkStatusError, setNetworkStatusError] = useState6();
|
|
542
|
+
useEffect2(() => {
|
|
283
543
|
let checkNetwork = true;
|
|
284
544
|
void (async () => {
|
|
285
545
|
if (isUndefined2(network)) return;
|
|
@@ -316,13 +576,24 @@ var validNetworkStates = /* @__PURE__ */ new Set([
|
|
|
316
576
|
var NetworkStatus = /* @__PURE__ */ __name(({ children, ...props }) => {
|
|
317
577
|
const [networkStatus] = usePollNetworkStatus();
|
|
318
578
|
const showStatus = networkStatus && !validNetworkStates.has(networkStatus.state);
|
|
319
|
-
return /* @__PURE__ */
|
|
579
|
+
return /* @__PURE__ */ React11.createElement(React11.Fragment, null, showStatus ? /* @__PURE__ */ React11.createElement(NetworkStatusAlert, {
|
|
320
580
|
status: networkStatus,
|
|
321
581
|
...props
|
|
322
582
|
}) : null, children);
|
|
323
583
|
}, "NetworkStatus");
|
|
584
|
+
|
|
585
|
+
// src/model/BroadcastRpc.ts
|
|
586
|
+
var BroadcastRpcRequestEventName = "xyo:broadcast-rpc-request";
|
|
587
|
+
var BroadcastRpcResponseEventName = "xyo:broadcast-rpc-response";
|
|
588
|
+
var defaultBroadcastConfig = {
|
|
589
|
+
request: true,
|
|
590
|
+
response: true
|
|
591
|
+
};
|
|
324
592
|
export {
|
|
325
593
|
ActiveNetworkAvatar,
|
|
594
|
+
BroadcastRpcRequestEventName,
|
|
595
|
+
BroadcastRpcResponseEventName,
|
|
596
|
+
BroadcastedRpcCallsDrawer,
|
|
326
597
|
ChainNetworkContext,
|
|
327
598
|
ChainNetworkProvider,
|
|
328
599
|
NetworkAvatar,
|
|
@@ -330,13 +601,17 @@ export {
|
|
|
330
601
|
NetworkMenuItem,
|
|
331
602
|
NetworkStatus,
|
|
332
603
|
NetworkStatusAlert,
|
|
604
|
+
defaultBroadcastConfig,
|
|
605
|
+
defaultChainNetworkSettings,
|
|
333
606
|
useActiveNetworkCurrentBlock,
|
|
334
607
|
useActiveNetworkCurrentBlockInPage,
|
|
335
608
|
useActiveNetworkCurrentBlockInWallet,
|
|
336
609
|
useActiveNetworkNetwork,
|
|
337
610
|
useActiveNetworkRunner,
|
|
338
611
|
useChainNetwork,
|
|
612
|
+
useChainNetworkSettings,
|
|
339
613
|
usePollNetworkStatus,
|
|
614
|
+
useRpcBroadcastListener,
|
|
340
615
|
useViewerInPage,
|
|
341
616
|
useViewerInWallet
|
|
342
617
|
};
|