From 4f8922678c9ccbfcda64807b903491308e027e66 Mon Sep 17 00:00:00 2001 From: talksik Date: Thu, 5 May 2022 04:28:20 -0500 Subject: [PATCH] clean up a bunch of shit and use recoil to avoid the prop drilling --- .../desktop/src/components/header/index.tsx | 2 +- packages/desktop/src/controller/recoil.tsx | 12 ++++++ packages/desktop/src/pages/router/index.tsx | 39 ++++--------------- packages/desktop/src/pages/terminal/index.tsx | 18 +++++++-- 4 files changed, 35 insertions(+), 36 deletions(-) diff --git a/packages/desktop/src/components/header/index.tsx b/packages/desktop/src/components/header/index.tsx index 3da321f..f370c6b 100644 --- a/packages/desktop/src/components/header/index.tsx +++ b/packages/desktop/src/components/header/index.tsx @@ -1,9 +1,9 @@ +import { Avatar, Menu } from "antd"; import { GlobalHotKeys, KeyMap } from "react-hotkeys"; import { HeadsetMicSharp, VideocamSharp } from "@mui/icons-material"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { $selectedOutputMode } from "../../controller/recoil"; -import { Avatar } from "antd"; import { FaSearch } from "react-icons/fa"; import Logo from "../Logo"; import { useGetUserDetails } from "../../controller/index"; diff --git a/packages/desktop/src/controller/recoil.tsx b/packages/desktop/src/controller/recoil.tsx index 73cec33..5fee915 100644 --- a/packages/desktop/src/controller/recoil.tsx +++ b/packages/desktop/src/controller/recoil.tsx @@ -41,3 +41,15 @@ export const $maxNumberActiveStreams = atom({ key: "MAX_NUMBER_ACTIVE_STREAMS", default: 0, }); + +type DesktopMode = "flowState" | "overlayOnly" | "terminal" | "terminalDetails"; + +export const $desktopMode = atom({ + key: "DESKTOP_MODE", + default: "terminal", +}); + +export const $selectedLineId = atom({ + key: "SELECTED_LINE_ID", + default: null, +}); diff --git a/packages/desktop/src/pages/router/index.tsx b/packages/desktop/src/pages/router/index.tsx index fcc2371..04fd0c2 100644 --- a/packages/desktop/src/pages/router/index.tsx +++ b/packages/desktop/src/pages/router/index.tsx @@ -1,6 +1,8 @@ import { + $desktopMode, $maxNumberActiveStreams, $numberActiveLines, + $selectedLineId, } from "../../controller/recoil"; import Channels, { DimensionChangeRequest, @@ -11,13 +13,13 @@ import Channels, { } from "../../electron/constants"; import React, { useState } from "react"; import { useCallback, useEffect, useMemo } from "react"; +import { useRecoilState, useRecoilValue } from "recoil"; import LineDetailsTerminal from "../lineDetailsTerminal"; import NirvanaHeader from "../../components/header/index"; import NirvanaTerminal from "../terminal"; import Overlay from "../overlay"; import { Radio } from "antd"; -import { useRecoilValue } from "recoil"; export interface ILineDetails { lineId: string; @@ -219,12 +221,9 @@ const testLines: ILineDetails[] = [ ), ]; -type DesktopMode = "flowState" | "overlayOnly" | "terminal" | "terminalDetails"; - export default function NirvanaRouter() { - const [selectedLineId, setSelectedLineId] = useState(null); - const [desktopMode, setDesktopMode] = - useState("terminalDetails"); + const [selectedLineId, setSelectedLineId] = useRecoilState($selectedLineId); + const [desktopMode, setDesktopMode] = useRecoilState($desktopMode); const numberOfOverlayColumns = useRecoilValue($numberActiveLines); const numberOfOverlayRows = useRecoilValue($maxNumberActiveStreams); @@ -235,7 +234,7 @@ export default function NirvanaRouter() { "window blurring now, should be always on top and then ill tell main process to change dimensions" ); // todo: just in testing mode - // setDesktopMode("overlayOnly"); + setDesktopMode("overlayOnly"); }); }, [setDesktopMode]); @@ -301,15 +300,6 @@ export default function NirvanaRouter() { }); }, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]); - /** show user line details */ - const handleSelectLine = useCallback( - (lineId: string) => { - setSelectedLineId(lineId); - setDesktopMode("terminalDetails"); - }, - [setSelectedLineId, setDesktopMode] - ); - const handleToggleFlowState = useCallback(() => { setDesktopMode("flowState"); }, [setDesktopMode]); @@ -323,24 +313,9 @@ export default function NirvanaRouter() {
setDesktopMode("terminal")} /> - setDesktopMode(e.target.value)} - > - terminal - - terminal and details - - flow state - overlay only - -
{(desktopMode === "terminal" || desktopMode === "terminalDetails") && ( - + )} {desktopMode === "terminalDetails" && selectedLine && ( diff --git a/packages/desktop/src/pages/terminal/index.tsx b/packages/desktop/src/pages/terminal/index.tsx index 6836ded..39fe4a9 100644 --- a/packages/desktop/src/pages/terminal/index.tsx +++ b/packages/desktop/src/pages/terminal/index.tsx @@ -1,4 +1,5 @@ -import { useMemo, useState } from "react"; +import { $desktopMode, $selectedLineId } from "../../controller/recoil"; +import { useCallback, useMemo, useState } from "react"; import { FaPlus } from "react-icons/fa"; import { FiActivity } from "react-icons/fi"; @@ -6,16 +7,18 @@ import { ILineDetails } from "../router"; import IconButton from "../../components/Button/IconButton/index"; import LineRow from "../../components/lines/lineRow.tsx/index"; import NewLineModal from "./newLine"; +import { useSetRecoilState } from "recoil"; export default function NirvanaTerminal({ - handleSelectLine, allLines, }: { - handleSelectLine: (lineId: string) => void; allLines: ILineDetails[]; }) { const [isModalVisible, setIsModalVisible] = useState(false); + const setSelectedLineId = useSetRecoilState($selectedLineId); + const setDesktopMode = useSetRecoilState($desktopMode); + // todo: sort/order based on activity and activity date and currently broadcasting/live const toggleTunedLines = useMemo( @@ -28,6 +31,15 @@ export default function NirvanaTerminal({ [] ); + /** show user line details */ + const handleSelectLine = useCallback( + (lineId: string) => { + setSelectedLineId(lineId); + setDesktopMode("terminalDetails"); + }, + [setSelectedLineId, setDesktopMode] + ); + return (
{/* modal for creating new line */}