diff options
author | pommicket <pommicket@gmail.com> | 2024-08-15 21:59:52 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2024-08-15 21:59:52 -0400 |
commit | 11093ffda4f36e449f83303ffdebf60e5c058404 (patch) | |
tree | 09c00aebf14c27f702a1c71c42fe14e00337a6bd | |
parent | 5a3a0bb35e55294ab84fd8b759c637a0f1aeea82 (diff) |
Fix link to image for non-host
-rw-r--r-- | game.html | 2 | ||||
-rw-r--r-- | game.js | 6 | ||||
-rw-r--r-- | server/src/main.rs | 11 |
3 files changed, 9 insertions, 10 deletions
@@ -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"> @@ -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 ") { |