Merge pull request 'use username for multi games' (!74) from feature/use-username-for-multi into develop
All checks were successful
mapguesser/pipeline/head This commit looks good
mapguesser/pipeline/tag This commit looks good

Reviewed-on: #74
This commit is contained in:
Bence Pőcze 2023-09-26 00:05:55 +02:00 committed by Gitea
commit 7be04f128a
Signed by: Gitea
GPG Key ID: 7B89B83EED9AD2C6
5 changed files with 23 additions and 28 deletions

4
Jenkinsfile vendored
View File

@ -37,7 +37,7 @@ pipeline {
sh 'vendor/bin/phpunit --log-junit unit_test_results.xml --testdox tests' sh 'vendor/bin/phpunit --log-junit unit_test_results.xml --testdox tests'
} }
post { post {
success { always {
archiveArtifacts 'unit_test_results.xml' archiveArtifacts 'unit_test_results.xml'
} }
} }
@ -56,7 +56,7 @@ pipeline {
sh 'php -d memory_limit=1G vendor/bin/phpstan analyse -c phpstan.neon --error-format=prettyJson > static_code_analysis_results.json' sh 'php -d memory_limit=1G vendor/bin/phpstan analyse -c phpstan.neon --error-format=prettyJson > static_code_analysis_results.json'
} }
post { post {
success { always {
archiveArtifacts 'static_code_analysis_results.json' archiveArtifacts 'static_code_analysis_results.json'
} }
} }

View File

@ -231,17 +231,6 @@ const GameType = Object.freeze({ 'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2 });
prepare: function () { prepare: function () {
var data = new FormData(); var data = new FormData();
var userNames;
if (roomId) {
var userNames = localStorage.userNames ? JSON.parse(localStorage.userNames) : {};
if (!userNames.hasOwnProperty(roomId)) {
userNames[roomId] = prompt('Your name: ');
localStorage.userNames = JSON.stringify(userNames);
}
data.append('userName', userNames[roomId]);
}
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
var url = Game.getGameIdentifier() + '/prepare.json'; var url = Game.getGameIdentifier() + '/prepare.json';
@ -618,7 +607,7 @@ const GameType = Object.freeze({ 'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2 });
break; break;
case 'anonymous_user': case 'anonymous_user':
MapGuesser.showModalWithContent('Error', 'You have to login to join a challenge!'); MapGuesser.showModalWithContent('Error', 'You have to login to join this game!');
break; break;
default: default:

View File

@ -131,11 +131,13 @@
}, formData); }, formData);
}; };
document.getElementById('multiButton').onclick = function () { if (document.getElementById('multiButton')) {
MapGuesser.showModal('multi'); document.getElementById('multiButton').onclick = function () {
document.getElementById('createNewRoomButton').href = '/multiGame/new/' + this.dataset.mapId; MapGuesser.showModal('multi');
document.getElementById('multiForm').elements.roomId.select(); document.getElementById('createNewRoomButton').href = '/multiGame/new/' + this.dataset.mapId;
document.getElementById('playMode').style.visibility = 'hidden'; document.getElementById('multiForm').elements.roomId.select();
document.getElementById('playMode').style.visibility = 'hidden';
}
} }
if (document.getElementById('challengeButton')) { if (document.getElementById('challengeButton')) {

View File

@ -1,7 +1,6 @@
<?php namespace MapGuesser\Controller; <?php namespace MapGuesser\Controller;
use DateTime; use DateTime;
use Faker\Factory;
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired; use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
use SokoWeb\Response\HtmlContent; use SokoWeb\Response\HtmlContent;
use SokoWeb\Response\JsonContent; use SokoWeb\Response\JsonContent;
@ -12,6 +11,7 @@ use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\MultiRoom; use MapGuesser\PersistentData\Model\MultiRoom;
use MapGuesser\PersistentData\Model\PlaceInChallenge; use MapGuesser\PersistentData\Model\PlaceInChallenge;
use MapGuesser\PersistentData\Model\UserInChallenge; use MapGuesser\PersistentData\Model\UserInChallenge;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\Repository\ChallengeRepository; use MapGuesser\Repository\ChallengeRepository;
use MapGuesser\Repository\MapRepository; use MapGuesser\Repository\MapRepository;
use MapGuesser\Repository\MultiRoomRepository; use MapGuesser\Repository\MultiRoomRepository;
@ -190,13 +190,17 @@ class GameController implements IAuthenticationRequired
public function prepareMultiGame(): IContent public function prepareMultiGame(): IContent
{ {
$roomId = \Container::$request->query('roomId'); /**
$userName = \Container::$request->post('userName'); * @var User|null $user
if (empty($userName)) { */
$faker = Factory::create(); $user = \Container::$request->user();
$userName = $faker->userName; if ($user === null)
{
return new JsonContent(['error' => 'anonymous_user']);
} }
$roomId = \Container::$request->query('roomId');
$room = $this->multiRoomRepository->getByRoomId($roomId); $room = $this->multiRoomRepository->getByRoomId($roomId);
if (!isset($room)) { if (!isset($room)) {
@ -225,7 +229,7 @@ class GameController implements IAuthenticationRequired
$this->multiConnector->sendMessage('join_room', [ $this->multiConnector->sendMessage('join_room', [
'roomId' => $roomId, 'roomId' => $roomId,
'token' => $token, 'token' => $token,
'userName' => $userName 'userName' => $user->getDisplayName()
]); ]);
return new JsonContent([ return new JsonContent([

View File

@ -9,9 +9,9 @@ TODO: condition!
<div id="playMode" class="modal"> <div id="playMode" class="modal">
<h2>Play map</h2> <h2>Play map</h2>
<a id="singleButton" class="button fullWidth marginTop" href="" title="Single player">Single player</a> <a id="singleButton" class="button fullWidth marginTop" href="" title="Single player">Single player</a>
<p class="bold center marginTop marginBottom">OR</p>
<button id="multiButton" class="fullWidth green" data-map-id="">Multiplayer (beta)</button>
<?php if ($isLoggedIn): ?> <?php if ($isLoggedIn): ?>
<p class="bold center marginTop marginBottom">OR</p>
<button id="multiButton" class="fullWidth green" data-map-id="">Multiplayer (beta)</button>
<p class="bold center marginTop marginBottom">OR</p> <p class="bold center marginTop marginBottom">OR</p>
<button id="challengeButton" class="fullWidth yellow" data-map-id="" data-timer="">Challenge (gamma)</button> <button id="challengeButton" class="fullWidth yellow" data-map-id="" data-timer="">Challenge (gamma)</button>
<?php endif; ?> <?php endif; ?>