diff --git a/packages/desktop/src/components/header/index.tsx b/packages/desktop/src/components/header/index.tsx index bb98db6..9081a4e 100644 --- a/packages/desktop/src/components/header/index.tsx +++ b/packages/desktop/src/components/header/index.tsx @@ -84,7 +84,7 @@ export default function NirvanaHeader() { > -
+
+ {sourceImages?.map((avatarSrc) => ( + + ))} + + ); +} diff --git a/packages/desktop/src/components/lines/lineRow.tsx/index.tsx b/packages/desktop/src/components/lines/lineRow.tsx/index.tsx index 0eba0fa..b185fc7 100644 --- a/packages/desktop/src/components/lines/lineRow.tsx/index.tsx +++ b/packages/desktop/src/components/lines/lineRow.tsx/index.tsx @@ -3,6 +3,7 @@ import { useCallback, useMemo } from "react"; import { Avatar } from "antd"; import { FiSun } from "react-icons/fi"; import { ILineDetails } from "../../../pages/router/index"; +import LineIcon from "../lineIcon"; export default function LineRow({ lineDetails, @@ -87,22 +88,9 @@ export default function LineRow({ {renderActivityIcon} - - {lineDetails.profilePictures.map((avatarSrc) => ( - - ))} - + {lineDetails.profilePictures && ( + + )}

{ preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY, sandbox: true, }, - alwaysOnTop: true, icon: "./assets/1024x1024.icns", frame: false, roundedCorners: false, + transparent: true, }); // and load the index.html of the app. @@ -77,13 +78,39 @@ app ipcMain.on(Channels.RESIZE_WINDOW, (event, arg) => { const { width, height } = arg; - browserWindow.setSize(width, height, false); + if ( + width === DimensionPresets.overlayOnlyMode.width && + height === DimensionPresets.overlayOnlyMode.height + ) { + browserWindow.setAlwaysOnTop(true, "floating"); + + // move window/overlay to top right + let display = screen.getPrimaryDisplay(); + browserWindow.setPosition(display.bounds.width, display.bounds.height); + } else browserWindow.setAlwaysOnTop(false); + + browserWindow.setSize(width, height, true); }); }) .then(() => { // globalShortcut.register("`", () => { // console.log("Electron loves global shortcuts!"); // }); + + // on blur, show overlay, and tell app to trigger overlay mode + browserWindow.on("blur", () => { + // browserWindow.setAlwaysOnTop(true, "floating"); + + // let frontend handshake and then send remote control to change size + // const overlayDimensions = DimensionPresets.overlayMode; + // browserWindow.setSize( + // overlayDimensions.width, + // overlayDimensions.height, + // true + // ); + + browserWindow.webContents.send(Channels.ON_WINDOW_BLUR); + }); }); // Quit when all windows are closed, except on macOS. There, it's common diff --git a/packages/desktop/src/pages/lineDetailsTerminal/index.tsx b/packages/desktop/src/pages/lineDetailsTerminal/index.tsx index 6d3a071..a9cd277 100644 --- a/packages/desktop/src/pages/lineDetailsTerminal/index.tsx +++ b/packages/desktop/src/pages/lineDetailsTerminal/index.tsx @@ -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 ( -
- this is the line details for {selectedLine.name} +
+ {/* line overview header */} +
+ + + +

+ {selectedLine.name} +

+ + + {`${selectedLine.numberMembers} members`} + +
+
); } diff --git a/packages/desktop/src/pages/nirvanaApp.tsx b/packages/desktop/src/pages/nirvanaApp.tsx index 04fdf29..7b1d901 100644 --- a/packages/desktop/src/pages/nirvanaApp.tsx +++ b/packages/desktop/src/pages/nirvanaApp.tsx @@ -66,7 +66,11 @@ function NirvanaApp() { - + + diff --git a/packages/desktop/src/pages/overlay/index.tsx b/packages/desktop/src/pages/overlay/index.tsx index 0d2cc12..7f31369 100644 --- a/packages/desktop/src/pages/overlay/index.tsx +++ b/packages/desktop/src/pages/overlay/index.tsx @@ -1,3 +1,5 @@ export default function Overlay() { - return
this is the overlay
; + return ( +
this is the overlay
+ ); } diff --git a/packages/desktop/src/pages/router/index.tsx b/packages/desktop/src/pages/router/index.tsx index 1a857f3..ce5f586 100644 --- a/packages/desktop/src/pages/router/index.tsx +++ b/packages/desktop/src/pages/router/index.tsx @@ -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(null); const [desktopMode, setDesktopMode] = useState( 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() {
- + {(desktopMode === DimensionPresets.terminal || + desktopMode === DimensionPresets.terminalAndDetails) && ( + + )} - {selectedLine && } + {desktopMode === DimensionPresets.terminalAndDetails && + selectedLine && } - {/* */} +
); diff --git a/packages/desktop/src/pages/terminal/index.tsx b/packages/desktop/src/pages/terminal/index.tsx index 0d5a4c3..07c057f 100644 --- a/packages/desktop/src/pages/terminal/index.tsx +++ b/packages/desktop/src/pages/terminal/index.tsx @@ -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), []