summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2024-08-15 21:59:52 -0400
committerpommicket <pommicket@gmail.com>2024-08-15 21:59:52 -0400
commit11093ffda4f36e449f83303ffdebf60e5c058404 (patch)
tree09c00aebf14c27f702a1c71c42fe14e00337a6bd
parent5a3a0bb35e55294ab84fd8b759c637a0f1aeea82 (diff)
Fix link to image for non-host
-rw-r--r--game.html2
-rw-r--r--game.js6
-rw-r--r--server/src/main.rs11
3 files changed, 9 insertions, 10 deletions
diff --git a/game.html b/game.html
index 2c0a5d2..08c0b23 100644
--- a/game.html
+++ b/game.html
@@ -7,7 +7,7 @@
<meta content="width=device-width,initial-scale=1" name="viewport">
<link rel="icon" href="favicon.png">
<link rel="stylesheet" href="style.css">
- <script src="game.js?v=2" async></script>
+ <script src="game.js?v=3" async></script>
</head>
<body>
<div id="header">
diff --git a/game.js b/game.js
index 0e77d9c..6d3cbb0 100644
--- a/game.js
+++ b/game.js
@@ -387,7 +387,9 @@ window.addEventListener('load', function () {
const connectivityOffset = piecePositionsOffset + piecePositions.length * 4;
const connectivity = new Uint16Array(payload, connectivityOffset, puzzleWidth * puzzleHeight);
if (joinPuzzle) {
- imageUrl = new TextDecoder().decode(imageUrlBytes);
+ const parts = new TextDecoder().decode(imageUrlBytes).split(' ');
+ imageUrl = parts[0];
+ imageLink = parts.length > 1 ? parts[1] : parts[0];
await loadImage();
}
let nibTypeIndex = 0;
@@ -500,7 +502,7 @@ window.addEventListener('load', function () {
}
puzzleWidth = bestWidth;
puzzleHeight = heightFromWidth(puzzleWidth);
- socket.send(`new ${puzzleWidth} ${puzzleHeight} ${imageUrl}`);
+ socket.send(`new ${puzzleWidth} ${puzzleHeight} ${imageUrl};${imageLink}`);
}
let waitingForServerToGiveUsImageUrl = false;
socket.addEventListener('open', async () => {
diff --git a/server/src/main.rs b/server/src/main.rs
index 03ae435..c1d0a1d 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -316,7 +316,7 @@ async fn handle_websocket(
.ok_or(Error::BadSyntax)?
.parse()
.map_err(|_| Error::BadSyntax)?;
- let url: &str = parts.next().ok_or(Error::BadSyntax)?;
+ let url: String = parts.next().ok_or(Error::BadSyntax)?.replace(';', " ");
if url.len() > 255 {
return Err(Error::ImageURLTooLong);
}
@@ -362,7 +362,7 @@ async fn handle_websocket(
id,
width,
height,
- url,
+ &url,
nib_types,
piece_positions,
connectivity_data,
@@ -370,11 +370,8 @@ async fn handle_websocket(
.await?;
server.player_counts.lock().await.insert(id, 1);
*puzzle_id = Some(id);
- ws.send(Message::Text(format!(
- "id: {}",
- std::str::from_utf8(&id)?
- )))
- .await?;
+ ws.send(Message::Text(format!("id: {}", std::str::from_utf8(&id)?)))
+ .await?;
let info = get_puzzle_info(server, &id).await?;
ws.send(Message::Binary(info)).await?;
} else if let Some(id) = text.strip_prefix("join ") {