import { $desktopMode, $maxNumberActiveStreams, $numberActiveLines, $selectedLineId, } from '../../controller/recoil'; import Channels, { DEFAULT_APP_PRESET, Dimensions } from '../../electron/constants'; import { useEffect, useState } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import FullMottoLogo from '../../../../components/logo/fullMotto'; import { LineDataProvider } from '../../controller/lineDataProvider'; import { LogoType } from '@nirvana/components/logo/full'; import NirvanaHeader from '../../components/header/index'; import NirvanaTerminal from '../terminal'; export default function NirvanaRouter() { const [selectedLineId, setSelectedLineId] = useRecoilState($selectedLineId); const [desktopMode, setDesktopMode] = useRecoilState($desktopMode); const numberOfOverlayColumns = useRecoilValue($numberActiveLines); const numberOfOverlayRows = useRecoilValue($maxNumberActiveStreams); // handle all window resizing logic useEffect(() => { // add dimensions if it's not overlay only mode let finalDimensions: Dimensions = { height: 0, width: 0 }; let finalPosition: 'center' | 'topRight'; const setAlwaysOnTop = desktopMode === 'overlayOnly'; // go hunting for which dimensions to have if (desktopMode === 'terminal' || desktopMode == 'flowState') { finalDimensions = DEFAULT_APP_PRESET; } if (desktopMode === 'overlayOnly') { finalDimensions = { height: 68 + numberOfOverlayRows * 200, width: 360 + 360 * numberOfOverlayColumns, }; } console.log( 'setting new dimensions', desktopMode, numberOfOverlayColumns, numberOfOverlayRows, finalDimensions, setAlwaysOnTop, ); // send the final dimensions to main process window.electronAPI.window.resizeWindow({ setAlwaysOnTop, dimensions: { height: finalDimensions.height, width: finalDimensions.width, }, setPosition: finalPosition, addDimensions: false, }); }, [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... uncomment both instructions below // 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]); return (
(null); useEffect(() => { fetch('https://api.quotable.io/random') .then((res) => res.json()) .then((data: Quote) => { console.warn(data); setQuote(data); }) .catch((error) => { // do nothing, don't bother user, just don't show the quote console.warn(error); }); }, []); return ({/*); }*/}
{quote && ( "{quote.content}" {quote.author} )}