Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. const siteList = document.querySelector("#site-list");
  2. const groupList = document.querySelector("#group-list");
  3. const form = document.querySelector("#create-group-form");
  4. const txtEmail = document.getElementById("txtEmail");
  5. const txtPassword = document.getElementById("txtPassword");
  6. const btnLogin = document.getElementById("btnLogin");
  7. const btnSignUp = document.getElementById("btnSignUp");
  8. const btnLogout = document.getElementById("btnLogout");
  9. const userNameHTML = document.getElementById("userNameHTML");
  10. const userIDHTML = document.getElementById("userIDHTML");
  11. const user = firebase.auth().currentUser;
  12.  
  13. // Add login event
  14. btnLogin.addEventListener("click", event => {
  15. const email = txtEmail.value;
  16. const pass = txtPassword.value;
  17. const auth = firebase.auth();
  18. // Sign In
  19. const promise = auth.signInWithEmailAndPassword(email, pass);
  20. promise.catch(event => console.log(event.message));
  21. });
  22.  
  23. btnSignUp.addEventListener("click", event => {
  24. const email = txtEmail.value;
  25. const pass = txtPassword.value;
  26. const auth = firebase.auth();
  27. // Create User
  28. const promise = auth.createUserWithEmailAndPassword(email, pass);
  29. promise.catch(event => console.log(event.message));
  30. });
  31.  
  32. btnLogout.addEventListener("click", event => {
  33. firebase.auth().signOut();
  34. });
  35.  
  36. firebase.auth().onAuthStateChanged(firebaseUser => {
  37. if (firebaseUser) {
  38. userNameHTML.textContent = "User: " + firebaseUser.email;
  39. userIDHTML.textContent = "UserID: " + firebaseUser.uid;
  40. let userData = db.collection("users").doc(firebaseUser.uid);
  41. userData.get().then(function(doc) {
  42. if (!doc.exists) {
  43. userData.set({
  44. email: firebaseUser.email,
  45. adminOf: {},
  46. memberOf: {}
  47. });
  48. }
  49. renderGroupLocations(doc);
  50. });
  51. } else {
  52. userNameHTML.textContent = "User: Logged Out";
  53. userIDHTML.textContent = "User: Logged Out";
  54. document.getElementById("memberOf-list").innerHTML = "";
  55. }
  56. });
  57.  
  58. // create element and render cafe
  59.  
  60. const renderGroupLocations = doc => {
  61. let li = document.createElement("li");
  62. let group = document.createElement("span");
  63. let groupID = document.createElement("span");
  64. let cross = document.createElement("div");
  65.  
  66. li.setAttribute("data-id", doc.id);
  67. group.textContent = doc.data().groupName;
  68. groupID.textContent = doc.data().groupID;
  69. cross.textContent = "x";
  70.  
  71. li.appendChild(group);
  72. li.appendChild(groupID);
  73. li.appendChild(cross);
  74. memberOfList.appendChild(li);
  75.  
  76. // deleting data
  77.  
  78. cross.addEventListener("click", event => {
  79. event.stopPropagation();
  80. let id = event.target.parentElement.getAttribute("data-id"); // getting document ID see line 11
  81. db.collection("sites")
  82. .doc("WLnErGtp51DlDiHjOLF8")
  83. .collection("groups")
  84. .doc(id)
  85. .delete();
  86. });
  87. };
  88.  
  89.  
  90. // saving data
  91. form.addEventListener("submit", event => {
  92. event.preventDefault();
  93. db.collection("sites")
  94. .doc("WLnErGtp51DlDiHjOLF8")
  95. .collection("groups")
  96. .add({
  97. groupID: form.groupID.value,
  98. groupName: form.groupName.value
  99. });
  100. form.groupID.value = "";
  101. form.groupName.value = "";
  102. });
  103.  
  104. // real-time-listener
  105. db.collection("sites").onSnapshot(snapshot => {
  106. let changes = snapshot.docChanges();
  107. changes.forEach(change => {
  108. if (change.type === "added") {
  109. renderMemberLocations(change.doc);
  110. } else if (change.type === "removed") {
  111. let li = renderMemberLocations.querySelector(
  112. "[data-id=" + change.doc.id + "]"
  113. );
  114. cafeList.removeChild(li);
  115. }
  116. });
  117. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement