diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index 0e0dc31..a7e3b41 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -69,14 +69,6 @@
"preload": {
"js": "./src/electron/preload.ts"
}
- },
- {
- "html": "./src/index.html",
- "js": "./src/rendererTwo.ts",
- "name": "second_window",
- "preload": {
- "js": "./src/electron/preload.ts"
- }
}
]
}
diff --git a/packages/desktop/src/app.tsx b/packages/desktop/src/app.tsx
index d4f8e0a..9c40d4a 100644
--- a/packages/desktop/src/app.tsx
+++ b/packages/desktop/src/app.tsx
@@ -1,10 +1,10 @@
-import "./index.css";
-import "./carbon.scss";
+import "./styles/index.css";
+import "./styles/carbon.scss";
import * as React from "react";
import * as ReactDOM from "react-dom";
-import NirvanaApp from "./nirvanaApp";
+import NirvanaApp from "./pages/nirvanaApp";
function render() {
ReactDOM.render(, document.getElementById("root"));
diff --git a/packages/desktop/src/controller/sockets.tsx b/packages/desktop/src/controller/sockets.tsx
index 2c06231..3ac9404 100644
--- a/packages/desktop/src/controller/sockets.tsx
+++ b/packages/desktop/src/controller/sockets.tsx
@@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import SocketChannels from "@nirvana/core/sockets/channels";
import { UserStatus } from "../../../core/models/user.model";
-import { socket } from "../nirvanaApp";
+import { socket } from "../pages/nirvanaApp";
// import { useGetAllContactBasicDetails } from "./index";
diff --git a/packages/desktop/src/index.ts b/packages/desktop/src/index.ts
index f8201ad..8c7479c 100644
--- a/packages/desktop/src/index.ts
+++ b/packages/desktop/src/index.ts
@@ -10,7 +10,6 @@ import store from "./electron/store";
// whether you're running in development or production).
declare const MAIN_WINDOW_WEBPACK_ENTRY: string;
declare const MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY: string;
-declare const SECOND_WINDOW_WEBPACK_ENTRY: string;
// Handle creating/removing shortcuts on Windows when installing/uninstalling.
if (require("electron-squirrel-startup")) {
@@ -21,7 +20,6 @@ if (require("electron-squirrel-startup")) {
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
export let browserWindow: BrowserWindow;
-export let overlayWindow: BrowserWindow;
const createWindow = (): void => {
// Create the browser window.
@@ -34,23 +32,11 @@ const createWindow = (): void => {
icon: "./assets/1024x1024.icns",
});
- overlayWindow = new BrowserWindow({
- ...Dimensions.default,
- webPreferences: {
- preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY,
- sandbox: true,
- },
- icon: "./assets/1024x1024.icns",
- alwaysOnTop: true,
- });
-
// and load the index.html of the app.
browserWindow.loadURL(MAIN_WINDOW_WEBPACK_ENTRY);
- overlayWindow.loadURL(SECOND_WINDOW_WEBPACK_ENTRY);
// Open the DevTools.
browserWindow.webContents.openDevTools({ mode: "detach" });
- overlayWindow.webContents.openDevTools({ mode: "detach" });
};
// This method will be called when Electron has finished
diff --git a/packages/desktop/src/overlay/index.tsx b/packages/desktop/src/overlay/index.tsx
deleted file mode 100644
index 774225a..0000000
--- a/packages/desktop/src/overlay/index.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import "../index.css";
-import "../carbon.scss";
-
-import * as React from "react";
-import * as ReactDOM from "react-dom";
-
-import { Button } from "carbon-components-react";
-
-function render() {
- ReactDOM.render(
-
- this is the overlay for video streams and conversations to be passed in
-
-
,
- document.getElementById("root")
- );
-}
-
-render();
diff --git a/packages/desktop/src/pages/Home/conversations/index.tsx b/packages/desktop/src/pages/Home/conversations/index.tsx
deleted file mode 100644
index 7d1d5e7..0000000
--- a/packages/desktop/src/pages/Home/conversations/index.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import {
- $newConvoPage,
- $selectedConversation,
-} from "../../../controller/recoil";
-import { Avatar, Tooltip } from "antd";
-import {
- Conversation,
- ConversationMemberState,
-} from "../../../../../core/models/conversation.model";
-import { useRecoilState, useSetRecoilState } from "recoil";
-
-import BasicConversationRow from "../../../components/conversation/basicRow";
-import { ContactDetails } from "@nirvana/core/responses/getContacts.response";
-import { FaVolumeUp } from "react-icons/fa";
-import MasterConversation from "../../../../../core/models/masterConversation.model";
-import SkeletonLoader from "../../../components/loading/skeleton";
-import UserAvatarWithStatus from "../../../components/User/userAvatarWithStatus";
-import UserStatusText from "../../../components/User/userStatusText";
-import useSocketData from "../../../controller/sockets";
-import { useState } from "react";
-import { useUserConvos } from "../../../controller/index";
-
-enum ConvoTab {
- LIVE = "LIVE",
- TUNED = "TUNED",
- INBOX = "INBOX",
- REQUESTS = "REQUESTS",
-}
-export default function Conversations() {
- // const { data: contactDetailsListResponse, isLoading } =
- // useGetAllContactBasicDetails();
- const { speakingRooms } = useSocketData();
- const [selectedConvo, setSelectedConvo] = useRecoilState(
- $selectedConversation
- );
- const setNewConvoPageTrigger = useSetRecoilState($newConvoPage);
-
- const [selectedTab, setSelectedTab] = useState(ConvoTab.INBOX);
-
- const handleChangeTab = (event: any, newTab: ConvoTab) => {
- setSelectedTab(newTab);
- };
-
- const handleNewConvo = () => {
- setNewConvoPageTrigger(true);
- };
-
- // todo: show conversations with activity/new content for me first...then the rest of the contacts
-
- const selectContact = async (googleUserId: string) => {
- // if this person is already selected, unselect
- if (selectedConvo === googleUserId) {
- setSelectedConvo(null);
- return;
- }
-
- setSelectedConvo(googleUserId);
- };
-
- const { data: userConverstionsData } = useUserConvos();
-
- // render right content based on selected tab
- const renderConversationContent = () => {
- // if no content for a tab, then show stale text
-
- const invitedConvos = userConverstionsData?.filter(
- (masterConvo) =>
- masterConvo.currentUserMember.state === ConversationMemberState.INVITED
- );
- const inboxConvos = userConverstionsData?.filter(
- (masterConvo) =>
- masterConvo.currentUserMember.state === ConversationMemberState.INBOX
- );
- const tunedConvos = userConverstionsData?.filter(
- (masterConvo) =>
- masterConvo.currentUserMember.state === ConversationMemberState.TUNED
- );
-
- const liveConversations = [];
-
- switch (selectedTab) {
- case ConvoTab.LIVE:
- return (
-
- None of your channels are live. Join and chill in a room and it will
- show up here!
-
- );
- case ConvoTab.TUNED:
- if (tunedConvos?.length) {
- return displaying all tuned in convos;
- }
- return Pin a channel to turn it into a walkie talkie.;
- case ConvoTab.INBOX:
- if (inboxConvos?.length) {
- return (
- <>
- {inboxConvos.map((convo) => (
-
- ))}
- >
- );
- }
- return Connect with someone and start talking!;
- case ConvoTab.REQUESTS:
- if (invitedConvos?.length) {
- return displaying all request convos;
- }
- return (
-
- No new conversations, connect with someone to get started.
-
- );
- }
- };
-
- return (
- <>
-
-
-
- {renderConversationContent()}
-
-
- {/* {isLoading ? (
-
- ) : (
-
- {contactDetailsListResponse?.contactsDetails.map(
- (contactDetail: ContactDetails) => {
- const isSelected =
- contactDetail.otherUser.googleId === selectedConvo;
-
- return (
-
- selectContact(contactDetail.otherUser.googleId)
- }
- className={`flex flex-row items-center hover:bg-zinc-600 group py-4 px-2 cursor-pointer ${
- isSelected ? "bg-zinc-600" : ""
- } rounded`}
- >
-
-
-
- {contactDetail.otherUser.name}
-
-
-
-
-
-
- {speakingRooms.includes(
- contactDetail.relationship._id.toString()
- ) ? (
- speaking...
- ) : null}
-
- );
- }
- )}
-
- )} */}
- >
- );
-}
diff --git a/packages/desktop/src/pages/Home/header/index.tsx b/packages/desktop/src/pages/Home/header/index.tsx
deleted file mode 100644
index 3b54af3..0000000
--- a/packages/desktop/src/pages/Home/header/index.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import { $jwtToken, $searchQuery } from "../../../controller/recoil";
-import Logo, { LogoType } from "../../../components/Logo";
-import { useEffect, useRef, useState } from "react";
-import { useRecoilState, useSetRecoilState } from "recoil";
-
-import { GlobalHotKeys } from "react-hotkeys";
-import SocketChannels from "@nirvana/core/sockets/channels";
-import UserAvatarWithStatus from "../../../components/User/userAvatarWithStatus";
-import { UserStatus } from "@nirvana/core/models";
-import { socket } from "../../../nirvanaApp";
-import { useGetUserDetails } from "../../../controller/index";
-
-export default function Header() {
- const { data: userDetailsResponse, isLoading } = useGetUserDetails();
- const [searchQuery, setSearchQuery] = useRecoilState($searchQuery);
- const setJwtToken = useSetRecoilState($jwtToken);
- const inputRef = useRef(null);
- const [anchorEl, setAnchorEl] = useState(null);
- const openAvatarMenu = Boolean(anchorEl);
-
- const [userVideo, setUserVideo] = useState(null);
-
- // useEffect(() => {
- // navigator.mediaDevices
- // .getUserMedia({ video: true, audio: true })
- // .then((localMediaStream: any) => {
- // console.log(localMediaStream);
-
- // setUserVideo(localMediaStream);
-
- // var video = document.querySelector("video");
- // video.srcObject = localMediaStream;
- // video.onloadedmetadata = function (e) {
- // video.play();
- // };
-
- // setTimeout(() => {
- // localMediaStream.getTracks().forEach((track: any) => {
- // track.stop();
- // });
-
- // video.srcObject = null;
- // }, 2000);
- // });
- // }, []);
-
- const handleClick = (event: any) => {
- setAnchorEl(event.currentTarget);
- };
-
- const handleClose = () => {
- setAnchorEl(null);
- };
-
- if (isLoading) {
- return getting data;
- }
-
- const logOut = () => {
- console.log("logging out!");
- setJwtToken(undefined);
- };
-
- const updateStatus = (newStatus: UserStatus) => {
- // send update in socket
- socket.emit(
- SocketChannels.SEND_USER_STATUS_UPDATE,
- userDetailsResponse.user.status,
- newStatus
- );
- };
-
- // hot keys for selecting search
- const handleSearch = () => {
- if (inputRef?.current) {
- inputRef?.current?.focus();
- setSearchQuery("");
- }
- };
-
- const keyMap = { START_SEARCH: "/" };
- const handlers = { START_SEARCH: handleSearch };
-
- return (
- <>
-
-
-
-
-
-
-
- >
- );
-}
diff --git a/packages/desktop/src/pages/Home/index.tsx b/packages/desktop/src/pages/Home/index.tsx
deleted file mode 100644
index 7e2a15f..0000000
--- a/packages/desktop/src/pages/Home/index.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import { $newConvoPage, $searchQuery } from "../../controller/recoil";
-import Logo, { LogoType } from "../../components/Logo";
-
-import Conversations from "./conversations";
-import Header from "./header";
-import NewConvo from "./newConvo";
-// import Header from "./header";
-import Search from "./search";
-// import SelectedConversation from "./selectedConversation";
-import { useEffect } from "react";
-import { useRecoilValue } from "recoil";
-
-export default function Home() {
- // const { data: user } = useGetUserDetails();
- const searchQuery = useRecoilValue($searchQuery);
-
- const newConvoPage = useRecoilValue($newConvoPage);
-
- const renderMainContent = () => {
- if (searchQuery) return ;
-
- if (newConvoPage) return ;
-
- return ;
- };
-
- return (
-
-
- {/* header */}
-
-
- {/* main content */}
-
- {renderMainContent()}
-
-
- {/*
*/}
-
-
-
- );
-}
diff --git a/packages/desktop/src/pages/Home/newConvo/index.tsx b/packages/desktop/src/pages/Home/newConvo/index.tsx
deleted file mode 100644
index a8591e0..0000000
--- a/packages/desktop/src/pages/Home/newConvo/index.tsx
+++ /dev/null
@@ -1,182 +0,0 @@
-import {
- useCreateConvo,
- useGetDmByUserId,
- useGetUserDetails,
- useUserSearch,
-} from "../../../controller/index";
-import { useEffect, useState } from "react";
-
-import { $newConvoPage } from "../../../controller/recoil";
-import { ApiCalls } from "../../../controller/nirvanaApi";
-import { User } from "@nirvana/core/models/user.model";
-import UserRow from "../../../components/User/basicUserDetailsRow";
-import toast from "react-hot-toast";
-import { useSetRecoilState } from "recoil";
-
-export default function NewConvo() {
- const setNewPageConvo = useSetRecoilState($newConvoPage);
- const [userSearchQuery, setuserSearchQuery] = useState("");
- const [debUserSearchQ, setDebUserSearchQ] = useState("");
- const [selectedUsers, setSelectedUsers] = useState([]);
-
- const { data: userDetails } = useGetUserDetails();
-
- const {
- data,
- isLoading: isSearching,
- isError,
- refetch,
- } = useUserSearch(debUserSearchQ);
-
- const [debTimeout, setdebTimeout] = useState();
-
- // trigger the react query to refetch once our deb/"final" search query is set
- useEffect(() => {
- if (debUserSearchQ) refetch();
- }, [debUserSearchQ]);
-
- const handleGoBack = () => {
- setNewPageConvo(false);
- };
-
- const triggerSearch = (searchQ: string) => {
- // update search query now and
-
- setDebUserSearchQ(searchQ);
- };
-
- const handleUpdateSearchInput = (event: any) => {
- const newSearchQuery = event.target.value;
-
- // wait 2 seconds to hit api
- const currInitInterval = setTimeout(() => {
- console.log("triggering debounced search");
-
- triggerSearch(newSearchQuery);
- }, 1000);
-
- // clear previous interval now that there is a new search entry
- // preventing the last interval from triggering a search
- setdebTimeout((prevTimeout: any) => {
- clearTimeout(prevTimeout);
- return currInitInterval;
- });
-
- // update the view showing that the user's input is visibly changing input
- setuserSearchQuery(newSearchQuery);
- };
-
- // select or unselect
- const selectOrUnselectUser = (user: User) => {
- // remove from list/unselect
- if (
- selectedUsers.find(
- (selectedUser) => selectedUser.googleId === user.googleId
- )
- ) {
- console.log("unselecting user");
- setSelectedUsers((prevUsers) =>
- prevUsers.filter(
- (prevUser) => prevUser._id.toString() !== user._id.toString()
- )
- );
-
- return;
- }
-
- console.log("selecting user");
-
- // add to the list of selected
- setSelectedUsers((prevUsers) => [...prevUsers, user]);
- };
-
- let nonSelectedUsers = [] as User[];
- // remove the user from the list of search results
- if (data?.users) {
- nonSelectedUsers = data?.users.filter(
- (user) =>
- !selectedUsers.find(
- (selectedUser) => selectedUser._id.toString() === user._id.toString()
- )
- );
- }
-
- const { mutateAsync } = useGetDmByUserId();
- const { mutateAsync: createConvoMutateAsync } = useCreateConvo();
-
- const createConvo = async () => {
- if (!selectedUsers?.length) {
- toast.error("Must select at least one person");
-
- return;
- }
-
- // consolidate the user Ids into an array
- // make sure that there are no duplicates
- const otherMemberIds = selectedUsers.map((selUser) =>
- selUser._id.toString()
- );
-
- // IF it's a one on one chat
- // check backend with one route if there is an existing conversation
- if (selectedUsers?.length === 1) {
- let existingConvoRes;
- try {
- existingConvoRes = await mutateAsync(selectedUsers[0]._id.toString());
-
- console.log("there is an existing convo!");
- if (existingConvoRes) {
- toast.error("already have a convo with this person");
- console.log(existingConvoRes);
-
- return;
- }
- } catch (error) {
- console.error(error);
- } finally {
- console.log("done");
- }
- }
-
- // create a conversation object in db with convoMembers
- try {
- const createConvoRes = await createConvoMutateAsync(otherMemberIds);
-
- toast.success("Successfully create conversation");
- } catch (error) {
- console.error(error);
- } finally {
- console.log("done creating convo");
- }
-
- // broadcast this to right sockets either here or serverside after convo creation
- };
-
- return (
-
-
-
-
{data?.users.length ?? 0} results
-
- {isSearching ?
loading : <>>}
-
- {/* selected people */}
- {selectedUsers?.map((user) => (
-
selectOrUnselectUser(user)}>
-
-
- ))}
-
- {/* search results list */}
-
- {nonSelectedUsers?.map((user) => (
-
selectOrUnselectUser(user)}>
-
-
- ))}
-
-
-
-
- );
-}
diff --git a/packages/desktop/src/pages/Home/search/index.tsx b/packages/desktop/src/pages/Home/search/index.tsx
deleted file mode 100644
index 296ca84..0000000
--- a/packages/desktop/src/pages/Home/search/index.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import {
- $searchQuery,
- $selectedConversation,
-} from "../../../controller/recoil";
-
-import { FaAngleRight } from "react-icons/fa";
-import { User } from "@nirvana/core/models";
-import { useEffect } from "react";
-import { useRecoilState } from "recoil";
-
-// todo:
-// remove myself from list
-// add friend capability
-// unfriend? nahhh not right now
-
-export default function Search() {
- const [searchQuery, setSearchQuery] = useRecoilState($searchQuery);
-
- const [selectedConvo, setSelectedConvo] = useRecoilState(
- $selectedConversation
- );
-
- // const { data: userDetails } = useGetUserDetails();
-
- // const { data, isLoading, isError, refetch } = useSearch();
-
- useEffect(() => {
- // todo debounce after three seconds and show debounce loading while
- // refetch();
- }, [searchQuery]);
-
- // if (!data?.users) {
- // return (
- //
- // no results. please try someone's email or name.
- //
- // );
- // }
-
- const goBack = () => {
- // implicity takes user back
- setSearchQuery("");
- };
-
- const selectContact = async (googleUserId: string) => {
- // if this person is already selected, unselect
- if (selectedConvo === googleUserId) {
- setSelectedConvo(null);
- return;
- }
-
- setSelectedConvo(googleUserId);
- };
-
- return (
-
-
-
- {/* {data?.users?.map((user) => {
- if (user.googleId === userDetails.googleId) return <>>;
- return renderUserRow(user);
- })} */}
-
- );
-}
diff --git a/packages/desktop/src/pages/Home/selectedConversation/index.tsx b/packages/desktop/src/pages/Home/selectedConversation/index.tsx
deleted file mode 100644
index c2f1afb..0000000
--- a/packages/desktop/src/pages/Home/selectedConversation/index.tsx
+++ /dev/null
@@ -1,325 +0,0 @@
-// import { FaMicrophone, FaPlay, FaWindowClose } from "react-icons/fa";
-// import { GlobalHotKeys, KeyMap } from "react-hotkeys";
-// import { useEffect, useState } from "react";
-
-// import { $selectedConversation } from "../../../controller/recoil";
-// import { Dimensions } from "../../../electron/constants";
-// import { Querytypes } from "../../../controller";
-// import { RelationshipState } from "@nirvana/core/models/relationship.model";
-// import SocketChannels from "@nirvana/core/sockets/channels";
-// import UpdateRelationshipStateRequest from "@nirvana/core/requests/updateRelationshipState.request";
-// import UserStatusText from "../../../components/User/userStatusText";
-// import moment from "moment";
-// import { queryClient } from "../../../nirvanaApp";
-// import { socket } from "../../../nirvanaApp";
-// import toast from "react-hot-toast";
-// import { useRecoilState } from "recoil";
-
-// let audioChunks: any = [];
-
-// const constraints = {
-// audio: true,
-// // {
-// // // mandatory: {
-// // // chromeMediaSource: "desktop",
-// // // },
-// // autoGainControl: true,
-// // echoCancellation: true,
-// // } as MediaTrackConstraints,
-// };
-
-// export default function SelectedConversation() {
-// const [selectedConvo, setSelectedConvo] = useRecoilState(
-// $selectedConversation
-// );
-// const { data: userDetailsData } = useGetUserDetails();
-// const { data: convoDetailsResponse, isLoading } =
-// useConversationDetails(selectedConvo);
-// const { mutate: sendContactRequest } = useSendContactRequest();
-// const { mutate: updateRelationshipState } = useUpdateRelationshipState();
-// const [isRecording, setIsRecording] = useState(false);
-
-// const [hasMicPermissions, sethasMicPermissions] = useState(false);
-// const [mediaRecorder, setMediaRecorder] = useState();
-
-// // audio handling
-// // setting up recording permissions
-// useEffect(() => {
-// try {
-// // checking for permissions for recording
-// // won't work in https!!!
-// navigator.mediaDevices
-// .getUserMedia(constraints)
-// .then((stream) => {
-// const mediaRecorder = new MediaRecorder(stream);
-// setMediaRecorder(mediaRecorder);
-
-// console.log(mediaRecorder);
-
-// console.log("Permission Granted");
-// sethasMicPermissions(true);
-// })
-// .catch((e: any) => {
-// console.log("Permission Denied");
-
-// toast.error(
-// "Please make sure that you have connected a microphone and given permissions."
-// );
-
-// console.log(e);
-// sethasMicPermissions(false);
-// });
-// } catch (error) {
-// console.log(error);
-// toast.error("something went wrong");
-// }
-// }, []);
-
-// // todo: hacky way of re-linking event listeners once we have the relationship id
-// useEffect(() => {
-// if (mediaRecorder && convoDetailsResponse) {
-// mediaRecorder.addEventListener(
-// "dataavailable",
-// mediaRecorderDataAvailable
-// );
-// mediaRecorder.addEventListener("stop", mediaRecorderStop);
-// }
-
-// return () => {
-// if (mediaRecorder) {
-// mediaRecorder.removeEventListener(
-// "dataavailable",
-// mediaRecorderDataAvailable
-// );
-// mediaRecorder.removeEventListener("stop", mediaRecorderStop);
-// }
-// };
-// }, [mediaRecorder, convoDetailsResponse]);
-
-// const mediaRecorderDataAvailable = (event: any) => {
-// audioChunks.push(event.data);
-// };
-
-// const mediaRecorderStop = () => {
-// socket.emit(
-// SocketChannels.SEND_AUDIO_CLIP,
-// convoDetailsResponse.ourRelationship._id.toString(),
-// audioChunks
-// );
-
-// // testing playing before sending off
-// // const audioBlob = new Blob(audioChunks);
-// // const audioUrl = URL.createObjectURL(audioBlob);
-// // const audio = new Audio(audioUrl);
-// // audio.play();
-
-// audioChunks = [];
-// };
-
-// useEffect(() => {
-// // if selected, then change the bounds of this window as well
-// if (selectedConvo) {
-// window.electronAPI.window.resizeWindow(Dimensions.selectedConvo);
-// } else {
-// // change bounds back
-// window.electronAPI.window.resizeWindow(Dimensions.default);
-// }
-// }, [selectedConvo]);
-
-// // if no convo selected, don't show this
-// if (!selectedConvo) {
-// return <>>;
-// }
-
-// // todo: add cancel request option
-
-// const sendRequest = () => {
-// const otherUserGoogleId = convoDetailsResponse.contactUser.googleId;
-
-// // todo mutation to create a user
-// sendContactRequest(otherUserGoogleId, {
-// onSettled: (data, error) => {
-// return queryClient.invalidateQueries(
-// Querytypes.GET_CONVERSATION_DETAILS + "/" + otherUserGoogleId
-// );
-// },
-// });
-// };
-
-// const acceptRequest = () => {
-// const otherUserGoogleId = convoDetailsResponse.contactUser.googleId;
-
-// updateRelationshipState(
-// new UpdateRelationshipStateRequest(
-// convoDetailsResponse.ourRelationship._id,
-// RelationshipState.ACTIVE
-// ),
-// {
-// onSettled: (data, error) => {
-// return queryClient.invalidateQueries(
-// Querytypes.GET_CONVERSATION_DETAILS + "/" + otherUserGoogleId
-// );
-// },
-// }
-// );
-// };
-
-// if (isLoading) return Please wait;
-
-// const renderMainContent = () => {
-// // if there's no relationship, then don't show messages, show "send request" button
-// if (!convoDetailsResponse?.ourRelationship) {
-// return ;
-// }
-
-// // if the relationship is pending and I am the receiver, then I should see an accept or deny button
-// if (
-// convoDetailsResponse.ourRelationship.state ===
-// RelationshipState.PENDING &&
-// userDetailsData.googleId ===
-// convoDetailsResponse.ourRelationship.receiverUserId
-// ) {
-// return (
-//
-// please accept this request by clicking here:{" "}
-//
-//
-// );
-// }
-
-// // when i sent a request to this person, just tell me that I have to wait
-// if (
-// convoDetailsResponse.ourRelationship.state ===
-// RelationshipState.PENDING &&
-// userDetailsData.googleId ===
-// convoDetailsResponse.ourRelationship.senderUserId
-// ) {
-// return Waiting on request to be accepted;
-// }
-
-// if (
-// convoDetailsResponse.ourRelationship.state === RelationshipState.ACTIVE
-// ) {
-// return this is all of the content;
-// }
-
-// if (
-// convoDetailsResponse.ourRelationship.state === RelationshipState.DENIED
-// ) {
-// return this request was denied;
-// }
-// };
-
-// const startRecording = async () => {
-// socketStartedSpeaking();
-// setIsRecording(true);
-
-// mediaRecorder.start();
-// };
-
-// const stopRecording = () => {
-// socketStopSpeaking();
-// setIsRecording(false);
-
-// mediaRecorder.stop();
-// };
-
-// // emit to room/conversation that someone started speaking
-// const socketStartedSpeaking = () => {
-// // send the room name and the update type
-
-// // only send if we are in a relationship
-// if (convoDetailsResponse.ourRelationship._id.toString())
-// socket.emit(
-// SocketChannels.SEND_STARTED_SPEAKING,
-// convoDetailsResponse.ourRelationship._id.toString()
-// );
-// };
-
-// const socketStopSpeaking = () => {
-// // send the room name and the update type
-
-// // only send if we are in a relationship
-// if (convoDetailsResponse.ourRelationship._id.toString())
-// socket.emit(
-// SocketChannels.SEND_STOPPED_SPEAKING,
-// convoDetailsResponse.ourRelationship._id.toString()
-// );
-// };
-
-// // hot keys for closing this window
-// const handleClose = () => {
-// setSelectedConvo(null);
-// };
-// const keyMap: KeyMap = {
-// CLOSE_SELECTED_CONVO: "esc",
-// START_RECORDING: {
-// name: "START RECORDING",
-// sequence: "`",
-// action: "keydown",
-// },
-// STOP_RECORDING: {
-// name: "STOP RECORDING",
-// sequence: "`",
-// action: "keyup",
-// },
-// };
-
-// const handlers = {
-// CLOSE_SELECTED_CONVO: handleClose,
-// START_RECORDING: startRecording,
-// STOP_RECORDING: stopRecording,
-// };
-
-// return (
-// <>
-//
-
-//
-// {/* close marker */}
-//
-
-// {/* top header/profile information */}
-//
-//
-//
-//
-//
-// {convoDetailsResponse.contactUser.name}
-//
-//
-//
-
-// {`joined ${moment(
-// convoDetailsResponse.contactUser.createdDate
-// ).fromNow()}`}
-//
-//
-
-// {renderMainContent()}
-
-//
-//
-// {isRecording ? (
-//
-// ) : (
-//
-// )}
-//
-
-//
-//
-//
-//
-//
-// >
-// );
-// }
diff --git a/packages/desktop/src/pages/Profile/index.tsx b/packages/desktop/src/pages/Profile/index.tsx
deleted file mode 100644
index 3f0ea80..0000000
--- a/packages/desktop/src/pages/Profile/index.tsx
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function Profile() {
- return this is the profile page;
-}
diff --git a/packages/desktop/src/nirvanaApp.tsx b/packages/desktop/src/pages/nirvanaApp.tsx
similarity index 83%
rename from packages/desktop/src/nirvanaApp.tsx
rename to packages/desktop/src/pages/nirvanaApp.tsx
index c6038df..0d109c5 100644
--- a/packages/desktop/src/nirvanaApp.tsx
+++ b/packages/desktop/src/pages/nirvanaApp.tsx
@@ -1,8 +1,8 @@
import { QueryClient, QueryClientProvider } from "react-query";
-import Home from "./pages/Home";
-import Login from "./pages/Login";
-import ProtectedRoute from "./components/ProtectedRoute";
+import Login from "./Login";
+import NirvanaRouter from "./router";
+import ProtectedRoute from "../components/ProtectedRoute";
import { ReactQueryDevtools } from "react-query/devtools";
import { RecoilRoot } from "recoil";
import { Toaster } from "react-hot-toast";
@@ -22,7 +22,7 @@ function NirvanaApp() {
-
+
diff --git a/packages/desktop/src/pages/router/index.tsx b/packages/desktop/src/pages/router/index.tsx
new file mode 100644
index 0000000..ba116d2
--- /dev/null
+++ b/packages/desktop/src/pages/router/index.tsx
@@ -0,0 +1,3 @@
+export default function NirvanaRouter() {
+ return <>this is the top level router>;
+}
diff --git a/packages/desktop/src/rendererTwo.ts b/packages/desktop/src/rendererTwo.ts
deleted file mode 100644
index b177b92..0000000
--- a/packages/desktop/src/rendererTwo.ts
+++ /dev/null
@@ -1 +0,0 @@
-import "./overlay/index";
diff --git a/packages/desktop/src/carbon.scss b/packages/desktop/src/styles/carbon.scss
similarity index 100%
rename from packages/desktop/src/carbon.scss
rename to packages/desktop/src/styles/carbon.scss
diff --git a/packages/desktop/src/index.css b/packages/desktop/src/styles/index.css
similarity index 100%
rename from packages/desktop/src/index.css
rename to packages/desktop/src/styles/index.css