[Client] Add ability to copy game room link to clipboard
Also rename Invite your friends button to Copy invitation link and open the room code link in a new tab by default.
This commit is contained in:
parent
a539867a24
commit
a8c4d791c9
@ -102,6 +102,7 @@ function startChallengeGame() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Join room functions
|
// Join room functions
|
||||||
|
|
||||||
function joinRoom() {
|
function joinRoom() {
|
||||||
unsetListenerToJoinRoomButton();
|
unsetListenerToJoinRoomButton();
|
||||||
if (isNickNameInvalid()) {
|
if (isNickNameInvalid()) {
|
||||||
@ -114,6 +115,27 @@ function joinRoom() {
|
|||||||
//TODO: join the game room and handle server errors + connection errors
|
//TODO: join the game room and handle server errors + connection errors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Room code functions
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the room code to the clipboard.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* In order to not make an additional API call to get the room code, we use the value from the
|
||||||
|
* room code HTML element and generate a HTTP link from this value, copied to the clipboard using
|
||||||
|
* {@link copyTextToClipboard}.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
function copyCode() {
|
||||||
|
// Get the room code from the displayed text to avoid an extra API call
|
||||||
|
let roomCode = document.getElementsByClassName("room_code")[0].textContent;
|
||||||
|
if (roomCode == "") {
|
||||||
|
alert("Veuillez patientez, le code d'équipe est en cours de génération.");
|
||||||
|
}
|
||||||
|
copyTextToClipboard(window.location.protocol + "//" + window.location.hostname + ":"
|
||||||
|
+ window.location.port + "/lobby/" + roomCode);
|
||||||
|
}
|
||||||
|
|
||||||
// Listeners functions
|
// Listeners functions
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,6 +161,17 @@ function setListenerToJoinRoomButton() {
|
|||||||
document.getElementById("join_game_button").addEventListener("click", joinRoom);
|
document.getElementById("join_game_button").addEventListener("click", joinRoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set listeners to the copy room code button.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* This function adds a click event listener on the copy room code button.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
function setListenerToCopyCodeButton() {
|
||||||
|
document.getElementById("invite_friends_button").addEventListener("click", copyCode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unset listeners to game buttons.
|
* Unset listeners to game buttons.
|
||||||
*
|
*
|
||||||
@ -153,7 +186,7 @@ function unsetListenersToButtons() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set listeners to the join room button.
|
* Unset listeners to the join room button.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* This function removes the click event listener set with {@link setListenerToJoinRoomButton} on
|
* This function removes the click event listener set with {@link setListenerToJoinRoomButton} on
|
||||||
@ -164,6 +197,18 @@ function unsetListenerToJoinRoomButton() {
|
|||||||
document.getElementById("join_game_button").removeEventListener("click", joinRoom);
|
document.getElementById("join_game_button").removeEventListener("click", joinRoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unset listeners to the copy room code button.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* This function removes the click event listener set with {@link setListenerToCopyCodeButton} on
|
||||||
|
* the copy room code button.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
function unsetListenerToCopyCodeButton() {
|
||||||
|
document.getElementById("invite_friends_button").removeEventListener("click", copyCode);
|
||||||
|
}
|
||||||
|
|
||||||
// Utility functions
|
// Utility functions
|
||||||
|
|
||||||
function isRoomOwner() {
|
function isRoomOwner() {
|
||||||
@ -176,6 +221,30 @@ function hasJoinedRoom() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the given text in the clipboard, if the browser allows it.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* A JavaScript alert is created witn an appropriate message, regardless of whether the copy succeeded.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* This function uses the Clipboard API. In the case it is not supported by the browser used, a JavaScript alert is shown..
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param {string}} textToCopy the text to copy to the clipboard
|
||||||
|
*/
|
||||||
|
function copyTextToClipboard(textToCopy) {
|
||||||
|
if (!navigator.clipboard) {
|
||||||
|
alert("Votre navigateur ne supporte pas l'API Clipboard. Veuillez copier le texte en ouvrant le menu contextuel de votre navigateur sur le lien et sélectionner l'option pour copier le lien.");
|
||||||
|
}
|
||||||
|
navigator.clipboard.writeText(textToCopy).then(() => {
|
||||||
|
alert("Code copié avec succès dans le presse-papiers.");
|
||||||
|
}, () => {
|
||||||
|
alert("Impossible de copier le texte. Vérifiez si vous avez donné la permission d'accès au presse-papiers pour le site de Thruth Inquiry dans les paramètres de votre navigateur.");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether a nickname is invalid.
|
* Determine whether a nickname is invalid.
|
||||||
*
|
*
|
||||||
@ -254,6 +323,7 @@ function initLobby() {
|
|||||||
displayRoomCode();
|
displayRoomCode();
|
||||||
displayMultiPlayerModeChoices();
|
displayMultiPlayerModeChoices();
|
||||||
setListenersToGameButtons();
|
setListenersToGameButtons();
|
||||||
|
setListenerToCopyCodeButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
displayPlayerList();
|
displayPlayerList();
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
<div class="room_view_container">
|
<div class="room_view_container">
|
||||||
<h1 class="room_title">Salon</h1>
|
<h1 class="room_title">Salon</h1>
|
||||||
<div class="room_code_text hidden">
|
<div class="room_code_text hidden">
|
||||||
<h3 class="room_code_text_title">Code : <a href="" class="room_code"></a></h3>
|
<h3 class="room_code_text_title">Code : <a href="" target="_blank" class="room_code"></a></h3>
|
||||||
<button id="invite_friends_button" class="action_button">Inviter vos amis</button>
|
<button id="invite_friends_button" class="action_button">Copier le lien d'invitation</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="room_view_container">
|
<div class="room_view_container">
|
||||||
|
Loading…
Reference in New Issue
Block a user