From 68a19be4ff067065747969d9fe9fac23a3580d86 Mon Sep 17 00:00:00 2001 From: Jesper Nilsson Date: Sat, 1 Apr 2023 07:41:05 +0200 Subject: [PATCH 1/2] properly navigate to login/onboarding --- frontend/src/context/ViseronContext.tsx | 26 ++++++++++++++++++------- frontend/src/pages/Login.tsx | 19 ++++++++++++++---- frontend/src/pages/Onboarding.tsx | 2 +- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/frontend/src/context/ViseronContext.tsx b/frontend/src/context/ViseronContext.tsx index 8777cb84..38f48b1f 100644 --- a/frontend/src/context/ViseronContext.tsx +++ b/frontend/src/context/ViseronContext.tsx @@ -1,7 +1,14 @@ import { useQueryClient } from "@tanstack/react-query"; -import React, { FC, createContext, useEffect, useState } from "react"; +import React, { + FC, + createContext, + useContext, + useEffect, + useState, +} from "react"; import { useNavigate } from "react-router-dom"; +import { AuthContext } from "context/AuthContext"; import { toastIds, useToast } from "hooks/UseToast"; import { subscribeCameras, subscribeRecording } from "lib/commands"; import * as types from "lib/types"; @@ -27,17 +34,19 @@ export const ViseronContext = export const ViseronProvider: FC = ({ children, }: ViseronProviderProps) => { - const [connection, setConnection] = useState( - undefined - ); - const [connected, setConnected] = useState(false); + const { auth } = useContext(AuthContext); const navigate = useNavigate(); const queryClient = useQueryClient(); const toast = useToast(); + const [connection, setConnection] = useState( + undefined + ); + const [connected, setConnected] = useState(false); const onConnectRef = React.useRef<() => void>(); const onDisconnectRef = React.useRef<() => void>(); const onConnectionErrorRef = React.useRef<() => void>(); + useEffect(() => { if (connection) { const cameraRegistered = async (camera: types.Camera) => { @@ -71,8 +80,11 @@ export const ViseronProvider: FC = ({ setConnected(false); }; onConnectionErrorRef.current = async () => { - console.error("Connection error, redirecting to login"); - navigate("/login"); + if (auth.enabled) { + const url = auth.onboarding_complete ? "/login" : "/onboarding"; + console.error(`Connection error, redirecting to ${url}`); + navigate(url); + } }; connection.addEventListener("connected", onConnectRef.current); diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index 612dc54b..707f4dfd 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -4,11 +4,12 @@ import Container from "@mui/material/Container"; import Grid from "@mui/material/Grid"; import Paper from "@mui/material/Paper"; import Typography from "@mui/material/Typography"; -import { useEffect, useReducer, useRef } from "react"; -import { useLocation, useNavigate } from "react-router-dom"; +import { useContext, useEffect, useReducer, useRef } from "react"; +import { Navigate, useLocation, useNavigate } from "react-router-dom"; import { ReactComponent as ViseronLogo } from "viseron-logo.svg"; import { TextFieldItem, TextFieldItemState } from "components/TextFieldItem"; +import { AuthContext } from "context/AuthContext"; import { useTitle } from "hooks/UseTitle"; import { useAuthLogin } from "lib/api/auth"; import queryClient from "lib/api/client"; @@ -42,12 +43,14 @@ function reducer(state: InputState, action: InputAction): InputState { const Login = () => { useTitle("Login"); - const [inputState, dispatch] = useReducer(reducer, initialState); + const { auth } = useContext(AuthContext); const location = useLocation(); const navigate = useNavigate(); - const fromRef = useRef(); const login = useAuthLogin(); + const [inputState, dispatch] = useReducer(reducer, initialState); + const fromRef = useRef(); + queryClient.removeQueries({ predicate(query) { return query.queryKey[0] !== "auth" && query.queryKey[1] !== "enabled"; @@ -68,6 +71,14 @@ const Login = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + if (auth.enabled && !auth.onboarding_complete) { + return ; + } + + if (!auth.enabled) { + return ; + } + return ( diff --git a/frontend/src/pages/Onboarding.tsx b/frontend/src/pages/Onboarding.tsx index 5bd09f97..c5a3341b 100644 --- a/frontend/src/pages/Onboarding.tsx +++ b/frontend/src/pages/Onboarding.tsx @@ -58,7 +58,7 @@ const Onboarding = () => { const [inputState, dispatch] = useReducer(reducer, initialState); const onboarding = useOnboarding(); - if (auth.enabled && auth.onboarding_complete) { + if ((auth.enabled && auth.onboarding_complete) || !auth.enabled) { return ; } From fd86c13b5893317245e5b8ae296af9d7086c953c Mon Sep 17 00:00:00 2001 From: Jesper Nilsson Date: Sat, 1 Apr 2023 08:16:22 +0200 Subject: [PATCH 2/2] preload libgomp --- docker/jetson-nano/Dockerfile.base | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/jetson-nano/Dockerfile.base b/docker/jetson-nano/Dockerfile.base index dd499906..0c29ba1f 100644 --- a/docker/jetson-nano/Dockerfile.base +++ b/docker/jetson-nano/Dockerfile.base @@ -16,7 +16,8 @@ ARG JETPACK_VERSION_MAJOR ARG JETPACK_VERSION_MINOR ARG JETSON_NANO_FFMPEG_APT_VERSION ENV \ - LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra:/usr/lib/aarch64-linux-gnu/tegra-egl" + LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra:/usr/lib/aarch64-linux-gnu/tegra-egl" \ + LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libgomp.so.1" RUN \ cd /usr/local/bin && \