diff --git a/hyperdrive/src/main.rs b/hyperdrive/src/main.rs index 956bb2f6b..ebb5318b8 100644 --- a/hyperdrive/src/main.rs +++ b/hyperdrive/src/main.rs @@ -489,7 +489,6 @@ async fn main() { // Create the cache_sources file with test content let data_file_path = initfiles_dir.join("cache_sources"); - #[cfg(not(feature = "simulation-mode"))] { // Write cache_source_vector to cache_sources as JSON diff --git a/hyperdrive/src/register-ui/src/components/EnterHnsName.tsx b/hyperdrive/src/register-ui/src/components/EnterHnsName.tsx index 7ce5ead15..ceea70c0b 100644 --- a/hyperdrive/src/register-ui/src/components/EnterHnsName.tsx +++ b/hyperdrive/src/register-ui/src/components/EnterHnsName.tsx @@ -22,6 +22,8 @@ type EnterNameProps = { triggerNameCheck: boolean; setTba?: React.Dispatch>; isReset?: boolean; + readOnly?: boolean; + disabled?: boolean; }; function EnterHnsName({ @@ -34,6 +36,8 @@ function EnterHnsName({ triggerNameCheck, setTba, isReset = false, + readOnly = false, + disabled = false, }: EnterNameProps) { const client = usePublicClient(); const debouncer = useRef(null); @@ -118,6 +122,8 @@ function EnterHnsName({ const noSpaces = (e: any) => e.target.value.indexOf(" ") === -1 && setName(e.target.value); + const isLocked = readOnly || disabled; + return (
@@ -128,7 +134,10 @@ function EnterHnsName({ required name="hns-name" placeholder="node-name" - className="grow rounded-r-none" + className={`grow rounded-r-none ${isLocked ? "bg-gray-200 dark:bg-slate-800 cursor-not-allowed" : ""}`} + readOnly={readOnly} + disabled={disabled} + aria-readonly={readOnly || undefined} /> {fixedTlz && ([]) + const [currentNodeName, setCurrentNodeName] = useState(""); + const [resetDifferentNodeId, setResetDifferentNodeId] = useState(false); // Track initial states for checkbox help text const [initiallyDirect, setInitiallyDirect] = useState(undefined); @@ -134,6 +138,14 @@ function ResetHnsName({ res.json() )) as UnencryptedIdentity; + if (infoData?.name) { + setCurrentNodeName(infoData.name); + setName(infoData.name); + setHnsName(infoData.name); + } else { + setResetDifferentNodeId(true); + } + const allowedRouters = Array.isArray(infoData.allowed_routers) ? infoData.allowed_routers : undefined; @@ -162,6 +174,7 @@ function ResetHnsName({ } } catch (error) { console.log("Could not fetch node info:", error); + setResetDifferentNodeId(true); } })(); }, []); @@ -241,6 +254,19 @@ function ResetHnsName({ }, [isConfirmed, setReset, setDirect, direct, navigate]); + const handleResetDifferentNodeIdToggle = () => { + setResetDifferentNodeId((prev) => { + const next = !prev; + if (!next && currentNodeName) { + setName(currentNodeName); + setHnsName(currentNodeName); + } + return next; + }); + }; + + const isNameReadOnly = !resetDifferentNodeId && !!currentNodeName; + return (
@@ -253,7 +279,19 @@ function ResetHnsName({

Node ID to reset:

- +

Nodes use an onchain username in order to identify themselves to other nodes in the network.

@@ -306,6 +344,27 @@ function ResetHnsName({ )}
)} +
+ +
+ Reset different node ID. + If you are unsure, leave unchecked. +
+ +