Skip to content

Instantly share code, notes, and snippets.

@mappmechanic
Last active January 26, 2018 12:55
Show Gist options
  • Save mappmechanic/fc5f38fdc9b14608657d93009fdfdb90 to your computer and use it in GitHub Desktop.
Save mappmechanic/fc5f38fdc9b14608657d93009fdfdb90 to your computer and use it in GitHub Desktop.
// Using IIFE for Implementing Module Pattern to keep the Local Space for the JS Variables
(function() {
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;
var serverUrl = "/",
members = [],
pusher = new Pusher('73xxxxxxxxxxxxxxxdb', {
authEndpoint: '/usersystem/auth',
encrypted: true
}),
channel,
userForm = document.getElementById("user-form"),
memberTemplateStr = document.getElementById('member-template').innerHTML;
function showEle(elementId){
document.getElementById(elementId).style.display = 'flex';
}
function hideEle(elementId){
document.getElementById(elementId).style.display = 'none';
}
function ajax(url, method, payload, successCallback){
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.onreadystatechange = function () {
if (xhr.readyState != 4 || xhr.status != 200) return;
successCallback(xhr.responseText);
};
xhr.send(JSON.stringify(payload));
}
ajax(serverUrl+"isLoggedIn","GET",{},isLoginChecked);
function isLoginChecked(response){
var responseObj = JSON.parse(response);
if(responseObj.authenticated){
channel = pusher.subscribe('presence-whatsup-members');
bindChannelEvents(channel);
}
updateUserViewState(responseObj.authenticated);
}
function updateUserViewState(isLoggedIn){
document.getElementById("loader").style.display = "none";
if(isLoggedIn){
document.getElementById("logout").style.display = "flex";
document.getElementById("signup-form").style.display = "none";
}else{
document.getElementById("logout").style.display = "none";
document.getElementById("signup-form").style.display = "block";
}
}
function showLoader(){
document.getElementById("loader").style.display = "block";
document.getElementById("logout").style.display = "none";
document.getElementById("signup-form").style.display = "none";
}
// Adding a new Member Form Submit Event
userForm.addEventListener("submit", addNewMember);
function addNewMember(event){
event.preventDefault();
var newMember = {
"username": document.getElementById('display_name').value,
"status": document.getElementById('initial_status').value
}
showLoader();
ajax(serverUrl+"register","POST",newMember, onMemberAddSuccess);
}
function onMemberAddSuccess(response){
// On Success of registering a new member
console.log("Success: " + response);
userForm.reset();
updateUserViewState(true);
// Subscribing to the 'presence-members' Channel
channel = pusher.subscribe('presence-whatsup-members');
bindChannelEvents(channel);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment