@ethersphere/bee-dashboard 0.34.0 → 0.35.1
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/build/assets/__vite-browser-external-BmZ7Lxtg.js +2 -0
- package/build/assets/{download.browser-C9Uz7OzH.js → download.browser-BISIRUf5.js} +1 -1
- package/build/assets/{download.node-tVxxcrzZ.js → download.node-C7FKEca1.js} +1 -1
- package/build/assets/fs.node-DO9PavmO.js +2 -0
- package/build/assets/index-BmV9k6jK.js +116 -0
- package/build/assets/index-DMp5phAM.css +1 -0
- package/build/assets/vendor-ethers-BjcsqZe1.js +25 -0
- package/build/assets/{vendor-react-mui-CMfvLA_U.js → vendor-react-mui-Dv6xxk4a.js} +1 -1
- package/build/index.html +4 -4
- package/lib/{App-DJxgFkgf.js → App-BsgbFuqW.js} +663 -456
- package/lib/{App-CyZvPEkk.mjs → App-CtEEza9I.mjs} +663 -456
- package/lib/App.cjs.js +1 -1
- package/lib/App.css +51 -51
- package/lib/App.js +1 -1
- package/lib/components/StampExtensionModal.d.ts +10 -4
- package/lib/constants.d.ts +2 -0
- package/lib/{download.browser-Bp7NWws0.js → download.browser-BhXh2eCY.js} +1 -1
- package/lib/{download.browser-Cta85Yx2.mjs → download.browser-JHhkjxaR.mjs} +1 -1
- package/lib/{download.node-B-ryR03L.mjs → download.node-Bf2R_PzI.mjs} +1 -1
- package/lib/{download.node-C_IiKmHA.js → download.node-CzhxALxQ.js} +1 -1
- package/lib/{fs.node-l47yAJ14.mjs → fs.node-CR5kFsrm.mjs} +1 -1
- package/lib/{fs.node-DOrfMQwF.js → fs.node-DrM1ewLt.js} +1 -1
- package/lib/modules/filemanager/components/ConfirmModal/ConfirmModal.d.ts +1 -1
- package/lib/modules/filemanager/components/ExpiringNotificationModal/ExpiringNotificationModal.d.ts +4 -2
- package/lib/pages/files/AssetPreview.d.ts +1 -0
- package/lib/{upload.node-D_XLym_5.mjs → upload.node-BUOo237h.mjs} +3 -3
- package/lib/{upload.node-DUSvlJwc.js → upload.node-DRiLZjhW.js} +3 -3
- package/lib/utils/chain.d.ts +6 -0
- package/lib/utils/file.d.ts +11 -0
- package/lib/utils/index.d.ts +0 -7
- package/lib/utils/stamp.d.ts +8 -0
- package/package.json +1 -1
- package/build/assets/fs.node-B2ZMKqzu.js +0 -2
- package/build/assets/index-BTuZ_M-A.js +0 -116
- package/build/assets/index-CPiKID9h.css +0 -1
- package/build/assets/upload.node-W5QYw_5j.js +0 -2
- package/build/assets/vendor-ethers-DTkFbbYN.js +0 -16
- package/lib/modules/filemanager/utils/view.d.ts +0 -11
|
@@ -48875,6 +48875,8 @@ const BEE_DESKTOP_LATEST_RELEASE_PAGE = "https://github.com/ethersphere/bee-desk
|
|
|
48875
48875
|
const BEE_DESKTOP_LATEST_RELEASE_PAGE_API = "https://api.github.com/repos/ethersphere/bee-desktop/releases/latest";
|
|
48876
48876
|
const DEFAULT_BEE_API_HOST = "http://localhost:1633";
|
|
48877
48877
|
const DEFAULT_RPC_URL = "https://xdai.fairdatasociety.org";
|
|
48878
|
+
const MIN_STAMP_DEPTH = 17;
|
|
48879
|
+
const MAX_STAMP_DEPTH = 255;
|
|
48878
48880
|
class AuthError extends Error {
|
|
48879
48881
|
constructor() {
|
|
48880
48882
|
super("Bad API key");
|
|
@@ -68469,8 +68471,18 @@ function chainIdToName(chainId) {
|
|
|
68469
68471
|
function ethAddressString(address) {
|
|
68470
68472
|
return typeof address === "string" ? getAddress(address) : getAddress(address.toHex());
|
|
68471
68473
|
}
|
|
68474
|
+
class FixedIdJsonRpcProvider extends JsonRpcProvider {
|
|
68475
|
+
async _send(payload) {
|
|
68476
|
+
const results = await super._send(payload);
|
|
68477
|
+
const payloads = Array.isArray(payload) ? payload : [payload];
|
|
68478
|
+
return results.map((result, i2) => ({ ...result, id: payloads[i2]?.id ?? result.id }));
|
|
68479
|
+
}
|
|
68480
|
+
}
|
|
68472
68481
|
function newGnosisProvider(url) {
|
|
68473
|
-
return new
|
|
68482
|
+
return new FixedIdJsonRpcProvider(url, GnosisNetwork, { staticNetwork: true, batchMaxCount: 1 });
|
|
68483
|
+
}
|
|
68484
|
+
function newGnosisProviderForValidation(url) {
|
|
68485
|
+
return new FixedIdJsonRpcProvider(url, void 0, { batchMaxCount: 1 });
|
|
68474
68486
|
}
|
|
68475
68487
|
const initialValues$9 = {
|
|
68476
68488
|
beeApi: null,
|
|
@@ -68912,7 +68924,7 @@ const Warning = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
|
|
|
68912
68924
|
const Web = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
|
|
68913
68925
|
d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2m-5 14H4v-4h11zm0-5H4V9h11zm5 5h-4V9h4z"
|
|
68914
68926
|
}), "Web");
|
|
68915
|
-
const useStyles$
|
|
68927
|
+
const useStyles$D = makeStyles()((theme2) => ({
|
|
68916
68928
|
root: {
|
|
68917
68929
|
width: "100%",
|
|
68918
68930
|
padding: 0,
|
|
@@ -68938,7 +68950,7 @@ const useStyles$C = makeStyles()((theme2) => ({
|
|
|
68938
68950
|
}
|
|
68939
68951
|
}));
|
|
68940
68952
|
function ExpandableList({ children, label, level, defaultOpen, info }) {
|
|
68941
|
-
const { classes: classes2 } = useStyles$
|
|
68953
|
+
const { classes: classes2 } = useStyles$D();
|
|
68942
68954
|
const [open2, setOpen] = React.useState(Boolean(defaultOpen));
|
|
68943
68955
|
const handleClick = () => {
|
|
68944
68956
|
setOpen(!open2);
|
|
@@ -69013,7 +69025,7 @@ function requireInformationLineIcon() {
|
|
|
69013
69025
|
}
|
|
69014
69026
|
var InformationLineIconExports = requireInformationLineIcon();
|
|
69015
69027
|
const Info = /* @__PURE__ */ getDefaultExportFromCjs(InformationLineIconExports);
|
|
69016
|
-
const useStyles$
|
|
69028
|
+
const useStyles$C = makeStyles()((theme2) => ({
|
|
69017
69029
|
header: {
|
|
69018
69030
|
backgroundColor: theme2.palette.background.paper,
|
|
69019
69031
|
marginBottom: theme2.spacing(0.25),
|
|
@@ -69030,16 +69042,16 @@ const useStyles$B = makeStyles()((theme2) => ({
|
|
|
69030
69042
|
}
|
|
69031
69043
|
}));
|
|
69032
69044
|
function ExpandableListItem({ label, value, tooltip }) {
|
|
69033
|
-
const { classes: classes2 } = useStyles$
|
|
69045
|
+
const { classes: classes2 } = useStyles$C();
|
|
69034
69046
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemButton, { className: classes2.header, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", flexDirection: "row", alignItems: "center", width: "100%", children: [
|
|
69035
69047
|
label && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { flex: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", children: label }) }),
|
|
69036
|
-
value && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { flex: 1, textAlign: "right", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
|
|
69048
|
+
value && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { flex: 1, textAlign: "right", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", component: "div", children: [
|
|
69037
69049
|
value,
|
|
69038
69050
|
tooltip && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: tooltip, placement: "top", arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", className: classes2.copyValue, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Info, { strokeWidth: 1 }) }) })
|
|
69039
69051
|
] }) })
|
|
69040
69052
|
] }) });
|
|
69041
69053
|
}
|
|
69042
|
-
const useStyles$
|
|
69054
|
+
const useStyles$B = makeStyles()((theme2) => ({
|
|
69043
69055
|
wrapper: {
|
|
69044
69056
|
display: "flex",
|
|
69045
69057
|
flexDirection: "row",
|
|
@@ -69051,7 +69063,7 @@ const useStyles$A = makeStyles()((theme2) => ({
|
|
|
69051
69063
|
}
|
|
69052
69064
|
}));
|
|
69053
69065
|
function ExpandableListItemActions({ children }) {
|
|
69054
|
-
const { classes: classes2 } = useStyles$
|
|
69066
|
+
const { classes: classes2 } = useStyles$B();
|
|
69055
69067
|
if (Array.isArray(children)) {
|
|
69056
69068
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2.wrapper, children: children.filter((x) => x).map((a2, i2) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2.action, children: a2 }, i2)) });
|
|
69057
69069
|
}
|
|
@@ -69219,15 +69231,21 @@ function useClipboardCopy(value) {
|
|
|
69219
69231
|
tooltipCloseHandler
|
|
69220
69232
|
};
|
|
69221
69233
|
}
|
|
69222
|
-
const useStyles$
|
|
69234
|
+
const useStyles$A = makeStyles()((theme2) => ({
|
|
69223
69235
|
header: {
|
|
69224
69236
|
backgroundColor: theme2.palette.background.paper,
|
|
69225
69237
|
marginBottom: theme2.spacing(0.25),
|
|
69226
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
69227
|
-
wordBreak: "break-word"
|
|
69238
|
+
borderLeft: `${theme2.spacing(0.25)} solid rgba(0,0,0,0)`,
|
|
69239
|
+
wordBreak: "break-word",
|
|
69240
|
+
"&:hover": {
|
|
69241
|
+
backgroundColor: theme2.palette.background.paper
|
|
69242
|
+
},
|
|
69243
|
+
"&:focus-within": {
|
|
69244
|
+
backgroundColor: theme2.palette.background.paper
|
|
69245
|
+
}
|
|
69228
69246
|
},
|
|
69229
69247
|
headerOpen: {
|
|
69230
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
69248
|
+
borderLeft: `${theme2.spacing(0.25)} solid ${theme2.palette.primary.main}`
|
|
69231
69249
|
},
|
|
69232
69250
|
copyValue: {
|
|
69233
69251
|
cursor: "pointer",
|
|
@@ -69256,14 +69274,14 @@ const split = (s2) => {
|
|
|
69256
69274
|
return s2.match(/(0x|.{1,8})/gi) || [];
|
|
69257
69275
|
};
|
|
69258
69276
|
function ExpandableListItemKey({ label, value, expanded }) {
|
|
69259
|
-
const { classes: classes2 } = useStyles$
|
|
69277
|
+
const { classes: classes2 } = useStyles$A();
|
|
69260
69278
|
const [open2, setOpen] = React.useState(expanded || false);
|
|
69261
69279
|
const { copied, handleCopy, tooltipCloseHandler } = useClipboardCopy(value);
|
|
69262
69280
|
const toggleOpen = () => setOpen(!open2);
|
|
69263
69281
|
const splitValues = split(value);
|
|
69264
69282
|
const hasPrefix = isPrefixedHexString(value);
|
|
69265
69283
|
const spanText = `${hasPrefix ? `${splitValues[0]} ${splitValues[1]}` : splitValues[0]}[…]${splitValues[splitValues.length - 1]}`;
|
|
69266
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemButton, { className: `${classes2.header} ${open2 ? classes2.headerOpen : ""}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, direction: "column", justifyContent: "space-between", alignItems: "stretch", children: [
|
|
69284
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemButton, { className: `${classes2.header} ${open2 ? classes2.headerOpen : ""}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, direction: "column", justifyContent: "space-between", alignItems: "stretch", style: { width: "100%" }, children: [
|
|
69267
69285
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, direction: "row", justifyContent: "space-between", alignItems: "center", children: [
|
|
69268
69286
|
label && /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", component: "span", children: label }),
|
|
69269
69287
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", component: "span", children: [
|
|
@@ -69321,7 +69339,7 @@ function requirePulseLineIcon() {
|
|
|
69321
69339
|
}
|
|
69322
69340
|
var PulseLineIconExports = requirePulseLineIcon();
|
|
69323
69341
|
const Activity = /* @__PURE__ */ getDefaultExportFromCjs(PulseLineIconExports);
|
|
69324
|
-
const useStyles$
|
|
69342
|
+
const useStyles$z = makeStyles()((theme2) => ({
|
|
69325
69343
|
root: {
|
|
69326
69344
|
height: "100%"
|
|
69327
69345
|
},
|
|
@@ -69337,7 +69355,7 @@ const useStyles$y = makeStyles()((theme2) => ({
|
|
|
69337
69355
|
}
|
|
69338
69356
|
}));
|
|
69339
69357
|
function TroubleshootConnectionCard() {
|
|
69340
|
-
const { classes: classes2 } = useStyles$
|
|
69358
|
+
const { classes: classes2 } = useStyles$z();
|
|
69341
69359
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, direction: "column", justifyContent: "center", alignItems: "center", className: classes2.root, children: [
|
|
69342
69360
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { className: classes2.content, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h1", align: "center", children: "Uh oh, it looks like your node is not connected." }) }),
|
|
69343
69361
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { className: classes2.content, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { align: "center", children: [
|
|
@@ -69409,7 +69427,7 @@ function requireDownloadLineIcon() {
|
|
|
69409
69427
|
}
|
|
69410
69428
|
var DownloadLineIconExports = requireDownloadLineIcon();
|
|
69411
69429
|
const Download$1 = /* @__PURE__ */ getDefaultExportFromCjs(DownloadLineIconExports);
|
|
69412
|
-
const useStyles$
|
|
69430
|
+
const useStyles$y = makeStyles()((theme2) => ({
|
|
69413
69431
|
link: {
|
|
69414
69432
|
color: "#dd7700",
|
|
69415
69433
|
textDecoration: "underline",
|
|
@@ -69421,14 +69439,14 @@ const useStyles$x = makeStyles()((theme2) => ({
|
|
|
69421
69439
|
}
|
|
69422
69440
|
},
|
|
69423
69441
|
buttonSelected: {
|
|
69424
|
-
color:
|
|
69425
|
-
backgroundColor:
|
|
69442
|
+
color: theme2.palette.secondary.main,
|
|
69443
|
+
backgroundColor: "white",
|
|
69426
69444
|
"&:hover": {
|
|
69427
|
-
color:
|
|
69428
|
-
backgroundColor:
|
|
69445
|
+
color: "white",
|
|
69446
|
+
backgroundColor: theme2.palette.primary.main,
|
|
69429
69447
|
"@media (hover: none)": {
|
|
69430
|
-
color:
|
|
69431
|
-
backgroundColor:
|
|
69448
|
+
color: theme2.palette.secondary.main,
|
|
69449
|
+
backgroundColor: "white"
|
|
69432
69450
|
}
|
|
69433
69451
|
}
|
|
69434
69452
|
},
|
|
@@ -69447,7 +69465,7 @@ function WithdrawDepositModal({
|
|
|
69447
69465
|
action,
|
|
69448
69466
|
icon
|
|
69449
69467
|
}) {
|
|
69450
|
-
const { classes: classes2 } = useStyles$
|
|
69468
|
+
const { classes: classes2 } = useStyles$y();
|
|
69451
69469
|
const [open2, setOpen] = React.useState(false);
|
|
69452
69470
|
const [amount, setAmount] = React.useState("");
|
|
69453
69471
|
const [amountToken, setAmountToken] = React.useState(null);
|
|
@@ -71044,26 +71062,6 @@ function shortenText(text, length2 = 20, separator = "[…]") {
|
|
|
71044
71062
|
}
|
|
71045
71063
|
return `${text.slice(0, length2)}${separator}${text.slice(-length2)}`;
|
|
71046
71064
|
}
|
|
71047
|
-
const DEFAULT_POLLING_FREQUENCY = 1e3;
|
|
71048
|
-
const DEFAULT_STAMP_USABLE_TIMEOUT = 5 * 6e4;
|
|
71049
|
-
function waitUntilStampUsable(batchId, bee, options) {
|
|
71050
|
-
return waitForStamp(batchId, bee);
|
|
71051
|
-
}
|
|
71052
|
-
async function waitForStamp(batchId, bee, options) {
|
|
71053
|
-
const timeout3 = DEFAULT_STAMP_USABLE_TIMEOUT;
|
|
71054
|
-
const pollingFrequency = DEFAULT_POLLING_FREQUENCY;
|
|
71055
|
-
for (let i2 = 0; i2 < timeout3; i2 += pollingFrequency) {
|
|
71056
|
-
try {
|
|
71057
|
-
const stamp = await bee.getPostageBatch(batchId);
|
|
71058
|
-
if (stamp.usable) {
|
|
71059
|
-
return stamp;
|
|
71060
|
-
}
|
|
71061
|
-
} catch {
|
|
71062
|
-
}
|
|
71063
|
-
await sleepMs(pollingFrequency);
|
|
71064
|
-
}
|
|
71065
|
-
throw new Error("Wait until stamp usable timeout has been reached");
|
|
71066
|
-
}
|
|
71067
71065
|
function mergeAccounting(balances, settlements, uncashedAmounts) {
|
|
71068
71066
|
if (!balances || !settlements) return null;
|
|
71069
71067
|
const accounting = {};
|
|
@@ -71289,7 +71287,7 @@ const tabMap = {
|
|
|
71289
71287
|
FEEDS: 3,
|
|
71290
71288
|
STAKING: 4
|
|
71291
71289
|
};
|
|
71292
|
-
const useStyles$
|
|
71290
|
+
const useStyles$x = makeStyles()((theme2) => ({
|
|
71293
71291
|
root: {
|
|
71294
71292
|
flexGrow: 1,
|
|
71295
71293
|
marginBottom: theme2.spacing(4),
|
|
@@ -71303,7 +71301,7 @@ const useStyles$w = makeStyles()((theme2) => ({
|
|
|
71303
71301
|
}
|
|
71304
71302
|
}));
|
|
71305
71303
|
function AccountNavigation({ active }) {
|
|
71306
|
-
const { classes: classes2 } = useStyles$
|
|
71304
|
+
const { classes: classes2 } = useStyles$x();
|
|
71307
71305
|
const navigate = useNavigate();
|
|
71308
71306
|
const { nodeInfo } = React.useContext(Context$7);
|
|
71309
71307
|
function onChange(_event, newValue) {
|
|
@@ -71525,7 +71523,7 @@ function requireDownload2LineIcon() {
|
|
|
71525
71523
|
}
|
|
71526
71524
|
var Download2LineIconExports = requireDownload2LineIcon();
|
|
71527
71525
|
const DownloadIcon = /* @__PURE__ */ getDefaultExportFromCjs(Download2LineIconExports);
|
|
71528
|
-
const useStyles$
|
|
71526
|
+
const useStyles$w = makeStyles()(() => ({
|
|
71529
71527
|
button: {
|
|
71530
71528
|
height: "42px",
|
|
71531
71529
|
position: "relative",
|
|
@@ -71563,7 +71561,7 @@ function SwarmButton({
|
|
|
71563
71561
|
style: style2,
|
|
71564
71562
|
...other
|
|
71565
71563
|
}) {
|
|
71566
|
-
const { classes: classes2 } = useStyles$
|
|
71564
|
+
const { classes: classes2 } = useStyles$w();
|
|
71567
71565
|
function getIconColor() {
|
|
71568
71566
|
if (loading || disabled) {
|
|
71569
71567
|
return "rgba(0, 0, 0, 0.26)";
|
|
@@ -71622,8 +71620,47 @@ function Provider$6({ children }) {
|
|
|
71622
71620
|
}, [setIdentities]);
|
|
71623
71621
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Context$6.Provider, { value: { identities, setIdentities }, children });
|
|
71624
71622
|
}
|
|
71623
|
+
function validateDepthInput(depthInput, onError, onSuccess) {
|
|
71624
|
+
let validDepthInput = "0";
|
|
71625
|
+
if (!depthInput) {
|
|
71626
|
+
onError("Required field");
|
|
71627
|
+
} else {
|
|
71628
|
+
const depth = new BigNumber(depthInput);
|
|
71629
|
+
if (!depth.isInteger()) {
|
|
71630
|
+
onError("Depth must be an integer");
|
|
71631
|
+
} else if (depth.isLessThan(MIN_STAMP_DEPTH)) {
|
|
71632
|
+
onError(`Minimal depth is ${MIN_STAMP_DEPTH}`);
|
|
71633
|
+
} else if (depth.isGreaterThan(MAX_STAMP_DEPTH)) {
|
|
71634
|
+
onError(`Depth has to be at most ${MAX_STAMP_DEPTH}`);
|
|
71635
|
+
} else {
|
|
71636
|
+
onError("");
|
|
71637
|
+
validDepthInput = depthInput;
|
|
71638
|
+
}
|
|
71639
|
+
}
|
|
71640
|
+
onSuccess(validDepthInput);
|
|
71641
|
+
}
|
|
71642
|
+
const DEFAULT_POLLING_FREQUENCY = 1e3;
|
|
71643
|
+
const DEFAULT_STAMP_USABLE_TIMEOUT = 5 * 6e4;
|
|
71644
|
+
function waitUntilStampUsable(batchId, bee, options) {
|
|
71645
|
+
return waitForStamp(batchId, bee);
|
|
71646
|
+
}
|
|
71647
|
+
async function waitForStamp(batchId, bee, options) {
|
|
71648
|
+
const timeout3 = DEFAULT_STAMP_USABLE_TIMEOUT;
|
|
71649
|
+
const pollingFrequency = DEFAULT_POLLING_FREQUENCY;
|
|
71650
|
+
for (let i2 = 0; i2 < timeout3; i2 += pollingFrequency) {
|
|
71651
|
+
try {
|
|
71652
|
+
const stamp = await bee.getPostageBatch(batchId);
|
|
71653
|
+
if (stamp.usable) {
|
|
71654
|
+
return stamp;
|
|
71655
|
+
}
|
|
71656
|
+
} catch {
|
|
71657
|
+
}
|
|
71658
|
+
await sleepMs(pollingFrequency);
|
|
71659
|
+
}
|
|
71660
|
+
throw new Error("Wait until stamp usable timeout has been reached");
|
|
71661
|
+
}
|
|
71625
71662
|
function generateWallet() {
|
|
71626
|
-
const privateKey = randomBytes(PrivateKey.LENGTH).toString();
|
|
71663
|
+
const privateKey = new Bytes(randomBytes(PrivateKey.LENGTH)).toString();
|
|
71627
71664
|
return new Wallet(privateKey);
|
|
71628
71665
|
}
|
|
71629
71666
|
function persistIdentity(identities, identity2) {
|
|
@@ -71706,24 +71743,24 @@ function SwarmDialog({ children }) {
|
|
|
71706
71743
|
}
|
|
71707
71744
|
);
|
|
71708
71745
|
}
|
|
71709
|
-
const useStyles$
|
|
71746
|
+
const useStyles$v = makeStyles()((theme2) => ({
|
|
71710
71747
|
wrapper: {
|
|
71711
71748
|
padding: theme2.spacing(1),
|
|
71712
71749
|
cursor: "pointer"
|
|
71713
71750
|
}
|
|
71714
71751
|
}));
|
|
71715
71752
|
function CloseButton({ onClose }) {
|
|
71716
|
-
const { classes: classes2 } = useStyles$
|
|
71753
|
+
const { classes: classes2 } = useStyles$v();
|
|
71717
71754
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2.wrapper, onClick: onClose, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Close, {}) });
|
|
71718
71755
|
}
|
|
71719
|
-
const useStyles$
|
|
71756
|
+
const useStyles$u = makeStyles()(() => ({
|
|
71720
71757
|
text: {
|
|
71721
71758
|
color: "#606060",
|
|
71722
71759
|
fontWeight: "bold"
|
|
71723
71760
|
}
|
|
71724
71761
|
}));
|
|
71725
71762
|
function TitleWithClose({ children, onClose }) {
|
|
71726
|
-
const { classes: classes2 } = useStyles$
|
|
71763
|
+
const { classes: classes2 } = useStyles$u();
|
|
71727
71764
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: [
|
|
71728
71765
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: " " }),
|
|
71729
71766
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: classes2.text, align: "center", children }),
|
|
@@ -71864,7 +71901,7 @@ function requireClipboardLineIcon() {
|
|
|
71864
71901
|
}
|
|
71865
71902
|
var ClipboardLineIconExports = requireClipboardLineIcon();
|
|
71866
71903
|
const Clipboard = /* @__PURE__ */ getDefaultExportFromCjs(ClipboardLineIconExports);
|
|
71867
|
-
const useStyles$
|
|
71904
|
+
const useStyles$t = makeStyles()((theme2) => ({
|
|
71868
71905
|
wrapper: {
|
|
71869
71906
|
overflow: "scroll",
|
|
71870
71907
|
background: "#ffffff"
|
|
@@ -71882,17 +71919,17 @@ function prettifyString(string) {
|
|
|
71882
71919
|
}
|
|
71883
71920
|
}
|
|
71884
71921
|
function Code({ children, prettify }) {
|
|
71885
|
-
const { classes: classes2 } = useStyles$
|
|
71922
|
+
const { classes: classes2 } = useStyles$t();
|
|
71886
71923
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2.wrapper, children: /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: classes2.pre, children: prettify ? prettifyString(children) : children }) });
|
|
71887
71924
|
}
|
|
71888
|
-
const useStyles$
|
|
71925
|
+
const useStyles$s = makeStyles()(() => ({
|
|
71889
71926
|
wrapper: {
|
|
71890
71927
|
maxWidth: "100%"
|
|
71891
71928
|
}
|
|
71892
71929
|
}));
|
|
71893
71930
|
function ExportFeedDialog({ identity: identity2, onClose }) {
|
|
71894
71931
|
const { enqueueSnackbar } = useSnackbar();
|
|
71895
|
-
const { classes: classes2 } = useStyles$
|
|
71932
|
+
const { classes: classes2 } = useStyles$s();
|
|
71896
71933
|
function onDownload() {
|
|
71897
71934
|
FileSaver_minExports.saveAs(
|
|
71898
71935
|
new Blob([identity2.identity], {
|
|
@@ -74053,7 +74090,7 @@ function TextField2({ children, ...props }) {
|
|
|
74053
74090
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TextField$1, { ...fieldToTextField(props), children });
|
|
74054
74091
|
}
|
|
74055
74092
|
TextField2.displayName = "FormikMaterialUITextField";
|
|
74056
|
-
const useStyles$
|
|
74093
|
+
const useStyles$r = makeStyles()((theme2) => ({
|
|
74057
74094
|
field: {
|
|
74058
74095
|
background: theme2.palette.background.paper,
|
|
74059
74096
|
"& fieldset": {
|
|
@@ -74080,7 +74117,7 @@ function SwarmTextInput({
|
|
|
74080
74117
|
defaultValue,
|
|
74081
74118
|
placeholder
|
|
74082
74119
|
}) {
|
|
74083
|
-
const { classes: classes2 } = useStyles$
|
|
74120
|
+
const { classes: classes2 } = useStyles$r();
|
|
74084
74121
|
if (formik) {
|
|
74085
74122
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74086
74123
|
Field,
|
|
@@ -74094,7 +74131,7 @@ function SwarmTextInput({
|
|
|
74094
74131
|
variant: "filled",
|
|
74095
74132
|
className: classes2.field,
|
|
74096
74133
|
defaultValue: defaultValue || "",
|
|
74097
|
-
|
|
74134
|
+
slotProps: { input: { disableUnderline: true } },
|
|
74098
74135
|
placeholder
|
|
74099
74136
|
}
|
|
74100
74137
|
);
|
|
@@ -74110,12 +74147,12 @@ function SwarmTextInput({
|
|
|
74110
74147
|
className: classes2.field,
|
|
74111
74148
|
defaultValue: defaultValue || "",
|
|
74112
74149
|
onChange,
|
|
74113
|
-
|
|
74150
|
+
slotProps: { input: { disableUnderline: true } },
|
|
74114
74151
|
placeholder
|
|
74115
74152
|
}
|
|
74116
74153
|
);
|
|
74117
74154
|
}
|
|
74118
|
-
const useStyles$
|
|
74155
|
+
const useStyles$q = makeStyles()((theme2) => ({
|
|
74119
74156
|
textarea: {
|
|
74120
74157
|
width: "100%",
|
|
74121
74158
|
border: 0,
|
|
@@ -74131,7 +74168,7 @@ function ImportFeedDialog({ onClose }) {
|
|
|
74131
74168
|
const fileInputRef = React.useRef(null);
|
|
74132
74169
|
const { identities, setIdentities } = React.useContext(Context$6);
|
|
74133
74170
|
const { enqueueSnackbar } = useSnackbar();
|
|
74134
|
-
const { classes: classes2 } = useStyles$
|
|
74171
|
+
const { classes: classes2 } = useStyles$q();
|
|
74135
74172
|
async function onImport() {
|
|
74136
74173
|
const feed = await importIdentity(name, textareaValue);
|
|
74137
74174
|
if (feed) {
|
|
@@ -74248,7 +74285,7 @@ function AccountFeeds() {
|
|
|
74248
74285
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ExpandableListItemKey, { label: "Topic", value: NULL_TOPIC.toHex() }),
|
|
74249
74286
|
x.feedHash && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandableListItemKey, { label: "Feed hash", value: x.feedHash }),
|
|
74250
74287
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mt: 0.75, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ExpandableListItemActions, { children: [
|
|
74251
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SwarmButton, { onClick: () => viewFeed(x.uuid), iconType: Info, children: "View Feed Page" }),
|
|
74288
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SwarmButton, { onClick: () => viewFeed(x.uuid), iconType: Info, disabled: Boolean(!x.feedHash), children: "View Feed Page" }),
|
|
74252
74289
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SwarmButton, { onClick: () => onShowExport(x), iconType: DownloadIcon, children: "Export..." }),
|
|
74253
74290
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SwarmButton, { onClick: () => onShowDelete(x), iconType: Trash, children: "Delete..." })
|
|
74254
74291
|
] }) })
|
|
@@ -74487,7 +74524,7 @@ function requireTimerFlashLineIcon() {
|
|
|
74487
74524
|
}
|
|
74488
74525
|
var TimerFlashLineIconExports = requireTimerFlashLineIcon();
|
|
74489
74526
|
const TimerFlashLine = /* @__PURE__ */ getDefaultExportFromCjs(TimerFlashLineIconExports);
|
|
74490
|
-
const useStyles$
|
|
74527
|
+
const useStyles$p = makeStyles()((theme2) => ({
|
|
74491
74528
|
root: {
|
|
74492
74529
|
width: "100%",
|
|
74493
74530
|
padding: 0,
|
|
@@ -74516,7 +74553,7 @@ const useStyles$o = makeStyles()((theme2) => ({
|
|
|
74516
74553
|
}
|
|
74517
74554
|
}));
|
|
74518
74555
|
function ExpandableElement({ children, expandable, defaultOpen }) {
|
|
74519
|
-
const { classes: classes2 } = useStyles$
|
|
74556
|
+
const { classes: classes2 } = useStyles$p();
|
|
74520
74557
|
const [open2, setOpen] = React.useState(Boolean(defaultOpen));
|
|
74521
74558
|
const handleClick = () => {
|
|
74522
74559
|
setOpen(!open2);
|
|
@@ -74529,11 +74566,35 @@ function ExpandableElement({ children, expandable, defaultOpen }) {
|
|
|
74529
74566
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: open2, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: classes2.contentLevel12, children: expandable }) })
|
|
74530
74567
|
] });
|
|
74531
74568
|
}
|
|
74532
|
-
|
|
74569
|
+
const useStyles$o = makeStyles()((theme2) => ({
|
|
74570
|
+
buttonSelected: {
|
|
74571
|
+
color: "white",
|
|
74572
|
+
backgroundColor: theme2.palette.primary.main,
|
|
74573
|
+
"&:hover": {
|
|
74574
|
+
color: theme2.palette.secondary.main,
|
|
74575
|
+
backgroundColor: "white",
|
|
74576
|
+
"@media (hover: none)": {
|
|
74577
|
+
color: "white",
|
|
74578
|
+
backgroundColor: theme2.palette.primary.main
|
|
74579
|
+
}
|
|
74580
|
+
}
|
|
74581
|
+
},
|
|
74582
|
+
buttonUnselected: {
|
|
74583
|
+
color: "#dd7700",
|
|
74584
|
+
backgroundColor: "white"
|
|
74585
|
+
}
|
|
74586
|
+
}));
|
|
74587
|
+
var StampExtensionType = /* @__PURE__ */ ((StampExtensionType2) => {
|
|
74588
|
+
StampExtensionType2["Topup"] = "Topup";
|
|
74589
|
+
StampExtensionType2["Dilute"] = "Dilute";
|
|
74590
|
+
return StampExtensionType2;
|
|
74591
|
+
})(StampExtensionType || {});
|
|
74592
|
+
function StampExtensionModal({ type, icon, bee, stamp, status }) {
|
|
74593
|
+
const { classes: classes2 } = useStyles$o();
|
|
74533
74594
|
const [open2, setOpen] = React.useState(false);
|
|
74534
74595
|
const [amount, setAmount] = React.useState("");
|
|
74535
74596
|
const { enqueueSnackbar } = useSnackbar();
|
|
74536
|
-
const label = `${type} ${stamp.toHex().substring(0, 8)}`;
|
|
74597
|
+
const label = `${type} ${stamp.batchID.toHex().substring(0, 8)}`;
|
|
74537
74598
|
const handleClickOpen = (e2) => {
|
|
74538
74599
|
setOpen(true);
|
|
74539
74600
|
e2.stopPropagation();
|
|
@@ -74542,28 +74603,57 @@ function StampExtensionModal({ type, icon, bee, stamp }) {
|
|
|
74542
74603
|
setOpen(false);
|
|
74543
74604
|
};
|
|
74544
74605
|
const handleAction = async () => {
|
|
74606
|
+
if (status !== CheckState.OK) {
|
|
74607
|
+
enqueueSnackbar(`Node connection status is not ${CheckState.OK}: ${status}`, { variant: "error" });
|
|
74608
|
+
return;
|
|
74609
|
+
}
|
|
74545
74610
|
if (type === "Topup") {
|
|
74611
|
+
const isAmountInvalid = BigInt(amount) <= BigInt(0);
|
|
74612
|
+
if (isAmountInvalid) {
|
|
74613
|
+
enqueueSnackbar(`Invalid amount: ${amount}, it must be greate than 0`, { variant: "error" });
|
|
74614
|
+
return;
|
|
74615
|
+
}
|
|
74546
74616
|
try {
|
|
74547
|
-
await bee.topUpBatch(stamp, amount);
|
|
74617
|
+
await bee.topUpBatch(stamp.batchID, amount);
|
|
74548
74618
|
enqueueSnackbar(`Successfully topped up stamp, your changes will appear soon`, { variant: "success" });
|
|
74549
74619
|
} catch (error) {
|
|
74550
74620
|
enqueueSnackbar(`Failed to topup stamp: ${error || "Unknown reason"}`, { variant: "error" });
|
|
74551
74621
|
}
|
|
74622
|
+
return;
|
|
74552
74623
|
}
|
|
74553
74624
|
if (type === "Dilute") {
|
|
74625
|
+
const newDepth = parseInt(amount, 10);
|
|
74626
|
+
const ttlDays = stamp.duration.toDays();
|
|
74627
|
+
const currentDepth = stamp.depth;
|
|
74628
|
+
const maxHalvings = Math.floor(Math.log2(ttlDays)) + currentDepth;
|
|
74629
|
+
const isDepthInvalid = newDepth > maxHalvings || newDepth <= currentDepth;
|
|
74630
|
+
if (isDepthInvalid) {
|
|
74631
|
+
enqueueSnackbar(`Invalid depth: ${newDepth} (${currentDepth} < new depth < ${maxHalvings})`, {
|
|
74632
|
+
variant: "error"
|
|
74633
|
+
});
|
|
74634
|
+
return;
|
|
74635
|
+
}
|
|
74636
|
+
if (ttlDays <= 2) {
|
|
74637
|
+
enqueueSnackbar(`TTL: ${ttlDays} <= 2 days, cannot dilute stamp (min. TTL is 1 day)`, {
|
|
74638
|
+
variant: "warning"
|
|
74639
|
+
});
|
|
74640
|
+
return;
|
|
74641
|
+
}
|
|
74554
74642
|
try {
|
|
74555
|
-
await bee.diluteBatch(stamp,
|
|
74643
|
+
await bee.diluteBatch(stamp.batchID, newDepth);
|
|
74556
74644
|
enqueueSnackbar(`Successfully diluted stamp, your changes will appear soon`, { variant: "success" });
|
|
74557
74645
|
} catch (error) {
|
|
74558
74646
|
enqueueSnackbar(`Failed to dilute stamp: ${error || "Unknown reason"}`, { variant: "error" });
|
|
74559
74647
|
}
|
|
74648
|
+
return;
|
|
74560
74649
|
}
|
|
74650
|
+
enqueueSnackbar(`Failed to extend stamp, unknown operation: ${type}`, { variant: "error" });
|
|
74561
74651
|
};
|
|
74562
74652
|
const handleChange = (event) => {
|
|
74563
74653
|
setAmount(event.target.value);
|
|
74564
74654
|
};
|
|
74565
74655
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 2, children: [
|
|
74566
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { variant: "contained", onClick: handleClickOpen, startIcon: icon, children: type }),
|
|
74656
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { className: classes2.buttonSelected, variant: "contained", onClick: handleClickOpen, startIcon: icon, children: type }),
|
|
74567
74657
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Dialog, { open: open2, onClose: handleClose, "aria-labelledby": "form-dialog-title", children: [
|
|
74568
74658
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { id: "form-dialog-title", children: label }),
|
|
74569
74659
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -74581,7 +74671,18 @@ function StampExtensionModal({ type, icon, bee, stamp }) {
|
|
|
74581
74671
|
) }),
|
|
74582
74672
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogActions, { children: [
|
|
74583
74673
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { onClick: handleClose, color: "primary", children: "Cancel" }),
|
|
74584
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74674
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74675
|
+
Button$1,
|
|
74676
|
+
{
|
|
74677
|
+
disabled: amount === "",
|
|
74678
|
+
onClick: async () => {
|
|
74679
|
+
await handleAction();
|
|
74680
|
+
handleClose();
|
|
74681
|
+
},
|
|
74682
|
+
color: "primary",
|
|
74683
|
+
children: type
|
|
74684
|
+
}
|
|
74685
|
+
)
|
|
74585
74686
|
] })
|
|
74586
74687
|
] })
|
|
74587
74688
|
] });
|
|
@@ -74769,6 +74870,102 @@ function packageFile(file, pathOverwrite) {
|
|
|
74769
74870
|
bytes: file.bytes
|
|
74770
74871
|
};
|
|
74771
74872
|
}
|
|
74873
|
+
function getExtensionFromName(name) {
|
|
74874
|
+
const ext = name.split(".").pop()?.toLowerCase() || "";
|
|
74875
|
+
const hasExtension = name.includes(".") && ext && ext !== name;
|
|
74876
|
+
return hasExtension ? ext : "";
|
|
74877
|
+
}
|
|
74878
|
+
const EXT_TO_MIME = {
|
|
74879
|
+
mp4: "video/mp4",
|
|
74880
|
+
webm: "video/webm",
|
|
74881
|
+
ogv: "video/ogg",
|
|
74882
|
+
mp3: "audio/mpeg",
|
|
74883
|
+
m4a: "audio/mp4",
|
|
74884
|
+
aac: "audio/aac",
|
|
74885
|
+
wav: "audio/wav",
|
|
74886
|
+
ogg: "audio/ogg",
|
|
74887
|
+
png: "image/png",
|
|
74888
|
+
jpg: "image/jpeg",
|
|
74889
|
+
jpeg: "image/jpeg",
|
|
74890
|
+
gif: "image/gif",
|
|
74891
|
+
webp: "image/webp",
|
|
74892
|
+
avif: "image/avif",
|
|
74893
|
+
svg: "image/svg+xml",
|
|
74894
|
+
pdf: "application/pdf",
|
|
74895
|
+
txt: "text/plain",
|
|
74896
|
+
md: "text/markdown",
|
|
74897
|
+
json: "application/json",
|
|
74898
|
+
csv: "text/csv",
|
|
74899
|
+
html: "text/html",
|
|
74900
|
+
htm: "text/html",
|
|
74901
|
+
ico: "image/vnd.microsoft.icon"
|
|
74902
|
+
};
|
|
74903
|
+
function guessMime(name, mtdt) {
|
|
74904
|
+
const md = mtdt?.mimeType || mtdt?.mime || mtdt?.["content-type"];
|
|
74905
|
+
const ext = getExtensionFromName(name);
|
|
74906
|
+
if (md) return { mime: md, ext };
|
|
74907
|
+
const mime = EXT_TO_MIME[ext] || "application/octet-stream";
|
|
74908
|
+
return { mime, ext };
|
|
74909
|
+
}
|
|
74910
|
+
const VIDEO_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body style="margin:0;background:#000">
|
|
74911
|
+
<video controls autoplay style="width:100%;height:100%" src="${u2}"></video>
|
|
74912
|
+
</body></html>`;
|
|
74913
|
+
const AUDIO_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body>
|
|
74914
|
+
<audio controls autoplay style="width:100%" src="${u2}"></audio>
|
|
74915
|
+
</body></html>`;
|
|
74916
|
+
const IMAGE_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body style="margin:0;background:#111;display:grid;place-items:center;min-height:100vh">
|
|
74917
|
+
<img style="max-width:100%;max-height:100vh" src="${u2}" />
|
|
74918
|
+
</body></html>`;
|
|
74919
|
+
const VIEWERS = [
|
|
74920
|
+
{
|
|
74921
|
+
name: "video",
|
|
74922
|
+
test: (m) => m.startsWith("video/"),
|
|
74923
|
+
render: (w, url, mime, name) => {
|
|
74924
|
+
w.document.write(VIDEO_HTML(url, name));
|
|
74925
|
+
w.document.title = name;
|
|
74926
|
+
}
|
|
74927
|
+
},
|
|
74928
|
+
{
|
|
74929
|
+
name: "audio",
|
|
74930
|
+
test: (m) => m.startsWith("audio/"),
|
|
74931
|
+
render: (w, url, mime, name) => {
|
|
74932
|
+
w.document.write(AUDIO_HTML(url, name));
|
|
74933
|
+
w.document.title = name;
|
|
74934
|
+
}
|
|
74935
|
+
},
|
|
74936
|
+
{
|
|
74937
|
+
name: "image",
|
|
74938
|
+
test: (m) => m.startsWith("image/"),
|
|
74939
|
+
render: (w, url, mime, name) => {
|
|
74940
|
+
w.document.write(IMAGE_HTML(url, name));
|
|
74941
|
+
w.document.title = name;
|
|
74942
|
+
}
|
|
74943
|
+
},
|
|
74944
|
+
{
|
|
74945
|
+
name: "pdf",
|
|
74946
|
+
test: (m) => m === "application/pdf",
|
|
74947
|
+
render: (w, url, mime, name) => {
|
|
74948
|
+
w.document.title = name;
|
|
74949
|
+
w.location.href = url;
|
|
74950
|
+
}
|
|
74951
|
+
},
|
|
74952
|
+
{
|
|
74953
|
+
name: "html",
|
|
74954
|
+
test: (m) => m === "text/html",
|
|
74955
|
+
render: (w, url, mime, name) => {
|
|
74956
|
+
w.document.title = name;
|
|
74957
|
+
w.location.href = url;
|
|
74958
|
+
}
|
|
74959
|
+
},
|
|
74960
|
+
{
|
|
74961
|
+
name: "text-like",
|
|
74962
|
+
test: (m) => m.startsWith("text/") || m === "application/json" || m === "text/markdown",
|
|
74963
|
+
render: (w, url, mime, name) => {
|
|
74964
|
+
w.document.title = name;
|
|
74965
|
+
w.location.href = url;
|
|
74966
|
+
}
|
|
74967
|
+
}
|
|
74968
|
+
];
|
|
74772
74969
|
function Capacity({ width: width2, usage }) {
|
|
74773
74970
|
const integerUsage = Math.round(usage * 100);
|
|
74774
74971
|
const used = integerUsage + "%";
|
|
@@ -74789,6 +74986,7 @@ function PostageStamp({ stamp, shorten }) {
|
|
|
74789
74986
|
}
|
|
74790
74987
|
function StampsTable({ postageStamps }) {
|
|
74791
74988
|
const { beeApi } = React.useContext(Context$8);
|
|
74989
|
+
const { status } = React.useContext(Context$7);
|
|
74792
74990
|
if (!postageStamps || !beeApi) {
|
|
74793
74991
|
return null;
|
|
74794
74992
|
}
|
|
@@ -74802,8 +75000,8 @@ function StampsTable({ postageStamps }) {
|
|
|
74802
75000
|
ExpandableListItem,
|
|
74803
75001
|
{
|
|
74804
75002
|
label: "Capacity",
|
|
74805
|
-
value: `${getHumanReadableFileSize(
|
|
74806
|
-
|
|
75003
|
+
value: `${getHumanReadableFileSize(stamp.size.toBytes() - stamp.remainingSize.toBytes())} / ${getHumanReadableFileSize(
|
|
75004
|
+
stamp.size.toBytes()
|
|
74807
75005
|
)}`
|
|
74808
75006
|
}
|
|
74809
75007
|
),
|
|
@@ -74817,19 +75015,21 @@ function StampsTable({ postageStamps }) {
|
|
|
74817
75015
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74818
75016
|
StampExtensionModal,
|
|
74819
75017
|
{
|
|
74820
|
-
type:
|
|
75018
|
+
type: StampExtensionType.Topup,
|
|
74821
75019
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(TimerFlashFill, { size: "1rem" }),
|
|
74822
75020
|
bee: beeApi,
|
|
74823
|
-
stamp
|
|
75021
|
+
stamp,
|
|
75022
|
+
status: status.all
|
|
74824
75023
|
}
|
|
74825
75024
|
),
|
|
74826
75025
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74827
75026
|
StampExtensionModal,
|
|
74828
75027
|
{
|
|
74829
|
-
type:
|
|
75028
|
+
type: StampExtensionType.Dilute,
|
|
74830
75029
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(TimerFlashLine, { size: "1rem" }),
|
|
74831
75030
|
bee: beeApi,
|
|
74832
|
-
stamp
|
|
75031
|
+
stamp,
|
|
75032
|
+
status: status.all
|
|
74833
75033
|
}
|
|
74834
75034
|
)
|
|
74835
75035
|
] })
|
|
@@ -75192,7 +75392,7 @@ function WalletInfoCard() {
|
|
|
75192
75392
|
4
|
|
75193
75393
|
)} xBZZ | ${walletBalance.nativeTokenBalance.toSignificantDigits(4)} xDAI`;
|
|
75194
75394
|
}
|
|
75195
|
-
if (nodeInfo?.beeMode && [
|
|
75395
|
+
if (nodeInfo?.beeMode && [BeeModes.LIGHT, BeeModes.FULL, BeeModes.DEV].includes(nodeInfo.beeMode)) {
|
|
75196
75396
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
75197
75397
|
Card$1,
|
|
75198
75398
|
{
|
|
@@ -75349,6 +75549,7 @@ function SwarmSelect({
|
|
|
75349
75549
|
value,
|
|
75350
75550
|
className: classes2.select,
|
|
75351
75551
|
displayEmpty: true,
|
|
75552
|
+
onChange,
|
|
75352
75553
|
renderValue: (value2) => value2 ? renderValue(value2) : placeholder,
|
|
75353
75554
|
MenuProps: { MenuListProps: { disablePadding: true }, PaperProps: { square: true } },
|
|
75354
75555
|
children: options.map((x, i2) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem$1, { value: x.value, className: classes2.option, children: x.label }, i2))
|
|
@@ -75385,6 +75586,7 @@ const initialValues$5 = {
|
|
|
75385
75586
|
function CreateNewFeed() {
|
|
75386
75587
|
const { beeApi } = React.useContext(Context$8);
|
|
75387
75588
|
const { identities, setIdentities } = React.useContext(Context$6);
|
|
75589
|
+
const [identityType, setIdentityType] = React.useState(IdentityType.PrivateKey);
|
|
75388
75590
|
const [loading, setLoading] = React.useState(false);
|
|
75389
75591
|
const { enqueueSnackbar } = useSnackbar();
|
|
75390
75592
|
const navigate = useNavigate();
|
|
@@ -75395,10 +75597,19 @@ function CreateNewFeed() {
|
|
|
75395
75597
|
setLoading(false);
|
|
75396
75598
|
return;
|
|
75397
75599
|
}
|
|
75398
|
-
|
|
75399
|
-
|
|
75600
|
+
let stamps = [];
|
|
75601
|
+
let wallet;
|
|
75602
|
+
try {
|
|
75603
|
+
wallet = generateWallet();
|
|
75604
|
+
stamps = (await beeApi.getPostageBatches()).filter((s2) => s2.usable);
|
|
75605
|
+
} catch (err) {
|
|
75606
|
+
console.log(err);
|
|
75607
|
+
enqueueSnackbar(/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Error during wallet generation or postage stamp retrieval!" }), { variant: "error" });
|
|
75608
|
+
setLoading(false);
|
|
75609
|
+
return;
|
|
75610
|
+
}
|
|
75400
75611
|
if (!stamps || !stamps.length) {
|
|
75401
|
-
enqueueSnackbar(/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "No stamp available" }), { variant: "error" });
|
|
75612
|
+
enqueueSnackbar(/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "No usable stamp available" }), { variant: "error" });
|
|
75402
75613
|
setLoading(false);
|
|
75403
75614
|
return;
|
|
75404
75615
|
}
|
|
@@ -75407,15 +75618,25 @@ function CreateNewFeed() {
|
|
|
75407
75618
|
setLoading(false);
|
|
75408
75619
|
return;
|
|
75409
75620
|
}
|
|
75410
|
-
|
|
75411
|
-
|
|
75412
|
-
|
|
75413
|
-
|
|
75414
|
-
|
|
75621
|
+
try {
|
|
75622
|
+
const identity2 = await convertWalletToIdentity(wallet, values2.type, values2.identityName, values2.password);
|
|
75623
|
+
persistIdentity(identities, identity2);
|
|
75624
|
+
setIdentities(identities);
|
|
75625
|
+
navigate(ROUTES.ACCOUNT_FEEDS);
|
|
75626
|
+
} catch (err) {
|
|
75627
|
+
console.log(err);
|
|
75628
|
+
enqueueSnackbar(/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Error identity creation!" }), { variant: "error" });
|
|
75629
|
+
} finally {
|
|
75630
|
+
setLoading(false);
|
|
75631
|
+
}
|
|
75415
75632
|
}
|
|
75416
75633
|
function cancel() {
|
|
75417
75634
|
navigate(-1);
|
|
75418
75635
|
}
|
|
75636
|
+
function onIdentityTypeChange(event) {
|
|
75637
|
+
const type = event.target.value;
|
|
75638
|
+
setIdentityType(type);
|
|
75639
|
+
}
|
|
75419
75640
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
75420
75641
|
/* @__PURE__ */ jsxRuntimeExports.jsx(HistoryHeader, { children: "Create new feed" }),
|
|
75421
75642
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DocumentationText, { children: [
|
|
@@ -75440,10 +75661,13 @@ function CreateNewFeed() {
|
|
|
75440
75661
|
{
|
|
75441
75662
|
formik: true,
|
|
75442
75663
|
name: "type",
|
|
75664
|
+
label: "type",
|
|
75665
|
+
value: identityType,
|
|
75443
75666
|
options: [
|
|
75444
75667
|
{ label: "Keypair Only", value: IdentityType.PrivateKey },
|
|
75445
75668
|
{ label: "Password Protected", value: IdentityType.V3 }
|
|
75446
|
-
]
|
|
75669
|
+
],
|
|
75670
|
+
onChange: onIdentityTypeChange
|
|
75447
75671
|
}
|
|
75448
75672
|
) }),
|
|
75449
75673
|
values2.type === IdentityType.V3 && /* @__PURE__ */ jsxRuntimeExports.jsx(SwarmTextInput, { name: "password", label: "Password", password: true, formik: true }),
|
|
@@ -78404,8 +78628,8 @@ function UpdateFeed() {
|
|
|
78404
78628
|
const { stamps, refresh } = React.useContext(Context$5);
|
|
78405
78629
|
const { status } = React.useContext(Context$7);
|
|
78406
78630
|
const { hash: hash2 } = useParams();
|
|
78407
|
-
const [selectedStamp, setSelectedStamp] = React.useState(null);
|
|
78408
|
-
const [selectedIdentity, setSelectedIdentity] = React.useState(null);
|
|
78631
|
+
const [selectedStamp, setSelectedStamp] = React.useState(stamps ? stamps[0]?.batchID.toHex() : null);
|
|
78632
|
+
const [selectedIdentity, setSelectedIdentity] = React.useState(identities[0] ?? null);
|
|
78409
78633
|
const [loading, setLoading] = React.useState(false);
|
|
78410
78634
|
const { enqueueSnackbar } = useSnackbar();
|
|
78411
78635
|
const [showPasswordPrompt, setShowPasswordPrompt] = React.useState(false);
|
|
@@ -78477,18 +78701,23 @@ function UpdateFeed() {
|
|
|
78477
78701
|
}
|
|
78478
78702
|
),
|
|
78479
78703
|
/* @__PURE__ */ jsxRuntimeExports.jsx(HistoryHeader, { children: "Update feed" }),
|
|
78480
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
78704
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, children: identities && identities.length ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
78481
78705
|
SwarmSelect,
|
|
78482
78706
|
{
|
|
78707
|
+
value: selectedIdentity?.uuid ?? "",
|
|
78483
78708
|
options: identities.map((x) => ({ value: x.uuid, label: `${x.name} Website` })),
|
|
78484
78709
|
onChange: onFeedChange,
|
|
78485
78710
|
label: "Feed"
|
|
78486
78711
|
}
|
|
78487
|
-
) }) }),
|
|
78488
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, children: stamps ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
78712
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: "You need to create an identiy first to be able to update its feed." }) }) }),
|
|
78713
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, children: stamps && stamps.length ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
78489
78714
|
SwarmSelect,
|
|
78490
78715
|
{
|
|
78491
|
-
|
|
78716
|
+
value: selectedStamp ?? "",
|
|
78717
|
+
options: stamps.map((x) => ({
|
|
78718
|
+
value: x.batchID.toHex(),
|
|
78719
|
+
label: x.label ? x.batchID.toHex().slice(0, 8) + ` (${x.label})` : x.batchID.toHex().slice(0, 8)
|
|
78720
|
+
})),
|
|
78492
78721
|
onChange: onStampChange,
|
|
78493
78722
|
label: "Stamp"
|
|
78494
78723
|
}
|
|
@@ -78508,128 +78737,6 @@ function UpdateFeed() {
|
|
|
78508
78737
|
] })
|
|
78509
78738
|
] });
|
|
78510
78739
|
}
|
|
78511
|
-
const Ctx = React.createContext(void 0);
|
|
78512
|
-
function SearchProvider({ children }) {
|
|
78513
|
-
const [query, _setQuery] = React.useState("");
|
|
78514
|
-
const [scope, setScope] = React.useState("all");
|
|
78515
|
-
const [includeActive, setIncludeActive] = React.useState(true);
|
|
78516
|
-
const [includeTrashed, setIncludeTrashed] = React.useState(true);
|
|
78517
|
-
const preSearchState = React.useRef(null);
|
|
78518
|
-
const inSearch = React.useRef(false);
|
|
78519
|
-
const setQuery = React.useCallback(
|
|
78520
|
-
(q) => {
|
|
78521
|
-
const trimmed = q.trim();
|
|
78522
|
-
if (!inSearch.current && trimmed.length > 0) {
|
|
78523
|
-
preSearchState.current = { scope, includeActive, includeTrashed };
|
|
78524
|
-
inSearch.current = true;
|
|
78525
|
-
}
|
|
78526
|
-
if (inSearch.current && trimmed.length === 0) {
|
|
78527
|
-
const prev2 = preSearchState.current;
|
|
78528
|
-
if (prev2) {
|
|
78529
|
-
setScope(prev2.scope);
|
|
78530
|
-
setIncludeActive(prev2.includeActive);
|
|
78531
|
-
setIncludeTrashed(prev2.includeTrashed);
|
|
78532
|
-
}
|
|
78533
|
-
preSearchState.current = null;
|
|
78534
|
-
inSearch.current = false;
|
|
78535
|
-
}
|
|
78536
|
-
_setQuery(q);
|
|
78537
|
-
},
|
|
78538
|
-
[scope, includeActive, includeTrashed]
|
|
78539
|
-
);
|
|
78540
|
-
const clear = React.useCallback(() => {
|
|
78541
|
-
setQuery("");
|
|
78542
|
-
}, [setQuery]);
|
|
78543
|
-
const value = React.useMemo(
|
|
78544
|
-
() => ({
|
|
78545
|
-
query,
|
|
78546
|
-
scope,
|
|
78547
|
-
includeActive,
|
|
78548
|
-
includeTrashed,
|
|
78549
|
-
setQuery,
|
|
78550
|
-
clear,
|
|
78551
|
-
setScope,
|
|
78552
|
-
setIncludeActive,
|
|
78553
|
-
setIncludeTrashed
|
|
78554
|
-
}),
|
|
78555
|
-
[query, scope, includeActive, includeTrashed, clear, setQuery]
|
|
78556
|
-
);
|
|
78557
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Ctx.Provider, { value, children });
|
|
78558
|
-
}
|
|
78559
|
-
function useSearch() {
|
|
78560
|
-
const v = React.useContext(Ctx);
|
|
78561
|
-
if (!v) throw new Error("useFMSearch must be used within SearchProvider");
|
|
78562
|
-
return v;
|
|
78563
|
-
}
|
|
78564
|
-
var FileTransferType = /* @__PURE__ */ ((FileTransferType2) => {
|
|
78565
|
-
FileTransferType2["Upload"] = "upload";
|
|
78566
|
-
FileTransferType2["Download"] = "download";
|
|
78567
|
-
FileTransferType2["Update"] = "update";
|
|
78568
|
-
return FileTransferType2;
|
|
78569
|
-
})(FileTransferType || {});
|
|
78570
|
-
var TransferStatus = /* @__PURE__ */ ((TransferStatus2) => {
|
|
78571
|
-
TransferStatus2["Uploading"] = "uploading";
|
|
78572
|
-
TransferStatus2["Downloading"] = "downloading";
|
|
78573
|
-
TransferStatus2["Done"] = "done";
|
|
78574
|
-
TransferStatus2["Error"] = "error";
|
|
78575
|
-
TransferStatus2["Queued"] = "queued";
|
|
78576
|
-
TransferStatus2["Cancelled"] = "cancelled";
|
|
78577
|
-
return TransferStatus2;
|
|
78578
|
-
})(TransferStatus || {});
|
|
78579
|
-
var TransferBarColor = /* @__PURE__ */ ((TransferBarColor2) => {
|
|
78580
|
-
TransferBarColor2["Upload"] = "#22c55e";
|
|
78581
|
-
TransferBarColor2["Update"] = "#f59e0b";
|
|
78582
|
-
TransferBarColor2["Download"] = "#3b82f6";
|
|
78583
|
-
return TransferBarColor2;
|
|
78584
|
-
})(TransferBarColor || {});
|
|
78585
|
-
var ViewType = /* @__PURE__ */ ((ViewType2) => {
|
|
78586
|
-
ViewType2["File"] = "file";
|
|
78587
|
-
ViewType2["Trash"] = "trash";
|
|
78588
|
-
ViewType2["Expired"] = "expired";
|
|
78589
|
-
return ViewType2;
|
|
78590
|
-
})(ViewType || {});
|
|
78591
|
-
var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
|
|
78592
|
-
ActionTag2["Trashed"] = "trashed";
|
|
78593
|
-
ActionTag2["Recovered"] = "recovered";
|
|
78594
|
-
ActionTag2["Restored"] = "restored";
|
|
78595
|
-
return ActionTag2;
|
|
78596
|
-
})(ActionTag || {});
|
|
78597
|
-
var FileAction = /* @__PURE__ */ ((FileAction2) => {
|
|
78598
|
-
FileAction2["Trash"] = "trash";
|
|
78599
|
-
FileAction2["Forget"] = "forget";
|
|
78600
|
-
FileAction2["Destroy"] = "destroy";
|
|
78601
|
-
return FileAction2;
|
|
78602
|
-
})(FileAction || {});
|
|
78603
|
-
var DownloadState = /* @__PURE__ */ ((DownloadState2) => {
|
|
78604
|
-
DownloadState2["InProgress"] = "in-progress";
|
|
78605
|
-
DownloadState2["Cancelled"] = "cancelled";
|
|
78606
|
-
DownloadState2["Error"] = "error";
|
|
78607
|
-
return DownloadState2;
|
|
78608
|
-
})(DownloadState || {});
|
|
78609
|
-
const ViewContext = React.createContext(void 0);
|
|
78610
|
-
function ViewProvider({ children }) {
|
|
78611
|
-
const [view, setView] = React.useState(ViewType.File);
|
|
78612
|
-
const [actualItemView, setActualItemView] = React.useState(void 0);
|
|
78613
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
78614
|
-
ViewContext.Provider,
|
|
78615
|
-
{
|
|
78616
|
-
value: {
|
|
78617
|
-
view,
|
|
78618
|
-
setView,
|
|
78619
|
-
actualItemView,
|
|
78620
|
-
setActualItemView
|
|
78621
|
-
},
|
|
78622
|
-
children
|
|
78623
|
-
}
|
|
78624
|
-
);
|
|
78625
|
-
}
|
|
78626
|
-
function useView() {
|
|
78627
|
-
const context = React.useContext(ViewContext);
|
|
78628
|
-
if (!context) {
|
|
78629
|
-
throw new Error("useView must be used within a ViewProvider");
|
|
78630
|
-
}
|
|
78631
|
-
return context;
|
|
78632
|
-
}
|
|
78633
78740
|
function isRecord(value) {
|
|
78634
78741
|
return Types.isStrictlyObject(value) && Object.values(value).every((v) => typeof v === "string");
|
|
78635
78742
|
}
|
|
@@ -78900,10 +79007,10 @@ P?.name || "";
|
|
|
78900
79007
|
const bytesEndpoint = "bytes";
|
|
78901
79008
|
async function processDownload(bee, resources, options, requestOptions) {
|
|
78902
79009
|
if (O$1) {
|
|
78903
|
-
const { downloadNode } = await Promise.resolve().then(() => require("./download.node-
|
|
79010
|
+
const { downloadNode } = await Promise.resolve().then(() => require("./download.node-CzhxALxQ.js"));
|
|
78904
79011
|
return await downloadNode(bee, Object.values(resources), options, requestOptions);
|
|
78905
79012
|
}
|
|
78906
|
-
const { downloadBrowser } = await Promise.resolve().then(() => require("./download.browser-
|
|
79013
|
+
const { downloadBrowser } = await Promise.resolve().then(() => require("./download.browser-BhXh2eCY.js"));
|
|
78907
79014
|
return await downloadBrowser(Object.values(resources), bee.url, bytesEndpoint, options, requestOptions);
|
|
78908
79015
|
}
|
|
78909
79016
|
class EventEmitterBase {
|
|
@@ -78960,7 +79067,7 @@ async function processUpload(bee, driveInfo, fileOptions, uploadOptions, request
|
|
|
78960
79067
|
return processedOptions.file;
|
|
78961
79068
|
}
|
|
78962
79069
|
if (O$1) {
|
|
78963
|
-
const { processUploadNode } = await Promise.resolve().then(() => require("./upload.node-
|
|
79070
|
+
const { processUploadNode } = await Promise.resolve().then(() => require("./upload.node-DRiLZjhW.js"));
|
|
78964
79071
|
const nodeOptions = processedOptions.options;
|
|
78965
79072
|
return processUploadNode(bee, driveInfo, nodeOptions, uploadOptions, requestOptions);
|
|
78966
79073
|
}
|
|
@@ -79744,6 +79851,51 @@ const FILE_MANAGER_EVENTS = {
|
|
|
79744
79851
|
const POLLING_TIMEOUT_MS = 9e4;
|
|
79745
79852
|
const UPLOAD_POLLING_TIMEOUT_MS = 1e4;
|
|
79746
79853
|
const POLLING_INTERVAL_MS = 2e3;
|
|
79854
|
+
var FileTransferType = /* @__PURE__ */ ((FileTransferType2) => {
|
|
79855
|
+
FileTransferType2["Upload"] = "upload";
|
|
79856
|
+
FileTransferType2["Download"] = "download";
|
|
79857
|
+
FileTransferType2["Update"] = "update";
|
|
79858
|
+
return FileTransferType2;
|
|
79859
|
+
})(FileTransferType || {});
|
|
79860
|
+
var TransferStatus = /* @__PURE__ */ ((TransferStatus2) => {
|
|
79861
|
+
TransferStatus2["Uploading"] = "uploading";
|
|
79862
|
+
TransferStatus2["Downloading"] = "downloading";
|
|
79863
|
+
TransferStatus2["Done"] = "done";
|
|
79864
|
+
TransferStatus2["Error"] = "error";
|
|
79865
|
+
TransferStatus2["Queued"] = "queued";
|
|
79866
|
+
TransferStatus2["Cancelled"] = "cancelled";
|
|
79867
|
+
return TransferStatus2;
|
|
79868
|
+
})(TransferStatus || {});
|
|
79869
|
+
var TransferBarColor = /* @__PURE__ */ ((TransferBarColor2) => {
|
|
79870
|
+
TransferBarColor2["Upload"] = "#22c55e";
|
|
79871
|
+
TransferBarColor2["Update"] = "#f59e0b";
|
|
79872
|
+
TransferBarColor2["Download"] = "#3b82f6";
|
|
79873
|
+
return TransferBarColor2;
|
|
79874
|
+
})(TransferBarColor || {});
|
|
79875
|
+
var ViewType = /* @__PURE__ */ ((ViewType2) => {
|
|
79876
|
+
ViewType2["File"] = "file";
|
|
79877
|
+
ViewType2["Trash"] = "trash";
|
|
79878
|
+
ViewType2["Expired"] = "expired";
|
|
79879
|
+
return ViewType2;
|
|
79880
|
+
})(ViewType || {});
|
|
79881
|
+
var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
|
|
79882
|
+
ActionTag2["Trashed"] = "trashed";
|
|
79883
|
+
ActionTag2["Recovered"] = "recovered";
|
|
79884
|
+
ActionTag2["Restored"] = "restored";
|
|
79885
|
+
return ActionTag2;
|
|
79886
|
+
})(ActionTag || {});
|
|
79887
|
+
var FileAction = /* @__PURE__ */ ((FileAction2) => {
|
|
79888
|
+
FileAction2["Trash"] = "trash";
|
|
79889
|
+
FileAction2["Forget"] = "forget";
|
|
79890
|
+
FileAction2["Destroy"] = "destroy";
|
|
79891
|
+
return FileAction2;
|
|
79892
|
+
})(FileAction || {});
|
|
79893
|
+
var DownloadState = /* @__PURE__ */ ((DownloadState2) => {
|
|
79894
|
+
DownloadState2["InProgress"] = "in-progress";
|
|
79895
|
+
DownloadState2["Cancelled"] = "cancelled";
|
|
79896
|
+
DownloadState2["Error"] = "error";
|
|
79897
|
+
return DownloadState2;
|
|
79898
|
+
})(DownloadState || {});
|
|
79747
79899
|
const getUsableStamps = async (bee) => {
|
|
79748
79900
|
try {
|
|
79749
79901
|
return (await bee.getPostageBatches()).filter((s2) => s2.usable).sort((a2, b2) => (a2.label || "").localeCompare(b2.label || ""));
|
|
@@ -81362,7 +81514,12 @@ function AdminStatusBar({
|
|
|
81362
81514
|
const isBusy = loading || isUpgrading || isCreationInProgress;
|
|
81363
81515
|
const blurCls = isBusy ? " is-loading" : "";
|
|
81364
81516
|
const statusVerb = isCreationInProgress ? "Creating" : "Loading";
|
|
81365
|
-
const statusText =
|
|
81517
|
+
const statusText = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
81518
|
+
statusVerb,
|
|
81519
|
+
" admin drive — please do not reload the page.",
|
|
81520
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
81521
|
+
"This may take a few minutes."
|
|
81522
|
+
] });
|
|
81366
81523
|
const renderModalsAndOverlays = () => {
|
|
81367
81524
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
81368
81525
|
isUpgradeDriveModalOpen && actualStamp && adminDrive && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -81446,6 +81603,83 @@ function ErrorModal({ label, onClick }) {
|
|
|
81446
81603
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-error-modal-button-container", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button2, { variant: "primary", label: "OK", width: 100, onClick }) })
|
|
81447
81604
|
] }) });
|
|
81448
81605
|
}
|
|
81606
|
+
const Ctx = React.createContext(void 0);
|
|
81607
|
+
function SearchProvider({ children }) {
|
|
81608
|
+
const [query, _setQuery] = React.useState("");
|
|
81609
|
+
const [scope, setScope] = React.useState("all");
|
|
81610
|
+
const [includeActive, setIncludeActive] = React.useState(true);
|
|
81611
|
+
const [includeTrashed, setIncludeTrashed] = React.useState(true);
|
|
81612
|
+
const preSearchState = React.useRef(null);
|
|
81613
|
+
const inSearch = React.useRef(false);
|
|
81614
|
+
const setQuery = React.useCallback(
|
|
81615
|
+
(q) => {
|
|
81616
|
+
const trimmed = q.trim();
|
|
81617
|
+
if (!inSearch.current && trimmed.length > 0) {
|
|
81618
|
+
preSearchState.current = { scope, includeActive, includeTrashed };
|
|
81619
|
+
inSearch.current = true;
|
|
81620
|
+
}
|
|
81621
|
+
if (inSearch.current && trimmed.length === 0) {
|
|
81622
|
+
const prev2 = preSearchState.current;
|
|
81623
|
+
if (prev2) {
|
|
81624
|
+
setScope(prev2.scope);
|
|
81625
|
+
setIncludeActive(prev2.includeActive);
|
|
81626
|
+
setIncludeTrashed(prev2.includeTrashed);
|
|
81627
|
+
}
|
|
81628
|
+
preSearchState.current = null;
|
|
81629
|
+
inSearch.current = false;
|
|
81630
|
+
}
|
|
81631
|
+
_setQuery(q);
|
|
81632
|
+
},
|
|
81633
|
+
[scope, includeActive, includeTrashed]
|
|
81634
|
+
);
|
|
81635
|
+
const clear = React.useCallback(() => {
|
|
81636
|
+
setQuery("");
|
|
81637
|
+
}, [setQuery]);
|
|
81638
|
+
const value = React.useMemo(
|
|
81639
|
+
() => ({
|
|
81640
|
+
query,
|
|
81641
|
+
scope,
|
|
81642
|
+
includeActive,
|
|
81643
|
+
includeTrashed,
|
|
81644
|
+
setQuery,
|
|
81645
|
+
clear,
|
|
81646
|
+
setScope,
|
|
81647
|
+
setIncludeActive,
|
|
81648
|
+
setIncludeTrashed
|
|
81649
|
+
}),
|
|
81650
|
+
[query, scope, includeActive, includeTrashed, clear, setQuery]
|
|
81651
|
+
);
|
|
81652
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Ctx.Provider, { value, children });
|
|
81653
|
+
}
|
|
81654
|
+
function useSearch() {
|
|
81655
|
+
const v = React.useContext(Ctx);
|
|
81656
|
+
if (!v) throw new Error("useFMSearch must be used within SearchProvider");
|
|
81657
|
+
return v;
|
|
81658
|
+
}
|
|
81659
|
+
const ViewContext = React.createContext(void 0);
|
|
81660
|
+
function ViewProvider({ children }) {
|
|
81661
|
+
const [view, setView] = React.useState(ViewType.File);
|
|
81662
|
+
const [actualItemView, setActualItemView] = React.useState(void 0);
|
|
81663
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
81664
|
+
ViewContext.Provider,
|
|
81665
|
+
{
|
|
81666
|
+
value: {
|
|
81667
|
+
view,
|
|
81668
|
+
setView,
|
|
81669
|
+
actualItemView,
|
|
81670
|
+
setActualItemView
|
|
81671
|
+
},
|
|
81672
|
+
children
|
|
81673
|
+
}
|
|
81674
|
+
);
|
|
81675
|
+
}
|
|
81676
|
+
function useView() {
|
|
81677
|
+
const context = React.useContext(ViewContext);
|
|
81678
|
+
if (!context) {
|
|
81679
|
+
throw new Error("useView must be used within a ViewProvider");
|
|
81680
|
+
}
|
|
81681
|
+
return context;
|
|
81682
|
+
}
|
|
81449
81683
|
class AbortManager {
|
|
81450
81684
|
controllers = /* @__PURE__ */ new Map();
|
|
81451
81685
|
create(key) {
|
|
@@ -81579,101 +81813,6 @@ async function performBulkFileOperation({
|
|
|
81579
81813
|
const isPickerSupported = () => typeof window.showSaveFilePicker === "function";
|
|
81580
81814
|
const isDirectoryPickerSupported = () => typeof window.showDirectoryPicker === "function";
|
|
81581
81815
|
const isElementPickerSupported = (el) => typeof el.showPicker === "function";
|
|
81582
|
-
const EXT_TO_MIME = {
|
|
81583
|
-
mp4: "video/mp4",
|
|
81584
|
-
webm: "video/webm",
|
|
81585
|
-
ogv: "video/ogg",
|
|
81586
|
-
mp3: "audio/mpeg",
|
|
81587
|
-
m4a: "audio/mp4",
|
|
81588
|
-
aac: "audio/aac",
|
|
81589
|
-
wav: "audio/wav",
|
|
81590
|
-
ogg: "audio/ogg",
|
|
81591
|
-
png: "image/png",
|
|
81592
|
-
jpg: "image/jpeg",
|
|
81593
|
-
jpeg: "image/jpeg",
|
|
81594
|
-
gif: "image/gif",
|
|
81595
|
-
webp: "image/webp",
|
|
81596
|
-
avif: "image/avif",
|
|
81597
|
-
svg: "image/svg+xml",
|
|
81598
|
-
pdf: "application/pdf",
|
|
81599
|
-
txt: "text/plain",
|
|
81600
|
-
md: "text/markdown",
|
|
81601
|
-
json: "application/json",
|
|
81602
|
-
csv: "text/csv",
|
|
81603
|
-
html: "text/html",
|
|
81604
|
-
htm: "text/html"
|
|
81605
|
-
};
|
|
81606
|
-
function getExtensionFromName(name) {
|
|
81607
|
-
const ext = name.split(".").pop()?.toLowerCase() || "";
|
|
81608
|
-
const hasExtension = name.includes(".") && ext && ext !== name;
|
|
81609
|
-
return hasExtension ? ext : "";
|
|
81610
|
-
}
|
|
81611
|
-
function guessMime(name, mtdt) {
|
|
81612
|
-
const md = mtdt?.mimeType || mtdt?.mime || mtdt?.["content-type"];
|
|
81613
|
-
const ext = getExtensionFromName(name);
|
|
81614
|
-
if (md) return { mime: md, ext };
|
|
81615
|
-
const mime = EXT_TO_MIME[ext] || "application/octet-stream";
|
|
81616
|
-
return { mime, ext };
|
|
81617
|
-
}
|
|
81618
|
-
const VIDEO_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body style="margin:0;background:#000">
|
|
81619
|
-
<video controls autoplay style="width:100%;height:100%" src="${u2}"></video>
|
|
81620
|
-
</body></html>`;
|
|
81621
|
-
const AUDIO_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body>
|
|
81622
|
-
<audio controls autoplay style="width:100%" src="${u2}"></audio>
|
|
81623
|
-
</body></html>`;
|
|
81624
|
-
const IMAGE_HTML = (u2, title) => `<html><head><meta charset="utf-8"/><title>${title}</title></head><body style="margin:0;background:#111;display:grid;place-items:center;min-height:100vh">
|
|
81625
|
-
<img style="max-width:100%;max-height:100vh" src="${u2}" />
|
|
81626
|
-
</body></html>`;
|
|
81627
|
-
const VIEWERS = [
|
|
81628
|
-
{
|
|
81629
|
-
name: "video",
|
|
81630
|
-
test: (m) => m.startsWith("video/"),
|
|
81631
|
-
render: (w, url, mime, name) => {
|
|
81632
|
-
w.document.write(VIDEO_HTML(url, name));
|
|
81633
|
-
w.document.title = name;
|
|
81634
|
-
}
|
|
81635
|
-
},
|
|
81636
|
-
{
|
|
81637
|
-
name: "audio",
|
|
81638
|
-
test: (m) => m.startsWith("audio/"),
|
|
81639
|
-
render: (w, url, mime, name) => {
|
|
81640
|
-
w.document.write(AUDIO_HTML(url, name));
|
|
81641
|
-
w.document.title = name;
|
|
81642
|
-
}
|
|
81643
|
-
},
|
|
81644
|
-
{
|
|
81645
|
-
name: "image",
|
|
81646
|
-
test: (m) => m.startsWith("image/"),
|
|
81647
|
-
render: (w, url, mime, name) => {
|
|
81648
|
-
w.document.write(IMAGE_HTML(url, name));
|
|
81649
|
-
w.document.title = name;
|
|
81650
|
-
}
|
|
81651
|
-
},
|
|
81652
|
-
{
|
|
81653
|
-
name: "pdf",
|
|
81654
|
-
test: (m) => m === "application/pdf",
|
|
81655
|
-
render: (w, url, mime, name) => {
|
|
81656
|
-
w.document.title = name;
|
|
81657
|
-
w.location.href = url;
|
|
81658
|
-
}
|
|
81659
|
-
},
|
|
81660
|
-
{
|
|
81661
|
-
name: "html",
|
|
81662
|
-
test: (m) => m === "text/html",
|
|
81663
|
-
render: (w, url, mime, name) => {
|
|
81664
|
-
w.document.title = name;
|
|
81665
|
-
w.location.href = url;
|
|
81666
|
-
}
|
|
81667
|
-
},
|
|
81668
|
-
{
|
|
81669
|
-
name: "text-like",
|
|
81670
|
-
test: (m) => m.startsWith("text/") || m === "application/json" || m === "text/markdown",
|
|
81671
|
-
render: (w, url, mime, name) => {
|
|
81672
|
-
w.document.title = name;
|
|
81673
|
-
w.location.href = url;
|
|
81674
|
-
}
|
|
81675
|
-
}
|
|
81676
|
-
];
|
|
81677
81816
|
const DefaultDownloadFolder = "downloads";
|
|
81678
81817
|
const downloadAborts = new AbortManager();
|
|
81679
81818
|
function createDownloadAbort(id2) {
|
|
@@ -82254,7 +82393,7 @@ function useDragAndDrop({ onFilesDropped }) {
|
|
|
82254
82393
|
}
|
|
82255
82394
|
function useFileFiltering(props) {
|
|
82256
82395
|
const { files, currentDrive, view, isSearchMode, query, scope, includeActive, includeTrashed } = props;
|
|
82257
|
-
const q = query.trim().toLowerCase();
|
|
82396
|
+
const q = query.trim().toLowerCase().normalize("NFC");
|
|
82258
82397
|
const statusIncluded = React.useCallback(
|
|
82259
82398
|
(fi) => {
|
|
82260
82399
|
const trashed = isTrashed(fi);
|
|
@@ -82267,9 +82406,9 @@ function useFileFiltering(props) {
|
|
|
82267
82406
|
const matchesQuery = React.useCallback(
|
|
82268
82407
|
(fi) => {
|
|
82269
82408
|
if (!q) return true;
|
|
82270
|
-
const name = fi.name.toLowerCase();
|
|
82271
|
-
const mime = (fi.customMetadata?.mime || "").toLowerCase();
|
|
82272
|
-
const topic = String(fi.topic ?? "").toLowerCase();
|
|
82409
|
+
const name = fi.name.toLowerCase().normalize("NFC");
|
|
82410
|
+
const mime = (fi.customMetadata?.mime || "").toLowerCase().normalize("NFC");
|
|
82411
|
+
const topic = String(fi.topic ?? "").toLowerCase().normalize("NFC");
|
|
82273
82412
|
return name.includes(q) || mime.includes(q) || topic.includes(q);
|
|
82274
82413
|
},
|
|
82275
82414
|
[q]
|
|
@@ -83884,11 +84023,13 @@ function ExpiringNotificationModalItem({
|
|
|
83884
84023
|
}
|
|
83885
84024
|
const EXPIRING_ITEMS_PAGE_SIZE = 3;
|
|
83886
84025
|
function ExpiringNotificationModal({
|
|
84026
|
+
bee,
|
|
83887
84027
|
stamps,
|
|
83888
84028
|
drives,
|
|
83889
84029
|
files,
|
|
83890
84030
|
onCancelClick,
|
|
83891
|
-
setErrorMessage
|
|
84031
|
+
setErrorMessage,
|
|
84032
|
+
setShowError
|
|
83892
84033
|
}) {
|
|
83893
84034
|
const [showUpgradeDriveModal, setShowUpgradeDriveModal] = React.useState(false);
|
|
83894
84035
|
const [actualStamp, setActualStamp] = React.useState(void 0);
|
|
@@ -83927,7 +84068,15 @@ function ExpiringNotificationModal({
|
|
|
83927
84068
|
files,
|
|
83928
84069
|
currentPage,
|
|
83929
84070
|
index,
|
|
83930
|
-
onUpgradeClick: (stamp2, drive) => {
|
|
84071
|
+
onUpgradeClick: async (stamp2, drive) => {
|
|
84072
|
+
const isStampValid = await validateStampStillExists(bee, stamp2.batchID);
|
|
84073
|
+
if (!isStampValid) {
|
|
84074
|
+
setErrorMessage?.(
|
|
84075
|
+
`Drive ${drive.name} has expired. Please clear the browser cache and reload the page.`
|
|
84076
|
+
);
|
|
84077
|
+
setShowError(true);
|
|
84078
|
+
return;
|
|
84079
|
+
}
|
|
83931
84080
|
setActualStamp(stamp2);
|
|
83932
84081
|
setActualDrive(drive);
|
|
83933
84082
|
setShowUpgradeDriveModal(true);
|
|
@@ -83975,7 +84124,7 @@ function NotificationBar({ setErrorMessage }) {
|
|
|
83975
84124
|
const [stampsToExpire, setStampsToExpire] = React.useState([]);
|
|
83976
84125
|
const [drivesToExpire, setDrivesToExpire] = React.useState([]);
|
|
83977
84126
|
const { beeApi } = React.useContext(Context$8);
|
|
83978
|
-
const { drives, files, adminDrive } = React.useContext(Context$3);
|
|
84127
|
+
const { drives, files, adminDrive, setShowError } = React.useContext(Context$3);
|
|
83979
84128
|
const showExpiration = stampsToExpire.length > 0;
|
|
83980
84129
|
React.useEffect(() => {
|
|
83981
84130
|
let isMounted = true;
|
|
@@ -84037,16 +84186,18 @@ function NotificationBar({ setErrorMessage }) {
|
|
|
84037
84186
|
" expiring soon ",
|
|
84038
84187
|
/* @__PURE__ */ jsxRuntimeExports.jsx(UpIcon, { size: "16px" })
|
|
84039
84188
|
] }),
|
|
84040
|
-
showExpiringModal && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
84189
|
+
showExpiringModal && beeApi && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
84041
84190
|
ExpiringNotificationModal,
|
|
84042
84191
|
{
|
|
84192
|
+
bee: beeApi,
|
|
84043
84193
|
stamps: stampsToExpire,
|
|
84044
84194
|
drives: drivesToExpire,
|
|
84045
84195
|
files,
|
|
84046
84196
|
onCancelClick: () => {
|
|
84047
84197
|
setShowExpiringModal(false);
|
|
84048
84198
|
},
|
|
84049
|
-
setErrorMessage
|
|
84199
|
+
setErrorMessage,
|
|
84200
|
+
setShowError
|
|
84050
84201
|
}
|
|
84051
84202
|
)
|
|
84052
84203
|
] });
|
|
@@ -86366,7 +86517,8 @@ function ErrorModalBlock$1({
|
|
|
86366
86517
|
if (!showError) {
|
|
86367
86518
|
return null;
|
|
86368
86519
|
}
|
|
86369
|
-
|
|
86520
|
+
const modalRoot = document.querySelector(".fm-main") || document.body;
|
|
86521
|
+
return ReactDOM.createPortal(/* @__PURE__ */ jsxRuntimeExports.jsx(ErrorModal, { label, onClick: onOk }), modalRoot);
|
|
86370
86522
|
}
|
|
86371
86523
|
const extractFilesFromClipboardEvent = (e2) => {
|
|
86372
86524
|
const out = [];
|
|
@@ -86633,8 +86785,9 @@ function FileBrowser({ errorMessage, setErrorMessage }) {
|
|
|
86633
86785
|
if (rafIdRef.current) {
|
|
86634
86786
|
cancelAnimationFrame(rafIdRef.current);
|
|
86635
86787
|
}
|
|
86788
|
+
setShowError(false);
|
|
86636
86789
|
};
|
|
86637
|
-
}, []);
|
|
86790
|
+
}, [setShowError]);
|
|
86638
86791
|
React.useEffect(() => {
|
|
86639
86792
|
let title = currentDrive?.name || "";
|
|
86640
86793
|
if (isSearchMode) {
|
|
@@ -89200,7 +89353,11 @@ function Sidebar({ setErrorMessage, loading }) {
|
|
|
89200
89353
|
);
|
|
89201
89354
|
}) })
|
|
89202
89355
|
] }),
|
|
89203
|
-
isDriveCreationInProgress && /* @__PURE__ */ jsxRuntimeExports.
|
|
89356
|
+
isDriveCreationInProgress && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fm-sidebar-drive-creation", children: [
|
|
89357
|
+
"Creating drive — please do not reload the page.",
|
|
89358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
89359
|
+
"This may take a few minutes."
|
|
89360
|
+
] })
|
|
89204
89361
|
] });
|
|
89205
89362
|
}
|
|
89206
89363
|
var SupportedPlatforms = /* @__PURE__ */ ((SupportedPlatforms2) => {
|
|
@@ -89275,6 +89432,9 @@ function InitializationErrorBlock({ onOk }) {
|
|
|
89275
89432
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { display: "flex", justifyContent: "center", marginTop: "16px" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { minWidth: "120px" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button2, { label: "OK", variant: "primary", disabled: false, onClick: onOk }) }) })
|
|
89276
89433
|
] }) });
|
|
89277
89434
|
}
|
|
89435
|
+
function UltraLightNodeErrorBlock() {
|
|
89436
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-main", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-loading", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-loading-title", children: "File Manager is not available with an Ultra-light node. Please upgrade to a Light node to continue." }) }) });
|
|
89437
|
+
}
|
|
89278
89438
|
function ResetModalBlock({ cacheHelpUrl, onConfirm }) {
|
|
89279
89439
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-main", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89280
89440
|
ConfirmModal,
|
|
@@ -89312,6 +89472,17 @@ function LoadingBlock() {
|
|
|
89312
89472
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-loading-subtitle", children: "Please wait a few seconds" })
|
|
89313
89473
|
] }) });
|
|
89314
89474
|
}
|
|
89475
|
+
function ChainSyncingBlock() {
|
|
89476
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-main", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fm-loading", "aria-live": "polite", children: [
|
|
89477
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-spinner", "aria-hidden": "true" }),
|
|
89478
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fm-loading-title", children: "Bee node is syncing…" }),
|
|
89479
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fm-loading-subtitle", children: [
|
|
89480
|
+
"Your Bee node is still syncing the postage batch state from the chain.",
|
|
89481
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
89482
|
+
"File Manager will be available once the sync is complete."
|
|
89483
|
+
] })
|
|
89484
|
+
] }) });
|
|
89485
|
+
}
|
|
89315
89486
|
function ErrorModalBlock({ onClick, label }) {
|
|
89316
89487
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorModal, { label, onClick });
|
|
89317
89488
|
}
|
|
@@ -89362,7 +89533,7 @@ function FileManagerPage() {
|
|
|
89362
89533
|
const [isCreationInProgress, setIsCreationInProgress] = React.useState(false);
|
|
89363
89534
|
const [connectionErrorDismissed, setConnectionErrorDismissed] = React.useState(false);
|
|
89364
89535
|
const [cacheHelpUrl, setCacheHelpUrl] = React.useState(cacheClearUrls[BrowserPlatform.Chrome]);
|
|
89365
|
-
const { status } = React.useContext(Context$7);
|
|
89536
|
+
const { status, chainState, nodeInfo } = React.useContext(Context$7);
|
|
89366
89537
|
const { fm, initDone, shallReset, adminDrive, initializationError, notifyPkSaved } = React.useContext(Context$3);
|
|
89367
89538
|
React.useEffect(() => {
|
|
89368
89539
|
isMountedRef.current = true;
|
|
@@ -89389,15 +89560,19 @@ function FileManagerPage() {
|
|
|
89389
89560
|
}
|
|
89390
89561
|
}, [isConnectionError]);
|
|
89391
89562
|
const pageState = React.useMemo(() => {
|
|
89563
|
+
const isChainSyncing = chainState === null;
|
|
89392
89564
|
if (!isBeeReady && !initDone) return "connecting";
|
|
89565
|
+
if (nodeInfo?.beeMode === BeeModes.ULTRA_LIGHT) return "ultra-light-node";
|
|
89393
89566
|
if (!hasPk) return "no-pk";
|
|
89394
89567
|
if (!initDone) return "loading";
|
|
89395
89568
|
if (shallReset && !resetAcknowledged) return "reset";
|
|
89396
89569
|
if (initializationError && !shallReset) return "init-error";
|
|
89397
|
-
if (showAdminErrorModal) return "admin-error";
|
|
89398
89570
|
const hasAdminStamp = Boolean(fm?.adminStamp);
|
|
89399
89571
|
const hasAdminDrive = Boolean(adminDrive);
|
|
89400
|
-
|
|
89572
|
+
const setupIncomplete = !hasAdminStamp && !hasAdminDrive;
|
|
89573
|
+
if (setupIncomplete && isChainSyncing) return "chain-syncing";
|
|
89574
|
+
if (showAdminErrorModal) return "admin-error";
|
|
89575
|
+
if (setupIncomplete && !isCreationInProgress) return "initial";
|
|
89401
89576
|
return "ready";
|
|
89402
89577
|
}, [
|
|
89403
89578
|
isBeeReady,
|
|
@@ -89409,7 +89584,9 @@ function FileManagerPage() {
|
|
|
89409
89584
|
showAdminErrorModal,
|
|
89410
89585
|
fm,
|
|
89411
89586
|
adminDrive,
|
|
89412
|
-
isCreationInProgress
|
|
89587
|
+
isCreationInProgress,
|
|
89588
|
+
chainState,
|
|
89589
|
+
nodeInfo?.beeMode
|
|
89413
89590
|
]);
|
|
89414
89591
|
const handlePrivateKeySaved = React.useCallback(() => {
|
|
89415
89592
|
if (!isMountedRef.current) return;
|
|
@@ -89419,9 +89596,15 @@ function FileManagerPage() {
|
|
|
89419
89596
|
}, [fm, notifyPkSaved]);
|
|
89420
89597
|
const loading = !fm?.adminStamp || !adminDrive;
|
|
89421
89598
|
const isFormbricksActive = Boolean(fm && fm.adminStamp && adminDrive && !loading);
|
|
89599
|
+
if (pageState === "ultra-light-node") {
|
|
89600
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(UltraLightNodeErrorBlock, {});
|
|
89601
|
+
}
|
|
89422
89602
|
if (pageState === "connecting" || pageState === "loading") {
|
|
89423
89603
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(LoadingBlock, {});
|
|
89424
89604
|
}
|
|
89605
|
+
if (pageState === "chain-syncing") {
|
|
89606
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ChainSyncingBlock, {});
|
|
89607
|
+
}
|
|
89425
89608
|
if (pageState === "no-pk") {
|
|
89426
89609
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(PrivateKeyModalBlock, { onSaved: handlePrivateKeySaved });
|
|
89427
89610
|
}
|
|
@@ -89453,10 +89636,11 @@ function FileManagerPage() {
|
|
|
89453
89636
|
);
|
|
89454
89637
|
}
|
|
89455
89638
|
if (pageState === "admin-error") {
|
|
89639
|
+
const adminErrorLabel = chainState === null ? "Your Bee node is still syncing the postage batch state from the chain. Please wait for the sync to complete and try again." : errorMessage || "Error creating Admin Drive. Please try again. Possible causes include insufficient xDAI balance or a lost connection to the RPC.";
|
|
89456
89640
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89457
89641
|
ErrorModalBlock,
|
|
89458
89642
|
{
|
|
89459
|
-
label:
|
|
89643
|
+
label: adminErrorLabel,
|
|
89460
89644
|
onClick: () => {
|
|
89461
89645
|
setAdminShowErrorModal(false);
|
|
89462
89646
|
setErrorMessage("");
|
|
@@ -89543,11 +89727,17 @@ const useStyles$e = makeStyles()((theme2) => ({
|
|
|
89543
89727
|
header: {
|
|
89544
89728
|
backgroundColor: theme2.palette.background.paper,
|
|
89545
89729
|
marginBottom: theme2.spacing(0.25),
|
|
89546
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
89547
|
-
wordBreak: "break-word"
|
|
89730
|
+
borderLeft: `${theme2.spacing(0.25)} solid rgba(0,0,0,0)`,
|
|
89731
|
+
wordBreak: "break-word",
|
|
89732
|
+
"&:hover": {
|
|
89733
|
+
backgroundColor: theme2.palette.background.paper
|
|
89734
|
+
},
|
|
89735
|
+
"&:focus-within": {
|
|
89736
|
+
backgroundColor: theme2.palette.background.paper
|
|
89737
|
+
}
|
|
89548
89738
|
},
|
|
89549
89739
|
headerOpen: {
|
|
89550
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
89740
|
+
borderLeft: `${theme2.spacing(0.25)} solid ${theme2.palette.primary.main}`
|
|
89551
89741
|
},
|
|
89552
89742
|
copyValue: {
|
|
89553
89743
|
cursor: "pointer",
|
|
@@ -89601,72 +89791,74 @@ function ExpandableListItemInput({
|
|
|
89601
89791
|
setInputValue(newValue);
|
|
89602
89792
|
if (onChange) onChange(newValue);
|
|
89603
89793
|
};
|
|
89604
|
-
return /* @__PURE__ */ jsxRuntimeExports.
|
|
89605
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
89606
|
-
|
|
89607
|
-
|
|
89608
|
-
|
|
89609
|
-
|
|
89794
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
89795
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ListItemButton, { className: `${classes2.header} ${open2 ? classes2.headerOpen : ""}`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", flexDirection: "column", width: "100%", children: [
|
|
89796
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", flexDirection: "row", alignItems: "center", width: "100%", children: [
|
|
89797
|
+
label && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { flex: 1, minWidth: 0, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", className: classes2.unselectableLabel, component: "span", children: label }) }),
|
|
89798
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { flex: 3, display: "flex", alignItems: "center", justifyContent: "flex-end", minWidth: 0, gap: 1, children: [
|
|
89799
|
+
!open2 && value && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89800
|
+
Typography,
|
|
89801
|
+
{
|
|
89802
|
+
variant: "body2",
|
|
89803
|
+
component: "span",
|
|
89804
|
+
sx: { minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" },
|
|
89805
|
+
children: value
|
|
89806
|
+
}
|
|
89807
|
+
),
|
|
89808
|
+
!expandedOnly && !locked2 && /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", className: classes2.copyValue, onClick: toggleOpen, children: open2 ? /* @__PURE__ */ jsxRuntimeExports.jsx(Minus, { strokeWidth: 1 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Edit, { strokeWidth: 1 }) })
|
|
89809
|
+
] })
|
|
89810
|
+
] }),
|
|
89811
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Collapse, { in: open2, timeout: "auto", unmountOnExit: true, children: [
|
|
89812
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { display: "flex", alignItems: "center", width: "100%", minWidth: 0, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89813
|
+
InputBase,
|
|
89610
89814
|
{
|
|
89611
|
-
|
|
89612
|
-
|
|
89613
|
-
|
|
89614
|
-
|
|
89815
|
+
value: inputValue,
|
|
89816
|
+
placeholder,
|
|
89817
|
+
onChange: handleChange,
|
|
89818
|
+
fullWidth: true,
|
|
89819
|
+
className: classes2.content,
|
|
89820
|
+
autoFocus: true,
|
|
89821
|
+
hidden: locked2,
|
|
89822
|
+
inputProps: {
|
|
89823
|
+
style: {
|
|
89824
|
+
width: "100%",
|
|
89825
|
+
minWidth: 220,
|
|
89826
|
+
whiteSpace: "nowrap",
|
|
89827
|
+
overflow: "hidden",
|
|
89828
|
+
textOverflow: "ellipsis"
|
|
89829
|
+
},
|
|
89830
|
+
maxLength: 512
|
|
89831
|
+
}
|
|
89615
89832
|
}
|
|
89616
|
-
),
|
|
89617
|
-
|
|
89833
|
+
) }),
|
|
89834
|
+
helperText && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandableListItemNote, { children: helperText })
|
|
89618
89835
|
] })
|
|
89619
|
-
] }),
|
|
89620
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: open2, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.
|
|
89621
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89622
|
-
|
|
89836
|
+
] }) }),
|
|
89837
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: open2, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mt: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ExpandableListItemActions, { children: [
|
|
89838
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89839
|
+
SwarmButton,
|
|
89623
89840
|
{
|
|
89624
|
-
|
|
89625
|
-
|
|
89626
|
-
|
|
89627
|
-
|
|
89628
|
-
|
|
89629
|
-
|
|
89630
|
-
|
|
89631
|
-
inputProps: {
|
|
89632
|
-
style: {
|
|
89633
|
-
width: "100%",
|
|
89634
|
-
minWidth: 220,
|
|
89635
|
-
whiteSpace: "nowrap",
|
|
89636
|
-
overflow: "hidden",
|
|
89637
|
-
textOverflow: "ellipsis"
|
|
89638
|
-
},
|
|
89639
|
-
maxLength: 512
|
|
89640
|
-
}
|
|
89841
|
+
disabled: loading || inputValue === value || Boolean(confirmLabelDisabled) || inputValue === "" && value === void 0,
|
|
89842
|
+
loading,
|
|
89843
|
+
iconType: confirmIcon ?? Check,
|
|
89844
|
+
onClick: () => {
|
|
89845
|
+
onConfirm?.(inputValue.trim());
|
|
89846
|
+
},
|
|
89847
|
+
children: confirmLabel || "Save"
|
|
89641
89848
|
}
|
|
89642
|
-
)
|
|
89643
|
-
|
|
89644
|
-
|
|
89645
|
-
|
|
89646
|
-
|
|
89647
|
-
|
|
89648
|
-
|
|
89649
|
-
|
|
89650
|
-
|
|
89651
|
-
|
|
89652
|
-
|
|
89653
|
-
|
|
89654
|
-
|
|
89655
|
-
}
|
|
89656
|
-
),
|
|
89657
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89658
|
-
SwarmButton,
|
|
89659
|
-
{
|
|
89660
|
-
disabled: loading || inputValue === value || inputValue === "",
|
|
89661
|
-
iconType: X,
|
|
89662
|
-
onClick: () => setInputValue(value || ""),
|
|
89663
|
-
cancel: true,
|
|
89664
|
-
children: "Cancel"
|
|
89665
|
-
}
|
|
89666
|
-
)
|
|
89667
|
-
] }) })
|
|
89668
|
-
] }) })
|
|
89669
|
-
] }) });
|
|
89849
|
+
),
|
|
89850
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
89851
|
+
SwarmButton,
|
|
89852
|
+
{
|
|
89853
|
+
disabled: loading || inputValue === value || inputValue === "",
|
|
89854
|
+
iconType: X,
|
|
89855
|
+
onClick: () => setInputValue(value || ""),
|
|
89856
|
+
cancel: true,
|
|
89857
|
+
children: "Cancel"
|
|
89858
|
+
}
|
|
89859
|
+
)
|
|
89860
|
+
] }) }) })
|
|
89861
|
+
] });
|
|
89670
89862
|
}
|
|
89671
89863
|
function getPrettyDateString(date) {
|
|
89672
89864
|
const string = date.toString();
|
|
@@ -89676,11 +89868,17 @@ const useStyles$d = makeStyles()((theme2) => ({
|
|
|
89676
89868
|
header: {
|
|
89677
89869
|
backgroundColor: theme2.palette.background.paper,
|
|
89678
89870
|
marginBottom: theme2.spacing(0.25),
|
|
89679
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
89680
|
-
wordBreak: "break-word"
|
|
89871
|
+
borderLeft: `${theme2.spacing(0.25)} solid rgba(0,0,0,0)`,
|
|
89872
|
+
wordBreak: "break-word",
|
|
89873
|
+
"&:hover": {
|
|
89874
|
+
backgroundColor: theme2.palette.background.paper
|
|
89875
|
+
},
|
|
89876
|
+
"&:focus-within": {
|
|
89877
|
+
backgroundColor: theme2.palette.background.paper
|
|
89878
|
+
}
|
|
89681
89879
|
},
|
|
89682
89880
|
headerOpen: {
|
|
89683
|
-
borderLeft: `${theme2.spacing(0.25)}
|
|
89881
|
+
borderLeft: `${theme2.spacing(0.25)} solid ${theme2.palette.primary.main}`
|
|
89684
89882
|
},
|
|
89685
89883
|
openLinkIcon: {
|
|
89686
89884
|
cursor: "pointer",
|
|
@@ -92330,14 +92528,17 @@ function StripedWrapper({ children }) {
|
|
|
92330
92528
|
function AssetIcon({ icon }) {
|
|
92331
92529
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(StripedWrapper, { children: icon });
|
|
92332
92530
|
}
|
|
92333
|
-
const getPreviewElement = (previewUri, metadata) => {
|
|
92334
|
-
|
|
92531
|
+
const getPreviewElement = (previewUri, metadata, type) => {
|
|
92532
|
+
const isVideoType = Boolean(type && /.*\.(mp4|webm|ogv)$/i.test(type));
|
|
92533
|
+
const isAudioType = Boolean(type && /.*\.(mp3|ogg|oga|wav|webm|m4a|aac|flac)$/i.test(type));
|
|
92534
|
+
const isImageType = Boolean(type && /.*\.(jpg|jpeg|png|gif|webp|svg|ico)$/i.test(type));
|
|
92535
|
+
if (metadata?.isVideo || isVideoType) {
|
|
92335
92536
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(FitVideo, { src: previewUri, maxWidth: "250px", maxHeight: "175px" });
|
|
92336
92537
|
}
|
|
92337
|
-
if (metadata?.isAudio) {
|
|
92538
|
+
if (metadata?.isAudio || isAudioType) {
|
|
92338
92539
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(FitAudio, { src: previewUri, maxWidth: "250px" });
|
|
92339
92540
|
}
|
|
92340
|
-
if (metadata?.isImage) {
|
|
92541
|
+
if (metadata?.isImage || isImageType) {
|
|
92341
92542
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(FitImage, { maxWidth: "250px", maxHeight: "175px", alt: "Upload Preview", src: previewUri });
|
|
92342
92543
|
}
|
|
92343
92544
|
if (metadata?.isWebsite) {
|
|
@@ -92351,11 +92552,17 @@ const getPreviewElement = (previewUri, metadata) => {
|
|
|
92351
92552
|
const getType = (metadata) => {
|
|
92352
92553
|
if (metadata?.isWebsite) return "Website";
|
|
92353
92554
|
if (metadata?.type === "folder") return "Folder";
|
|
92354
|
-
|
|
92555
|
+
let metadataType = metadata?.type || "unknown";
|
|
92556
|
+
let typeFromExtension;
|
|
92557
|
+
if (metadataType === "unknown" && metadata?.name) {
|
|
92558
|
+
const { mime } = guessMime(metadata.name);
|
|
92559
|
+
typeFromExtension = mime === "application/octet-stream" ? "file" : mime;
|
|
92560
|
+
}
|
|
92561
|
+
return typeFromExtension || metadataType;
|
|
92355
92562
|
};
|
|
92356
92563
|
function AssetPreview({ metadata, previewUri }) {
|
|
92357
|
-
const previewElement = React.useMemo(() => getPreviewElement(previewUri, metadata), [metadata, previewUri]);
|
|
92358
92564
|
const type = React.useMemo(() => getType(metadata), [metadata]);
|
|
92565
|
+
const previewElement = React.useMemo(() => getPreviewElement(previewUri, metadata, type), [metadata, type, previewUri]);
|
|
92359
92566
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 4, children: [
|
|
92360
92567
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { bgcolor: "background.paper", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, direction: "row", children: [
|
|
92361
92568
|
previewElement,
|
|
@@ -92500,13 +92707,13 @@ function Share() {
|
|
|
92500
92707
|
const count = Object.keys(entries).length;
|
|
92501
92708
|
const isVideo = Boolean(indexDocument2 && /.*\.(mp4|webm|ogv)$/i.test(indexDocument2));
|
|
92502
92709
|
const isAudio = Boolean(indexDocument2 && /.*\.(mp3|ogg|oga|wav|webm|m4a|aac|flac)$/i.test(indexDocument2));
|
|
92503
|
-
const isImage = Boolean(indexDocument2 && /.*\.(jpg|jpeg|png|gif|webp|svg)$/i.test(indexDocument2));
|
|
92710
|
+
const isImage = Boolean(indexDocument2 && /.*\.(jpg|jpeg|png|gif|webp|svg|ico)$/i.test(indexDocument2));
|
|
92504
92711
|
if (isImage || isVideo || isAudio) {
|
|
92505
92712
|
setPreview(`${apiUrl}/bzz/${hash2}`);
|
|
92506
92713
|
}
|
|
92507
92714
|
setMetadata({
|
|
92508
92715
|
hash: hash2,
|
|
92509
|
-
type: count > 1 ? "folder" :
|
|
92716
|
+
type: count > 1 ? "folder" : getType(),
|
|
92510
92717
|
name: indexDocument2 || hash2 || "",
|
|
92511
92718
|
count,
|
|
92512
92719
|
isWebsite: Boolean(indexDocument2 && /.*\.html?$/i.test(indexDocument2)),
|
|
@@ -92754,7 +92961,7 @@ function PostageStampAdvancedCreation({ onFinished }) {
|
|
|
92754
92961
|
}
|
|
92755
92962
|
}
|
|
92756
92963
|
function getPrice(depth, amount) {
|
|
92757
|
-
const hasInvalidInput = amount <= 0 || isNaN(depth) || depth <
|
|
92964
|
+
const hasInvalidInput = amount <= 0 || isNaN(depth) || depth < MIN_STAMP_DEPTH || depth > MAX_STAMP_DEPTH;
|
|
92758
92965
|
if (hasInvalidInput) {
|
|
92759
92966
|
return "-";
|
|
92760
92967
|
}
|
|
@@ -92807,32 +93014,13 @@ function PostageStampAdvancedCreation({ onFinished }) {
|
|
|
92807
93014
|
}
|
|
92808
93015
|
setAmountInput(validAmountInput);
|
|
92809
93016
|
}
|
|
92810
|
-
function validateDepthInput(depthInput2) {
|
|
92811
|
-
let validDepthInput = "0";
|
|
92812
|
-
if (!depthInput2) {
|
|
92813
|
-
setDepthError("Required field");
|
|
92814
|
-
} else {
|
|
92815
|
-
const depth = new BigNumber(depthInput2);
|
|
92816
|
-
if (!depth.isInteger()) {
|
|
92817
|
-
setDepthError("Depth must be an integer");
|
|
92818
|
-
} else if (depth.isLessThan(17)) {
|
|
92819
|
-
setDepthError("Minimal depth is 17");
|
|
92820
|
-
} else if (depth.isGreaterThan(255)) {
|
|
92821
|
-
setDepthError("Depth has to be at most 255");
|
|
92822
|
-
} else {
|
|
92823
|
-
setDepthError("");
|
|
92824
|
-
validDepthInput = depthInput2;
|
|
92825
|
-
}
|
|
92826
|
-
}
|
|
92827
|
-
setDepthInput(validDepthInput);
|
|
92828
|
-
}
|
|
92829
93017
|
function renderStampVolumesInfo() {
|
|
92830
93018
|
const depth = parseInt(depthInput, 10);
|
|
92831
|
-
if (depthError || isNaN(depth) || depth <
|
|
93019
|
+
if (depthError || isNaN(depth) || depth < MIN_STAMP_DEPTH || depth > MAX_STAMP_DEPTH) {
|
|
92832
93020
|
return "-";
|
|
92833
93021
|
}
|
|
92834
93022
|
const theoreticalMaximumVolume = getHumanReadableFileSize(getStampTheoreticalBytes(depth));
|
|
92835
|
-
const effectiveVolume = getHumanReadableFileSize(getStampEffectiveBytes(depth));
|
|
93023
|
+
const effectiveVolume = getHumanReadableFileSize(getStampEffectiveBytes(depth, false, RedundancyLevel.OFF));
|
|
92836
93024
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, alignItems: "center", className: classes2.stampVolumeWrapper, children: [
|
|
92837
93025
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { children: [
|
|
92838
93026
|
"Theoretical: ~",
|
|
@@ -92869,7 +93057,14 @@ function PostageStampAdvancedCreation({ onFinished }) {
|
|
|
92869
93057
|
"."
|
|
92870
93058
|
] }) }),
|
|
92871
93059
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 2, children: [
|
|
92872
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
93060
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
93061
|
+
SwarmTextInput,
|
|
93062
|
+
{
|
|
93063
|
+
name: "depth",
|
|
93064
|
+
label: "Depth",
|
|
93065
|
+
onChange: (event) => validateDepthInput(event.target.value, setDepthError, setDepthInput)
|
|
93066
|
+
}
|
|
93067
|
+
),
|
|
92873
93068
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mt: 0.25, sx: { bgcolor: "#f6f6f6" }, p: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: [
|
|
92874
93069
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: "Corresponding file size" }),
|
|
92875
93070
|
renderStampVolumesInfo()
|
|
@@ -92890,7 +93085,7 @@ function PostageStampAdvancedCreation({ onFinished }) {
|
|
|
92890
93085
|
SwarmSelect,
|
|
92891
93086
|
{
|
|
92892
93087
|
label: "Immutable",
|
|
92893
|
-
value: "No",
|
|
93088
|
+
value: immutable ? "Yes" : "No",
|
|
92894
93089
|
onChange: (event) => setImmutable(event.target.value === "Yes"),
|
|
92895
93090
|
options: [
|
|
92896
93091
|
{ value: "Yes", label: "Yes" },
|
|
@@ -93353,7 +93548,7 @@ const bzzABI = [
|
|
|
93353
93548
|
}
|
|
93354
93549
|
];
|
|
93355
93550
|
async function getNetworkChainId(url) {
|
|
93356
|
-
const provider =
|
|
93551
|
+
const provider = newGnosisProviderForValidation(url);
|
|
93357
93552
|
const network = await provider.getNetwork();
|
|
93358
93553
|
return network.chainId;
|
|
93359
93554
|
}
|
|
@@ -93396,7 +93591,7 @@ async function sendNativeTransaction(privateKey, to, value, jsonRpcProviderUrl,
|
|
|
93396
93591
|
const feedData = await signer.provider.getFeeData();
|
|
93397
93592
|
const gasPrice = externalGasPrice ?? DAI.fromWei(feedData.gasPrice?.toString() || "0");
|
|
93398
93593
|
const transaction = await signer.sendTransaction({
|
|
93399
|
-
to: to.
|
|
93594
|
+
to: to.toChecksum(),
|
|
93400
93595
|
value: BigInt(value.toWeiString()),
|
|
93401
93596
|
gasPrice: BigInt(gasPrice.toWeiString()),
|
|
93402
93597
|
gasLimit: BigInt(21e3),
|
|
@@ -93418,7 +93613,7 @@ async function sendBzzTransaction(privateKey, to, value, jsonRpcProviderUrl) {
|
|
|
93418
93613
|
const feeData = await signer.provider.getFeeData();
|
|
93419
93614
|
const gasPrice = feeData.gasPrice || BigInt(0);
|
|
93420
93615
|
const bzz = new Contract(BZZ_TOKEN_ADDRESS, bzzABI, signer);
|
|
93421
|
-
const transaction = await bzz.transfer(to.toChecksum(), value, { gasPrice });
|
|
93616
|
+
const transaction = await bzz.transfer(to.toChecksum(), value.toPLURBigInt(), { gasPrice });
|
|
93422
93617
|
const receipt = await transaction.wait(1);
|
|
93423
93618
|
if (!receipt) {
|
|
93424
93619
|
throw new Error("Invalid receipt!");
|
|
@@ -121948,11 +122143,16 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
121948
122143
|
const { classes: classes2 } = useStyles$6();
|
|
121949
122144
|
const { refresh } = React.useContext(Context$5);
|
|
121950
122145
|
const { beeApi } = React.useContext(Context$8);
|
|
122146
|
+
const { chainState } = React.useContext(Context$7);
|
|
121951
122147
|
const [depthInput, setDepthInput] = React.useState(getDepthForSize(Size.fromGigabytes(4)));
|
|
121952
122148
|
const [amountInput, setAmountInput] = React.useState(getAmountForDuration(Duration.fromDays(30), 26500, 5));
|
|
121953
122149
|
const [labelInput, setLabelInput] = React.useState("");
|
|
121954
122150
|
const [submitting, setSubmitting] = React.useState(false);
|
|
121955
122151
|
const [buttonValue, setButtonValue] = React.useState(4);
|
|
122152
|
+
const [depthError, setDepthError] = React.useState("");
|
|
122153
|
+
const [sliderValue, setSliderValue] = React.useState(30);
|
|
122154
|
+
const pricePerBlockDefault = 24e3;
|
|
122155
|
+
const currentPrice = chainState?.currentPrice ?? pricePerBlockDefault;
|
|
121956
122156
|
const getBatchValue = (value) => {
|
|
121957
122157
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { flex: 1 }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
121958
122158
|
Button$1,
|
|
@@ -121972,15 +122172,15 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
121972
122172
|
if (typeof newValue !== "number") {
|
|
121973
122173
|
return;
|
|
121974
122174
|
}
|
|
121975
|
-
const amountValue = getAmountForDuration(Duration.fromDays(newValue),
|
|
122175
|
+
const amountValue = getAmountForDuration(Duration.fromDays(newValue), currentPrice, 5);
|
|
121976
122176
|
setAmountInput(amountValue);
|
|
122177
|
+
setSliderValue(newValue);
|
|
121977
122178
|
}
|
|
121978
122179
|
const { enqueueSnackbar } = useSnackbar();
|
|
121979
122180
|
function getTtl(amount) {
|
|
121980
|
-
const pricePerBlock = 24e3;
|
|
121981
122181
|
return `${secondsToTimeString(
|
|
121982
|
-
getStampDuration(amount,
|
|
121983
|
-
)} (with price of ${
|
|
122182
|
+
getStampDuration(amount, currentPrice, 5).toSeconds()
|
|
122183
|
+
)} (with price of ${currentPrice} PLUR per block)`;
|
|
121984
122184
|
}
|
|
121985
122185
|
function getPrice(depth, amount) {
|
|
121986
122186
|
const price = getStampCost(depth, amount);
|
|
@@ -121995,14 +122195,14 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
121995
122195
|
return;
|
|
121996
122196
|
}
|
|
121997
122197
|
setSubmitting(true);
|
|
121998
|
-
|
|
121999
|
-
|
|
122000
|
-
|
|
122001
|
-
|
|
122002
|
-
|
|
122003
|
-
|
|
122004
|
-
|
|
122005
|
-
|
|
122198
|
+
await beeApi.buyStorage(
|
|
122199
|
+
Size.fromGigabytes(buttonValue),
|
|
122200
|
+
Duration.fromDays(sliderValue),
|
|
122201
|
+
{ label: labelInput, immutableFlag: true },
|
|
122202
|
+
void 0,
|
|
122203
|
+
false,
|
|
122204
|
+
RedundancyLevel.OFF
|
|
122205
|
+
);
|
|
122006
122206
|
await refresh();
|
|
122007
122207
|
onFinished();
|
|
122008
122208
|
} catch (e2) {
|
|
@@ -122013,8 +122213,8 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
122013
122213
|
}
|
|
122014
122214
|
function handleBatchSize(gigabytes) {
|
|
122015
122215
|
setButtonValue(gigabytes);
|
|
122016
|
-
const capacity = getDepthForSize(Size.fromGigabytes(gigabytes));
|
|
122017
|
-
|
|
122216
|
+
const capacity = getDepthForSize(Size.fromGigabytes(gigabytes), false, RedundancyLevel.OFF);
|
|
122217
|
+
validateDepthInput(String(capacity), setDepthError, (v) => setDepthInput(Number(v)));
|
|
122018
122218
|
}
|
|
122019
122219
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
122020
122220
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { children: [
|
|
@@ -122033,11 +122233,14 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
122033
122233
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h2", children: "Batch name" }) }),
|
|
122034
122234
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsx(SwarmTextInput, { name: "depth", label: "Label", onChange: (e2) => setLabelInput(e2.target.value) }) }),
|
|
122035
122235
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h2", children: "Batch size" }) }),
|
|
122036
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
122037
|
-
|
|
122038
|
-
|
|
122039
|
-
|
|
122040
|
-
|
|
122236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 2, children: [
|
|
122237
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { display: "flex", gap: 1 }, children: [
|
|
122238
|
+
getBatchValue(4),
|
|
122239
|
+
getBatchValue(32),
|
|
122240
|
+
getBatchValue(256)
|
|
122241
|
+
] }),
|
|
122242
|
+
depthError && /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: depthError })
|
|
122243
|
+
] }),
|
|
122041
122244
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h2", children: "Data persistence" }) }),
|
|
122042
122245
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
122043
122246
|
Slider,
|
|
@@ -122057,7 +122260,11 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
122057
122260
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: "Corresponding TTL (Time to live)" }),
|
|
122058
122261
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: amountInput ? getTtl(amountInput) : "-" })
|
|
122059
122262
|
] }) }),
|
|
122060
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { display: "flex", justifyContent: "right", mt: 0.5, children: /* @__PURE__ */ jsxRuntimeExports.
|
|
122263
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { display: "flex", justifyContent: "right", mt: 0.5, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { style: { fontSize: "10px", color: "rgba(0, 0, 0, 0.26)" }, children: [
|
|
122264
|
+
"Current price of ",
|
|
122265
|
+
currentPrice,
|
|
122266
|
+
" PLUR per block"
|
|
122267
|
+
] }) })
|
|
122061
122268
|
] }),
|
|
122062
122269
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Box, { mb: 4, sx: { bgcolor: "#fcf2e8" }, p: 2, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, justifyContent: "space-between", children: [
|
|
122063
122270
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { children: "Indicative Price" }),
|
|
@@ -122067,7 +122274,7 @@ function PostageStampStandardCreation({ onFinished }) {
|
|
|
122067
122274
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
122068
122275
|
SwarmButton,
|
|
122069
122276
|
{
|
|
122070
|
-
disabled: submitting || !depthInput || !amountInput,
|
|
122277
|
+
disabled: submitting || !depthInput || Boolean(depthError) || !amountInput,
|
|
122071
122278
|
onClick: submit,
|
|
122072
122279
|
iconType: Check,
|
|
122073
122280
|
loading: submitting,
|
|
@@ -159484,7 +159691,7 @@ function SideBar() {
|
|
|
159484
159691
|
label: "File Manager",
|
|
159485
159692
|
path: ROUTES.FILEMANAGER,
|
|
159486
159693
|
icon: FileManagerIcon,
|
|
159487
|
-
pathMatcherSubstring: "/filemanager
|
|
159694
|
+
pathMatcherSubstring: "/filemanager"
|
|
159488
159695
|
},
|
|
159489
159696
|
{
|
|
159490
159697
|
label: "Account",
|