diff --git a/assets/js/pages/groups/pages/main.js b/assets/js/pages/groups/pages/main.js
index ffb68e42..40f69e75 100644
--- a/assets/js/pages/groups/pages/main.js
+++ b/assets/js/pages/groups/pages/main.js
@@ -38,23 +38,43 @@ ComunicWeb.pages.groups.pages.main = {
"info");
pageContainer.appendChild(message);
+ /**
+ * This function is used if an error occurs while retrieving the list
+ * of groups of the user
+ */
+ var getListError = function(){
+
+ message.remove();
+
+ pageContainer.appendChild(
+ ComunicWeb.common.messages.createCalloutElem(
+ "Error",
+ "An error occurred while retrieving the list of groups of the user!",
+ "danger"
+ )
+ );
+ }
+
//Get the list of groups of the user
ComunicWeb.components.groups.interface.getListUser(function(list){
- message.remove();
-
//Check for errors
if(list.error)
- return pageContainer.appendChild(
- ComunicWeb.common.messages.createCalloutElem(
- "Error",
- "An error occurred while retrieving the list of groups of the user!",
- "danger"
- )
- );
+ return getListError();
- //Display the list of the groups of the user
- ComunicWeb.pages.groups.pages.main._display_list(pageContainer, list);
+ //Get information about the groups
+ getInfoMultipleGroups(list, function(info){
+
+ if(info.error)
+ return getListError();
+
+ message.remove();
+
+ //Display the list of the groups of the user
+ ComunicWeb.pages.groups.pages.main._display_list(pageContainer, info);
+
+ }, true);
+
});
},
@@ -65,70 +85,84 @@ ComunicWeb.pages.groups.pages.main = {
* @param {Object} list The list to apply
*/
_display_list: function(target, list){
+
+ for (const i in list) {
+ if (list.hasOwnProperty(i)) {
+ const group = list[i];
+
+ ComunicWeb.pages.groups.pages.main._display_group(group, target);
+ }
+ }
- //Process the list of groups
- list.forEach(function(group){
+ },
- //Create group item
- var groupItem = createElem2({
- appendTo: target,
- type: "div",
- class: "group-item"
- });
+ /**
+ * Display single group entry
+ *
+ * @param {Object} group Information about the group
+ * @param {HTMLElement} target The target to display
+ * information about the group
+ */
+ _display_group: function(group, target){
- //Display group information
- createElem2({
- appendTo: groupItem,
- type: "img",
- class: "group-icon",
- src: group.icon_url
- });
-
- var groupName = createElem2({
- appendTo: groupItem,
- type: "div",
- class: "group-name a",
- innerHTML: group.name
- });
-
- groupName.addEventListener("click", function(e){
- openGroupPage(group);
- });
-
- //Offer the user to delete its membership
- var deleteButton = createElem2({
- appendTo: groupItem,
- type: "div",
- class: "buttons-area a",
- innerHTML: ""
- });
-
- deleteButton.addEventListener("click", function(e){
-
- //Ask user confirmation
- ComunicWeb.common.messages.confirm("Do you really want to delete your membership of this group ?", function(r){
- if(!r) return;
-
- groupItem.style.visibility = "hidden";
-
- ComunicWeb.components.groups.interface.removeMembership(group.id, function(result){
-
- groupItem.style.visibility = "visible";
-
- if(result.error)
- return notify("Could not delete your membership to this group!", "error");
-
- groupItem.remove();
-
- });
- });
-
- });
-
- //Display membership status
- ComunicWeb.pages.groups.sections.membershipBlock.display(group, groupItem);
+ //Create group item
+ var groupItem = createElem2({
+ appendTo: target,
+ type: "div",
+ class: "group-item"
});
+ //Display group information
+ createElem2({
+ appendTo: groupItem,
+ type: "img",
+ class: "group-icon",
+ src: group.icon_url
+ });
+
+ var groupName = createElem2({
+ appendTo: groupItem,
+ type: "div",
+ class: "group-name a",
+ innerHTML: group.name
+ });
+
+ groupName.addEventListener("click", function(e){
+ openGroupPage(group);
+ });
+
+ //Offer the user to delete its membership
+ var deleteButton = createElem2({
+ appendTo: groupItem,
+ type: "div",
+ class: "buttons-area a",
+ innerHTML: ""
+ });
+
+ deleteButton.addEventListener("click", function(e){
+
+ //Ask user confirmation
+ ComunicWeb.common.messages.confirm("Do you really want to delete your membership of this group ?", function(r){
+ if(!r) return;
+
+ groupItem.style.visibility = "hidden";
+
+ ComunicWeb.components.groups.interface.removeMembership(group.id, function(result){
+
+ groupItem.style.visibility = "visible";
+
+ if(result.error)
+ return notify("Could not delete your membership to this group!", "error");
+
+ groupItem.remove();
+
+ });
+ });
+
+ });
+
+ //Display membership status
+ ComunicWeb.pages.groups.sections.membershipBlock.display(group, groupItem);
}
}
\ No newline at end of file