mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix account data settings
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import React, { useState, useEffect, useRef } from "react";
|
import React, { useState, useEffect, useMemo, useRef } from "react";
|
||||||
import { Link, useLocation, useNavigate } from "react-router-dom";
|
import { Link, useLocation, useNavigate } from "react-router-dom";
|
||||||
import Modal from "react-modal";
|
import Modal from "react-modal";
|
||||||
import { deleteAccount, deleteCaches, exportAccount, importAccount, setAccount, setActiveAccount, useAccount, useAccounts, useResolvedAuthorAddress } from "@plebbit/plebbit-react-hooks";
|
import { deleteAccount, deleteCaches, importAccount, setAccount, setActiveAccount, useAccount, useAccounts, useResolvedAuthorAddress } from "@plebbit/plebbit-react-hooks";
|
||||||
import stringify from "json-stringify-pretty-compact"
|
import stringify from "json-stringify-pretty-compact"
|
||||||
import { StyledModal } from "../styled/modals/SettingsModal.styled";
|
import { StyledModal } from "../styled/modals/SettingsModal.styled";
|
||||||
import useError from "../../hooks/useError";
|
import useError from "../../hooks/useError";
|
||||||
@@ -13,16 +13,12 @@ const {version} = packageJson;
|
|||||||
|
|
||||||
|
|
||||||
const SettingsModal = ({ isOpen, closeModal }) => {
|
const SettingsModal = ({ isOpen, closeModal }) => {
|
||||||
const {
|
const { selectedStyle } = useGeneralStore(state => state);
|
||||||
selectedStyle,
|
|
||||||
} = useGeneralStore(state => state);
|
|
||||||
|
|
||||||
const { anonymousMode, setAnonymousMode } = useAnonModeStore();
|
const { anonymousMode, setAnonymousMode } = useAnonModeStore();
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
const [expanded, setExpanded] = useState([]);
|
const [expanded, setExpanded] = useState([]);
|
||||||
const [accountJson, setAccountJson] = useState("");
|
|
||||||
const [copyStatus, setCopyStatus] = useState(false);
|
const [copyStatus, setCopyStatus] = useState(false);
|
||||||
const [ensName, setEnsName] = useState('');
|
const [ensName, setEnsName] = useState('');
|
||||||
const [checkedENS, setCheckedENS] = useState(false);
|
const [checkedENS, setCheckedENS] = useState(false);
|
||||||
@@ -32,6 +28,9 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
|
|
||||||
const account = useAccount();
|
const account = useAccount();
|
||||||
const { accounts } = useAccounts();
|
const { accounts } = useAccounts();
|
||||||
|
const accountJson = useMemo(() => stringify({...account}), [account])
|
||||||
|
const [editedAccountJson, setEditedAccountJson] = useState(accountJson);
|
||||||
|
useEffect(() => { setEditedAccountJson(accountJson)}, [accountJson])
|
||||||
|
|
||||||
const gatewayRef = useRef();
|
const gatewayRef = useRef();
|
||||||
const ipfsRef = useRef();
|
const ipfsRef = useRef();
|
||||||
@@ -47,7 +46,6 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
const author = {...account?.author, address: ensName};
|
const author = {...account?.author, address: ensName};
|
||||||
const { resolvedAddress, state } = useResolvedAuthorAddress({ author, cache: false });
|
const { resolvedAddress, state } = useResolvedAuthorAddress({ author, cache: false });
|
||||||
|
|
||||||
|
|
||||||
const defaultGatewayUrls = isElectron ? undefined : [
|
const defaultGatewayUrls = isElectron ? undefined : [
|
||||||
'https://ipfs.io',
|
'https://ipfs.io',
|
||||||
'https://ipfsgateway.xyz',
|
'https://ipfsgateway.xyz',
|
||||||
@@ -71,36 +69,6 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (account) {
|
|
||||||
const fetchAccountData = async () => {
|
|
||||||
const data = await exportAccount();
|
|
||||||
try {
|
|
||||||
const parsedData = JSON.parse(data);
|
|
||||||
setAccountJson(stringify(parsedData));
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Failed to pretty-print the JSON:", error);
|
|
||||||
setAccountJson(data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
fetchAccountData();
|
|
||||||
}
|
|
||||||
}, [account]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const handleAccountJsonChange = (e) => {
|
|
||||||
try {
|
|
||||||
const parsedData = JSON.parse(e.target.value);
|
|
||||||
setAccountJson(stringify(parsedData));
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Failed to pretty-print the JSON:", error);
|
|
||||||
setAccountJson(e.target.value);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (checkedENS && resolvedAddress && state === 'succeeded') {
|
if (checkedENS && resolvedAddress && state === 'succeeded') {
|
||||||
setCheckedENS(false);
|
setCheckedENS(false);
|
||||||
@@ -130,7 +98,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
address: ensName,
|
address: ensName,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
setNewSuccessMessage("ENS Name Saved");
|
setNewSuccessMessage("ENS name saved successfully.");
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message);
|
setNewErrorMessage(error.message);
|
||||||
@@ -214,7 +182,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await setAccount({ ...account, plebbitOptions });
|
await setAccount({ ...account, plebbitOptions });
|
||||||
localStorage.setItem("successToast", "Settings Saved");
|
localStorage.setItem("successToast", "Settings saved successfully.");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
@@ -263,7 +231,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
chainProviders,
|
chainProviders,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
localStorage.setItem("successToast", "Blockchain Options Saved");
|
localStorage.setItem("successToast", "Blockchain options saved successfully.");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
@@ -289,7 +257,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
pubsubHttpClientsOptions: defaultPubsubHttpClientsOptions,
|
pubsubHttpClientsOptions: defaultPubsubHttpClientsOptions,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
localStorage.setItem("successToast", "Settings Reset");
|
localStorage.setItem("successToast", "Settings reset successfully.");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
@@ -323,7 +291,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
chainProviders,
|
chainProviders,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
localStorage.setItem("successToast", "Blockchain Options Reset");
|
localStorage.setItem("successToast", "Blockchain options reset successfully.");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
@@ -367,7 +335,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (localStorage.getItem("cacheCleared") === "true") {
|
if (localStorage.getItem("cacheCleared") === "true") {
|
||||||
setNewSuccessMessage("Cache Cleared");
|
setNewSuccessMessage("Cache cleared successfully.");
|
||||||
localStorage.removeItem("cacheCleared");
|
localStorage.removeItem("cacheCleared");
|
||||||
}
|
}
|
||||||
}, [setNewSuccessMessage]);
|
}, [setNewSuccessMessage]);
|
||||||
@@ -375,9 +343,9 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
|
|
||||||
const handleSaveAccount = async () => {
|
const handleSaveAccount = async () => {
|
||||||
try {
|
try {
|
||||||
const parsedJson = JSON.parse(accountJson);
|
const parsedJson = JSON.parse(editedAccountJson);
|
||||||
await setAccount(parsedJson);
|
await setAccount(parsedJson);
|
||||||
setNewSuccessMessage("Account Data Saved Successfully");
|
setNewSuccessMessage("Account data saved successfully.");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage("Error saving account data: " + error.message);
|
setNewErrorMessage("Error saving account data: " + error.message);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@@ -385,25 +353,14 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleResetAccount = async () => {
|
|
||||||
try {
|
|
||||||
const data = await exportAccount();
|
|
||||||
setAccountJson(data);
|
|
||||||
} catch (error) {
|
|
||||||
setNewErrorMessage("Error resetting account data: " + error.message);
|
|
||||||
console.error(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
const handleImportAccount = async () => {
|
const handleImportAccount = async () => {
|
||||||
const accountJson = importRef.current.value;
|
const data = importRef.current.value;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const parsedJson = JSON.parse(accountJson);
|
const parsedJson = JSON.parse(data);
|
||||||
await importAccount(accountJson);
|
await importAccount(data);
|
||||||
setActiveAccount(parsedJson.account?.name);
|
setActiveAccount(parsedJson.account?.name);
|
||||||
setNewSuccessMessage("Account Imported");
|
setNewSuccessMessage("Account imported successfully.");
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
@@ -415,7 +372,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
if (window.confirm("Are you sure you want to delete this account?")) {
|
if (window.confirm("Are you sure you want to delete this account?")) {
|
||||||
try {
|
try {
|
||||||
await deleteAccount(account?.name);
|
await deleteAccount(account?.name);
|
||||||
localStorage.setItem("successToast", "Account Deleted Successfully");
|
localStorage.setItem("successToast", "Account deleted successfully.");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage("Error deleting account: " + error.message);
|
setNewErrorMessage("Error deleting account: " + error.message);
|
||||||
@@ -440,7 +397,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
...account?.author,
|
...account?.author,
|
||||||
displayName: name,
|
displayName: name,
|
||||||
}});
|
}});
|
||||||
setNewSuccessMessage("Account Name Saved");
|
setNewSuccessMessage("Account name saved successfully.");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setNewErrorMessage(error.message); console.log(error);
|
setNewErrorMessage(error.message); console.log(error);
|
||||||
}
|
}
|
||||||
@@ -514,9 +471,9 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
</li>
|
</li>
|
||||||
<div className="settings-input">
|
<div className="settings-input">
|
||||||
<textarea id="account-data-text"
|
<textarea id="account-data-text"
|
||||||
value={accountJson}
|
value={editedAccountJson || accountJson}
|
||||||
ref={importRef}
|
ref={importRef}
|
||||||
onChange={handleAccountJsonChange}
|
onChange={(e) => setEditedAccountJson(e.target.value)}
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
autoCorrect="off"
|
autoCorrect="off"
|
||||||
spellCheck="false" />
|
spellCheck="false" />
|
||||||
@@ -524,7 +481,7 @@ const SettingsModal = ({ isOpen, closeModal }) => {
|
|||||||
<button onClick={handleSaveAccount}>
|
<button onClick={handleSaveAccount}>
|
||||||
Save
|
Save
|
||||||
</button>
|
</button>
|
||||||
<button onClick={handleResetAccount}>
|
<button onClick={() => setEditedAccountJson(accountJson)}>
|
||||||
Reset
|
Reset
|
||||||
</button>
|
</button>
|
||||||
<button onClick={handleImportAccount}>
|
<button onClick={handleImportAccount}>
|
||||||
|
|||||||
Reference in New Issue
Block a user