Skip to content

Commit

Permalink
feat: join room
Browse files Browse the repository at this point in the history
  • Loading branch information
Quentin-Guillemin committed Mar 7, 2023
1 parent b9bbcc8 commit 5cb5a90
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 6 deletions.
48 changes: 48 additions & 0 deletions client/src/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,51 @@ a {
width: 100%;
height: 100%;
}

.share-container,
.leave-container {
z-index: 2;
position: absolute;
left: 110px;
display: flex;
box-shadow: var(--shadows-panel);
border-bottom-right-radius: 9px;
border-bottom-left-radius: 9px;
background-color: var(--colors-panelContrast);
}

.leave-container {
left: 50px;
}

.share-item,
.leave-item {
width: 60px;
height: 40px;
border-radius: 9px;
margin: 1px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: var(--fontSizes-1);
font-family: var(--fonts-ui);
color: var(--colors-text);
user-select: none;
}

.share-item:hover,
.leave-item:hover,
.input-join:hover {
background-color: var(--colors-hover);
}

.input-join {
border: none;
outline: none;
width: 100px;
height: 40px;
margin: 1px;
border-radius: 9px;
text-align: center;
}
50 changes: 44 additions & 6 deletions client/src/components/Editor.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { FormEvent, useState } from "react";
import { Tldraw, useFileSystem } from "@tldraw/tldraw";
import { CustomCursor } from "./Cursor";
import { useAssets } from "../hooks/useAssets";
Expand Down Expand Up @@ -34,19 +35,56 @@ function Editor({
readOnly,
language,
}: Settings) {
const [room, setRoom] = useState(roomId);
const [joinRoom, setJoinRoom] = useState(undefined);

language = language || "en";
initPersistence(idbName);
let editor = <SingleplayerEditor apiUrl={apiUrl} language={language} />;
if (wsUrl && roomId) {
initProvider(wsUrl, roomId);
if (wsUrl && room) {
initProvider(wsUrl, room);
editor = readOnly ? (
<MultiplayerReadOnlyEditor roomId={roomId} language={language} />
<MultiplayerReadOnlyEditor roomId={room} language={language} />
) : (
<MultiplayerEditor apiUrl={apiUrl} roomId={roomId} language={language} />
<MultiplayerEditor apiUrl={apiUrl} roomId={room} language={language} />
);
}
} else setTimeout(() => destroyProvider(), 500);

return editor;
return (
<div>
{wsUrl && !room && (
<div className="share-container">
<input
onChange={(e: FormEvent<HTMLInputElement>) =>
setJoinRoom(e.target.value)
}
className="input-join"
type="text"
placeholder="id of room"
></input>
{joinRoom && (
<a className="share-item" onClick={() => setRoom(joinRoom)}>
Join
</a>
)}
</div>
)}
{wsUrl && room && (
<div className="leave-container">
<a
className="leave-item"
onClick={() => {
setJoinRoom(undefined);
setRoom(undefined);
}}
>
Leave
</a>
</div>
)}
{editor}
</div>
);
}

function SingleplayerEditor({ apiUrl, language }: Singleplayer) {
Expand Down

0 comments on commit 5cb5a90

Please sign in to comment.