diff --git a/client/web/src/components/app.tsx b/client/web/src/components/app.tsx index 8dd90c188..b684615fa 100644 --- a/client/web/src/components/app.tsx +++ b/client/web/src/components/app.tsx @@ -15,7 +15,7 @@ export default function App() { ) : ( <>
-
+
diff --git a/client/web/src/components/legacy.tsx b/client/web/src/components/legacy.tsx index 7c599d4a1..9d0ec5640 100644 --- a/client/web/src/components/legacy.tsx +++ b/client/web/src/components/legacy.tsx @@ -7,9 +7,13 @@ import { NodeData, NodeUpdate } from "src/hooks/node-data" // purely to ease migration to the new React-based web client, and will // eventually be completely removed. -export function Header(props: { data: NodeData }) { - const { data } = props - +export function Header({ + data, + updateNode, +}: { + data: NodeData + updateNode: (update: NodeUpdate) => void +}) { return (
- {data.Profile && ( - <> -
-

- {data.Profile.LoginName} -

-
- - Switch account - {" "} - |{" "} - - Reauthenticate - {" "} - |{" "} - - Logout - + {data.Profile && + data.Status !== "NoState" && + data.Status !== "NeedsLogin" && ( + <> +
+

+ {data.Profile.LoginName} +

+
+ {" "} + |{" "} + {" "} + |{" "} + +
-
-
- {data.Profile.ProfilePicURL ? ( -
- ) : ( -
- )} -
- - )} +
+ {data.Profile.ProfilePicURL ? ( +
+ ) : ( +
+ )} +
+ + )}
) @@ -129,9 +144,9 @@ export function IP(props: { data: NodeData }) { -
-

{data.DeviceName}

-
+

+ {data.DeviceName || "Your device"} +

{data.IP}
@@ -190,11 +205,12 @@ export function State({ .

- - - + ) } else { @@ -215,9 +231,12 @@ export function State({ .

- - - + ) } diff --git a/client/web/src/hooks/node-data.ts b/client/web/src/hooks/node-data.ts index 444c9190d..507971d2d 100644 --- a/client/web/src/hooks/node-data.ts +++ b/client/web/src/hooks/node-data.ts @@ -56,6 +56,7 @@ export default function useNodeData() { setIsPosting(true) update = { + ...update, // Default to current data value for any unset fields. AdvertiseRoutes: update.AdvertiseRoutes !== undefined