having new flow with windows taking out the redundancy

This commit is contained in:
talksik
2022-05-05 11:09:06 -05:00
parent c08697efb2
commit 7c8a9f1171
4 changed files with 61 additions and 83 deletions
@@ -1,10 +1,9 @@
import { $desktopMode, $selectedLineId } from "../../../controller/recoil";
import { useCallback, useMemo } from "react"; import { useCallback, useMemo } from "react";
import { useRecoilState, useSetRecoilState } from "recoil"; import { useRecoilState, useSetRecoilState } from "recoil";
import { $selectedLineId } from "../../../controller/recoil";
import { Avatar } from "antd"; import { Avatar } from "antd";
import { FiSun } from "react-icons/fi"; import { FiSun } from "react-icons/fi";
import { ILineDetails } from "../../../pages/router/index";
import LineIcon from "../lineIcon"; import LineIcon from "../lineIcon";
import MasterLineData from "@nirvana/core/models/masterLineData.model"; import MasterLineData from "@nirvana/core/models/masterLineData.model";
import { useGetUserDetails } from "../../../controller/index"; import { useGetUserDetails } from "../../../controller/index";
@@ -20,13 +19,10 @@ export default function LineRow({
const [selectedLineId, setSelectedLineId] = useRecoilState($selectedLineId); const [selectedLineId, setSelectedLineId] = useRecoilState($selectedLineId);
const { data: userData } = useGetUserDetails(); const { data: userData } = useGetUserDetails();
const setDesktopMode = useSetRecoilState($desktopMode);
/** show user line details */ /** show user line details */
const handleSelectLine = useCallback(() => { const handleSelectLine = useCallback(() => {
setSelectedLineId(masterLineData.lineDetails._id.toString()); setSelectedLineId(masterLineData.lineDetails._id.toString());
setDesktopMode("terminalDetails"); }, [setSelectedLineId, masterLineData]);
}, [setSelectedLineId, setDesktopMode, masterLineData]);
/** /**
* TODO: slowly add to this and fix based on added features * TODO: slowly add to this and fix based on added features
@@ -1,34 +1,31 @@
import { ILineDetails } from "../router"; import { ILineDetails } from "../router";
import LineIcon from "../../components/lines/lineIcon/index"; import LineIcon from "../../components/lines/lineIcon/index";
export default function LineDetailsTerminal({ export default function LineDetailsTerminal() {
selectedLine,
}: {
selectedLine: ILineDetails;
}) {
return ( return (
<div <></>
id={`${selectedLine.lineId}-lineDetailsTerminal`} // <div
className="flex flex-col bg-gray-100 w-[400px]" // id={`${selectedLine.lineId}-lineDetailsTerminal`}
> // className="flex flex-col bg-gray-100 w-[400px]"
{/* line overview header */} // >
<div className="flex flex-row p-3 items-center gap-1"> // {/* line overview header */}
<LineIcon sourceImages={selectedLine.profilePictures} /> // <div className="flex flex-row p-3 items-center gap-1">
// <LineIcon sourceImages={selectedLine.profilePictures} />
<span className="flex flex-col items-start gap-1"> // <span className="flex flex-col items-start gap-1">
<h2 // <h2
className={`text-inherit text-md truncate ${ // className={`text-inherit text-md truncate ${
selectedLine.hasNewActivity ? "font-semibold" : "" // selectedLine.hasNewActivity ? "font-semibold" : ""
}`} // }`}
> // >
{selectedLine.name} // {selectedLine.name}
</h2> // </h2>
<span className="text-xs text-gray-300"> // <span className="text-xs text-gray-300">
{`${selectedLine.numberMembers} members`} // {`${selectedLine.numberMembers} members`}
</span> // </span>
</span> // </span>
</div> // </div>
</div> // </div>
); );
} }
@@ -66,9 +66,6 @@ export default function Overlay() {
// initially, have these set to default // initially, have these set to default
useEffect(() => { useEffect(() => {
setNumActiveLines(1);
setMaxNumActiveStreams(1);
// POC: nirvana all connected users call // POC: nirvana all connected users call
// send signal to all peers through ws // send signal to all peers through ws
+36 -48
View File
@@ -227,55 +227,32 @@ export default function NirvanaRouter() {
const numberOfOverlayColumns = useRecoilValue($numberActiveLines); const numberOfOverlayColumns = useRecoilValue($numberActiveLines);
const numberOfOverlayRows = useRecoilValue($maxNumberActiveStreams); const numberOfOverlayRows = useRecoilValue($maxNumberActiveStreams);
// on window blur, put app in overlay only mode
useEffect(() => {
window.electronAPI.on(Channels.ON_WINDOW_BLUR, () => {
console.log(
"window blurring now, should be always on top and then ill tell main process to change dimensions"
);
// TODO: testing mode
// setDesktopMode("overlayOnly");
});
}, [setDesktopMode]);
// handle all window resizing logic // handle all window resizing logic
useEffect(() => { useEffect(() => {
// always have overlay so need to calculate that
const overlayDimensions: Dimensions = {
height: 40 + numberOfOverlayRows * 200,
width: 360 * numberOfOverlayColumns,
};
const setAlwaysOnTop =
desktopMode === "overlayOnly" || desktopMode === "flowState";
// add dimensions if it's not overlay only mode // add dimensions if it's not overlay only mode
let finalDimensions: Dimensions = { height: 0, width: 0 }; let finalDimensions: Dimensions = { height: 0, width: 0 };
let finalPosition; let finalPosition;
const setAlwaysOnTop =
desktopMode === "overlayOnly" || desktopMode === "flowState";
// go hunting for which dimensions to have
if (desktopMode === "terminal") { if (desktopMode === "terminal") {
finalPosition = "center";
finalDimensions = { height: 675, width: 400 }; finalDimensions = { height: 675, width: 400 };
} }
if (desktopMode === "terminalDetails") { if (desktopMode === "terminalDetails") {
finalPosition = "center";
finalDimensions = { height: 675, width: 800 }; finalDimensions = { height: 675, width: 800 };
} }
if (desktopMode === "flowState") { if (desktopMode === "flowState") {
finalPosition = "topRight"; finalPosition = "topRight";
finalDimensions = { height: 40, width: 360 }; finalDimensions = { height: 68, width: 360 };
} }
// add overlay for all variants except flow state
if (desktopMode !== "flowState")
finalDimensions = {
width: finalDimensions.width + overlayDimensions.width,
height: Math.max(finalDimensions.height, overlayDimensions.height),
};
if (desktopMode === "overlayOnly") { if (desktopMode === "overlayOnly") {
finalPosition = "topRight"; finalPosition = "topRight";
finalDimensions = {
height: 68 + numberOfOverlayRows * 200,
width: 360 + 360 * numberOfOverlayColumns,
};
} }
console.log( console.log(
@@ -283,7 +260,6 @@ export default function NirvanaRouter() {
desktopMode, desktopMode,
numberOfOverlayColumns, numberOfOverlayColumns,
numberOfOverlayRows, numberOfOverlayRows,
overlayDimensions,
finalDimensions, finalDimensions,
setAlwaysOnTop setAlwaysOnTop
); );
@@ -300,21 +276,35 @@ export default function NirvanaRouter() {
}); });
}, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]); }, [desktopMode, numberOfOverlayColumns, numberOfOverlayRows]);
// on window blur, put app in overlay only mode
// get rid of selected line from terminal if we had any...
useEffect(() => {
window.electronAPI.on(Channels.ON_WINDOW_BLUR, () => {
console.log(
"window blurring now, should be always on top and then ill tell main process to change dimensions"
);
// TODO: testing mode
setDesktopMode("overlayOnly");
// todo: make sure that if I am toggle broadcasted into a line, then don't deselect selected line
// the overlay should be showing selected line if I am broadcasting toggled into it as well as of course all other toggle tuned ones
setSelectedLineId(null);
});
}, [setDesktopMode, setSelectedLineId]);
// handling desktop mode switch on change of selected line
useEffect(() => {
if (selectedLineId && desktopMode === "terminal") {
console.log("selected line right now", selectedLineId);
setDesktopMode("terminalDetails");
}
}, [selectedLineId, desktopMode, setDesktopMode]);
const handleToggleFlowState = useCallback(() => { const handleToggleFlowState = useCallback(() => {
setDesktopMode("flowState"); setDesktopMode("flowState");
}, [setDesktopMode]); }, [setDesktopMode]);
const selectedLine = useMemo(
() => testLines.find((line) => line.lineId === selectedLineId),
[testLines, selectedLineId]
);
const overlayView = useMemo(() => {
if (desktopMode === "overlayOnly") return <Overlay />;
return <></>;
}, [desktopMode]);
return ( return (
<div className="flex flex-col h-screen"> <div className="flex flex-col h-screen">
<NirvanaHeader onHeaderFocus={() => setDesktopMode("terminal")} /> <NirvanaHeader onHeaderFocus={() => setDesktopMode("terminal")} />
@@ -324,11 +314,9 @@ export default function NirvanaRouter() {
<NirvanaTerminal allLines={testLines} /> <NirvanaTerminal allLines={testLines} />
)} )}
{desktopMode === "terminalDetails" && selectedLine && ( {desktopMode === "terminalDetails" && <LineDetailsTerminal />}
<LineDetailsTerminal selectedLine={selectedLine} />
)}
{overlayView} {desktopMode === "overlayOnly" && <Overlay />}
</div> </div>
</div> </div>
); );