Ask for pin for private rooms
This commit is contained in:
parent
9ec601b263
commit
fb49da2edd
2 changed files with 45 additions and 16 deletions
|
@ -73,7 +73,7 @@ def on_leave(data):
|
||||||
@app.get("/api/join")
|
@app.get("/api/join")
|
||||||
def join():
|
def join():
|
||||||
room_id = request.args.get("room")
|
room_id = request.args.get("room")
|
||||||
code = request.args.get("code")
|
code = request.args.get("pin")
|
||||||
|
|
||||||
if room_id is None:
|
if room_id is None:
|
||||||
return error("Missing room id")
|
return error("Missing room id")
|
||||||
|
@ -81,8 +81,11 @@ def join():
|
||||||
if (room := state.rooms.get(int(room_id))) is None:
|
if (room := state.rooms.get(int(room_id))) is None:
|
||||||
return error("Invalid room")
|
return error("Invalid room")
|
||||||
|
|
||||||
if room.pin is not None and room.pin != code:
|
if room.pin is not None:
|
||||||
return error("Invalid code")
|
if code is None:
|
||||||
|
return error("Missing code")
|
||||||
|
if int(room.pin) != int(code):
|
||||||
|
return error("Invalid code")
|
||||||
|
|
||||||
distance = distance_between_coords(
|
distance = distance_between_coords(
|
||||||
lhs=room.coord,
|
lhs=room.coord,
|
||||||
|
|
|
@ -1,19 +1,45 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { type Room } from "$lib/types"
|
import { type Room } from "$lib/types"
|
||||||
let { room }: { room: Room } = $props()
|
let { room }: { room: Room } = $props()
|
||||||
|
let showPinModal: boolean = $state(false)
|
||||||
|
let pin: number = $state()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<a
|
<div
|
||||||
class="flex w-82 cursor-pointer flex-row items-center rounded-md border border-dark-pine-muted bg-light-pine-overlay p-3 hover:bg-dark-pine-base/20 dark:bg-dark-pine-overlay hover:dark:bg-light-pine-base/20"
|
class="flex gap-2 w-82 cursor-pointer flex-col rounded-md border border-dark-pine-muted bg-light-pine-overlay p-3 hover:bg-dark-pine-base/20 dark:bg-dark-pine-overlay hover:dark:bg-light-pine-base/20"
|
||||||
href="/room/{room.id}"
|
|
||||||
>
|
>
|
||||||
<div class="flex flex-row">
|
<button
|
||||||
{room.name}
|
class="flex flex-row items-center"
|
||||||
{room.private ? "🔒" : ""}
|
onclick={() => {
|
||||||
</div>
|
if (!room.private) {
|
||||||
<div class="grow"></div>
|
window.location.href = "/room/" + room.id
|
||||||
<div class="flex flex-row items-center gap-2">
|
return
|
||||||
<div class="font-mono">{Math.round(room.distance)}m</div>
|
}
|
||||||
<div class="rounded bg-light-pine-blue px-2 py-0.5 text-dark-pine-text dark:bg-dark-pine-blue">Join</div>
|
showPinModal = !showPinModal
|
||||||
</div>
|
}}
|
||||||
</a>
|
>
|
||||||
|
<div class="flex flex-row">
|
||||||
|
{room.name}
|
||||||
|
{room.private ? "🔒" : ""}
|
||||||
|
</div>
|
||||||
|
<div class="grow"></div>
|
||||||
|
<div class="flex flex-row items-center gap-2">
|
||||||
|
<div class="font-mono">{Math.round(room.distance)}m</div>
|
||||||
|
<div class="rounded bg-light-pine-blue px-2 py-0.5 text-dark-pine-text dark:bg-dark-pine-blue">Join</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
{#if showPinModal}
|
||||||
|
<input
|
||||||
|
placeholder="PIN (requied)"
|
||||||
|
class="p-2 text-xl rounded-md border-dark-pine-muted bg-light-pine-overlay dark:bg-dark-pine-base hover:dark:bg-light-pine-base/20 duration-100 outline-none focus:ring-2"
|
||||||
|
type="number"
|
||||||
|
bind:value={pin}
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
onclick={() => {
|
||||||
|
window.location.href = `/room/${room.id}?pin=${pin}`
|
||||||
|
}}
|
||||||
|
class="p-2 text-xl rounded-md border-dark-pine-muted bg-light-pine-overlay dark:bg-dark-pine-base hover:dark:bg-light-pine-base/20 duration-100 outline-none focus:ring-2">JOIN</button
|
||||||
|
>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue