mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-29 12:18:51 +00:00
210 lines
5.0 KiB
JavaScript
210 lines
5.0 KiB
JavaScript
/**
|
|
* Handle the update of the friendship status
|
|
*
|
|
* @author Pierre HUBERT
|
|
*/
|
|
|
|
ComunicWeb.pages.userPage.friendshipStatus = {
|
|
|
|
/**
|
|
* Display the friendship status
|
|
*
|
|
* @param {Integer} userID The ID of the target user
|
|
* @param {HTMLElement} target The target element
|
|
*/
|
|
display: function(userID, target){
|
|
|
|
//Get the current status of the friendship
|
|
ComunicWeb.components.friends.list.getStatus(userID, function(response){
|
|
|
|
//Empty the target area
|
|
emptyElem(target);
|
|
target.innerHTML = "";
|
|
|
|
//Check for errors
|
|
if(response.error){
|
|
message = ComunicWeb.common.messages.createCalloutElem("Error", "Couldn't load friendship informations !", "danger");
|
|
target.appendChild(message);
|
|
return;
|
|
}
|
|
|
|
//Check if the user has received a friendship request
|
|
if(response.received_request){
|
|
|
|
//Offer the user to reject a frienship request
|
|
var rejectRequest = createElem2({
|
|
appendTo: target,
|
|
type: "button",
|
|
class: "btn btn-xs btn-danger",
|
|
innerHTML: "Reject request"
|
|
});
|
|
|
|
createElem2({
|
|
appendTo: target,
|
|
type: "span",
|
|
innerHTML: " ",
|
|
})
|
|
|
|
//Offer the user to accept a frienship request
|
|
var acceptRequest = createElem2({
|
|
appendTo: target,
|
|
type: "button",
|
|
class: "btn btn-xs btn-success",
|
|
innerHTML: "Accept request"
|
|
});
|
|
|
|
//Prepare the buttons
|
|
acceptRequest.setAttribute("data-accept", "true");
|
|
rejectRequest.setAttribute("data-accept", "false");
|
|
|
|
//Setup the action
|
|
var respondRequest = function(){
|
|
|
|
//Lock the buttons
|
|
acceptRequest.disabled = true;
|
|
rejectRequest.disabled = true;
|
|
|
|
//Get the status of the request
|
|
var accept = this.getAttribute("data-accept") == "true";
|
|
|
|
//Perform the action
|
|
ComunicWeb.components.friends.list.respondRequest(userID, accept, function(response){
|
|
|
|
//Unlock the buttons
|
|
acceptRequest.disabled = false;
|
|
rejectRequest.disabled = false;
|
|
|
|
//Check for errors
|
|
if(response.error){
|
|
ComunicWeb.common.notificationSystem.showNotification("Couldn't update request status !",
|
|
"danger", 5);
|
|
}
|
|
|
|
else {
|
|
//Reopen user page
|
|
openUserPage(userID);
|
|
}
|
|
|
|
});
|
|
|
|
|
|
}
|
|
acceptRequest.onclick = respondRequest;
|
|
rejectRequest.onclick = respondRequest;
|
|
|
|
}
|
|
|
|
//Check if user has sent a friendship request
|
|
else if(response.sent_request){
|
|
|
|
//Offer the user to cancel a frienship request
|
|
var cancelRequest = createElem2({
|
|
appendTo: target,
|
|
type: "button",
|
|
class: "btn btn-xs btn-danger",
|
|
innerHTML: "Cancel request"
|
|
});
|
|
|
|
cancelRequest.onclick = function(){
|
|
|
|
//Lock button
|
|
this.disabled = true;
|
|
|
|
//Send the request
|
|
ComunicWeb.components.friends.list.removeRequest(userID, function(response){
|
|
|
|
//Check for errors
|
|
if(response.error){
|
|
ComunicWeb.common.notificationSystem.showNotification("An error occured while trying to remove the request !");
|
|
}
|
|
|
|
//Reload this component
|
|
ComunicWeb.pages.userPage.friendshipStatus.display(userID, target);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//Display send request message
|
|
else if(response.are_friend == false) {
|
|
|
|
//Offer the user to send a frienship request
|
|
var sendRequestButton = createElem2({
|
|
appendTo: target,
|
|
type: "button",
|
|
class: "btn btn-xs btn-primary",
|
|
innerHTML: "Send request"
|
|
});
|
|
|
|
sendRequestButton.onclick = function(){
|
|
|
|
//Lock button
|
|
this.disabled = true;
|
|
|
|
//Send the request
|
|
ComunicWeb.components.friends.list.sendRequest(userID, function(response){
|
|
|
|
//Check for errors
|
|
if(response.error){
|
|
ComunicWeb.common.notificationSystem.showNotification("An error occured while trying to send the request !");
|
|
}
|
|
|
|
//Reload this component
|
|
ComunicWeb.pages.userPage.friendshipStatus.display(userID, target);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//Offer user to follow other user
|
|
else {
|
|
|
|
//Setup button
|
|
var followButton = createElem2({
|
|
appendTo: target,
|
|
type: "button",
|
|
class: "btn btn-primary btn-block",
|
|
});
|
|
|
|
if(response.following){
|
|
followButton.innerHTML = "Following";
|
|
followButton.setAttribute("data-following", "true");
|
|
}
|
|
else {
|
|
followButton.innerHTML = "Follow";
|
|
followButton.setAttribute("data-following", "false");
|
|
}
|
|
|
|
//Make the follow button live
|
|
followButton.onclick = function(){
|
|
|
|
//Lock button
|
|
this.disabled = true;
|
|
|
|
//Check if the user has to be followed or not (reverse current state)
|
|
var follow = this.getAttribute("data-following") == "false";
|
|
|
|
ComunicWeb.components.friends.list.setFollowing(userID, follow, function(response){
|
|
|
|
//Check for errors
|
|
if(response.error){
|
|
ComunicWeb.common.notificationSystem.showNotification("An error occured while trying to update following status !");
|
|
}
|
|
|
|
//Reload this component
|
|
ComunicWeb.pages.userPage.friendshipStatus.display(userID, target);
|
|
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} |