adding some overlay stuff but still need better ux
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { ILineDetails } from "../router";
|
||||
import LineIcon from "../../components/lines/lineIcon/index";
|
||||
|
||||
export default function LineDetailsTerminal({
|
||||
selectedLine,
|
||||
@@ -6,8 +7,28 @@ export default function LineDetailsTerminal({
|
||||
selectedLine: ILineDetails;
|
||||
}) {
|
||||
return (
|
||||
<div className="flex flex-col flex-1">
|
||||
this is the line details for {selectedLine.name}
|
||||
<div
|
||||
id={`${selectedLine.lineId}-lineDetailsTerminal`}
|
||||
className="flex flex-col flex-1 bg-gray-100 h-full"
|
||||
>
|
||||
{/* line overview header */}
|
||||
<div className="flex flex-row p-3 items-center gap-1">
|
||||
<LineIcon sourceImages={selectedLine.profilePictures} />
|
||||
|
||||
<span className="flex flex-col items-start gap-1">
|
||||
<h2
|
||||
className={`text-inherit text-md truncate ${
|
||||
selectedLine.hasNewActivity ? "font-semibold" : ""
|
||||
}`}
|
||||
>
|
||||
{selectedLine.name}
|
||||
</h2>
|
||||
|
||||
<span className="text-xs text-gray-300">
|
||||
{`${selectedLine.numberMembers} members`}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,11 @@ function NirvanaApp() {
|
||||
<ProtectedRoute>
|
||||
<NirvanaRouter />
|
||||
</ProtectedRoute>
|
||||
<ReactQueryDevtools initialIsOpen={true} position={"bottom-left"} />
|
||||
|
||||
<ReactQueryDevtools
|
||||
initialIsOpen={false}
|
||||
position={"bottom-left"}
|
||||
/>
|
||||
</RecoilRoot>
|
||||
</ThemeProvider>
|
||||
<Toaster />
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
export default function Overlay() {
|
||||
return <div className="flex flex-col flex-1">this is the overlay</div>;
|
||||
return (
|
||||
<div className="flex flex-col bg-transparent">this is the overlay</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { DimensionPresets, Dimensions } from "../../electron/constants";
|
||||
import Channels, {
|
||||
DimensionPresets,
|
||||
Dimensions,
|
||||
} from "../../electron/constants";
|
||||
import React, { useState } from "react";
|
||||
import { useCallback, useEffect, useMemo } from "react";
|
||||
|
||||
@@ -224,12 +227,23 @@ const testLines: ILineDetails[] = [
|
||||
),
|
||||
];
|
||||
|
||||
type DesktopMode = "overlay" | "terminal" | "terminalAndDetails";
|
||||
|
||||
export default function NirvanaRouter() {
|
||||
const [selectedLineId, setSelectedLineId] = useState<string>(null);
|
||||
const [desktopMode, setDesktopMode] = useState<Dimensions>(
|
||||
DimensionPresets.terminal
|
||||
);
|
||||
|
||||
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"
|
||||
);
|
||||
setDesktopMode(DimensionPresets.overlayOnlyMode);
|
||||
});
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
window.electronAPI.window.resizeWindow(desktopMode);
|
||||
}, [desktopMode]);
|
||||
@@ -237,12 +251,12 @@ export default function NirvanaRouter() {
|
||||
useEffect(() => {
|
||||
if (selectedLineId) {
|
||||
setSelectedLineId(selectedLineId);
|
||||
setDesktopMode(DimensionPresets.terminalDetailOverlay);
|
||||
setDesktopMode(DimensionPresets.terminalAndDetails);
|
||||
} else {
|
||||
setSelectedLineId(null);
|
||||
setDesktopMode(DimensionPresets.terminal);
|
||||
}
|
||||
}, [selectedLineId, desktopMode, setDesktopMode]);
|
||||
}, [selectedLineId, setDesktopMode]);
|
||||
|
||||
/** show user line details */
|
||||
const handleSelectLine = useCallback(
|
||||
@@ -262,14 +276,18 @@ export default function NirvanaRouter() {
|
||||
<NirvanaHeader />
|
||||
|
||||
<div className="flex flex-row">
|
||||
<NirvanaTerminal
|
||||
handleSelectLine={handleSelectLine}
|
||||
allLines={testLines}
|
||||
/>
|
||||
{(desktopMode === DimensionPresets.terminal ||
|
||||
desktopMode === DimensionPresets.terminalAndDetails) && (
|
||||
<NirvanaTerminal
|
||||
handleSelectLine={handleSelectLine}
|
||||
allLines={testLines}
|
||||
/>
|
||||
)}
|
||||
|
||||
{selectedLine && <LineDetailsTerminal selectedLine={selectedLine} />}
|
||||
{desktopMode === DimensionPresets.terminalAndDetails &&
|
||||
selectedLine && <LineDetailsTerminal selectedLine={selectedLine} />}
|
||||
|
||||
{/* <Overlay /> */}
|
||||
<Overlay />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -12,6 +12,8 @@ export default function NirvanaTerminal({
|
||||
handleSelectLine: (lineId: string) => void;
|
||||
allLines: ILineDetails[];
|
||||
}) {
|
||||
// todo: sort/order based on activity and activity date and currently broadcasting/live
|
||||
|
||||
const toggleTunedLines = useMemo(
|
||||
() => allLines.filter((line) => line.isUserToggleTunedIn),
|
||||
[]
|
||||
|
||||
Reference in New Issue
Block a user