mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-04 12:14:12 +00:00 
			
		
		
		
	Working on implemention of conversation component
This commit is contained in:
		@@ -565,6 +565,13 @@ var ComunicWeb = {
 | 
				
			|||||||
			 */
 | 
								 */
 | 
				
			||||||
			service:{
 | 
								service:{
 | 
				
			||||||
				//TODO : implement
 | 
									//TODO : implement
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								/**
 | 
				
			||||||
 | 
								 * Conversations utilities
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
								utils:{
 | 
				
			||||||
 | 
									//TODO : implement
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,10 +21,10 @@ ComunicWeb.components.conversations.cachingOpened = {
 | 
				
			|||||||
		//Add new conversation (if required)
 | 
							//Add new conversation (if required)
 | 
				
			||||||
		if(!conversations.includes(conversationID.toString())){
 | 
							if(!conversations.includes(conversationID.toString())){
 | 
				
			||||||
			conversations.push(conversationID);
 | 
								conversations.push(conversationID);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			//Convert into string
 | 
								//Convert into string
 | 
				
			||||||
			var conversationsString = conversations.join(";");
 | 
								var conversationsString = conversations.join(";");
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			//Save the new values
 | 
								//Save the new values
 | 
				
			||||||
			sessionStorage.setItem(this.__varName, conversationsString);
 | 
								sessionStorage.setItem(this.__varName, conversationsString);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,4 +39,28 @@ ComunicWeb.components.conversations.chatWindows = {
 | 
				
			|||||||
		return infosBox;
 | 
							return infosBox;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Change the name of the converation at the top of the windows
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param {String} newName The new name for the conversation window
 | 
				
			||||||
 | 
						 * @param {Ojbect} infos INformations about the conversation window
 | 
				
			||||||
 | 
						 * @return {Boolean} True for a success
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						changeName: function(newName, infos){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Empty name field
 | 
				
			||||||
 | 
							emptyElem(infos.boxTitle);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							//Create conversation icon 
 | 
				
			||||||
 | 
							var conversationIcon = createElem("i", infos.boxTitle);
 | 
				
			||||||
 | 
							conversationIcon.className = "fa fa-comments";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Add conversation title
 | 
				
			||||||
 | 
							var conversationTitle = createElem("span", infos.boxTitle);
 | 
				
			||||||
 | 
							conversationTitle.innerHTML = " " + newName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Success
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -9,7 +9,7 @@ ComunicWeb.components.conversations.interface = {
 | 
				
			|||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @var {Object} __conversationsList Cached list of conversations
 | 
						 * @var {Object} __conversationsList Cached list of conversations
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	__conversationsList: false,
 | 
						__conversationsList: {},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Get and return the list of available conversations
 | 
						 * Get and return the list of available conversations
 | 
				
			||||||
@@ -98,4 +98,48 @@ ComunicWeb.components.conversations.interface = {
 | 
				
			|||||||
		//Success
 | 
							//Success
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Get informations about a unique conversation
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param {Integer} conversationID The ID of the conversation
 | 
				
			||||||
 | 
						 * @param {function} nextStep What to do once the operation is completed
 | 
				
			||||||
 | 
						 * @param {Boolean} forceRefresh Force informations about the conversation to be fetched (ignore cached informations)
 | 
				
			||||||
 | 
						 * @return {Boolan} True for a success
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						getInfosOne: function(conversationID, nextStep, forceRefresh){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//First, if the conversation is available in the cache
 | 
				
			||||||
 | 
							if(!forceRefresh && this.__conversationsList['conversation-'+conversationID]){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Perform next action now without getting fresh informations on the server
 | 
				
			||||||
 | 
								nextStep(this.__conversationsList['conversation-'+conversationID]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Success
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Else, perform an API request
 | 
				
			||||||
 | 
							//TODO : implement ON NEXT DEVELOPMENT SESSION
 | 
				
			||||||
 | 
							console.log("Please implement me !!!!!!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Success
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Empty conversations cache
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @return {Boolean} True for a success
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						emptyCache: function(){
 | 
				
			||||||
 | 
							//Empty cache
 | 
				
			||||||
 | 
							clearObject(this.__conversationsList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Success
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Register conversations cache cleaning function
 | 
				
			||||||
 | 
					ComunicWeb.common.cacheManager.registerCacheCleaner("ComunicWeb.components.conversations.interface.emptyCache");
 | 
				
			||||||
@@ -181,8 +181,8 @@ ComunicWeb.components.conversations.list = {
 | 
				
			|||||||
			//Remove the conversation box
 | 
								//Remove the conversation box
 | 
				
			||||||
			infos.listBox.rootElem.remove();
 | 
								infos.listBox.rootElem.remove();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//Open the conversation (under construction)
 | 
								//Add & open the conversation
 | 
				
			||||||
			ComunicWeb.components.conversations.manager.openConversation({
 | 
								ComunicWeb.components.conversations.manager.addConversation({
 | 
				
			||||||
				conversationID: response.conversationID
 | 
									conversationID: response.conversationID
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
@@ -257,8 +257,8 @@ ComunicWeb.components.conversations.list = {
 | 
				
			|||||||
			//Remove conversations list
 | 
								//Remove conversations list
 | 
				
			||||||
			listBox.rootElem.remove();
 | 
								listBox.rootElem.remove();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//Open conversation
 | 
								//Add & open conversation
 | 
				
			||||||
			ComunicWeb.components.conversations.manager.openConversation({
 | 
								ComunicWeb.components.conversations.manager.addConversation({
 | 
				
			||||||
				conversationID: conversationInfos.ID
 | 
									conversationID: conversationInfos.ID
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -278,44 +278,14 @@ ComunicWeb.components.conversations.list = {
 | 
				
			|||||||
		//Create the conversation name element
 | 
							//Create the conversation name element
 | 
				
			||||||
		var conversationNameElem = createElem("strong", linkElem);
 | 
							var conversationNameElem = createElem("strong", linkElem);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		//Check if the conversation has a name or not
 | 
							//Put conversation name field in a waiting state
 | 
				
			||||||
		if(conversationInfos.name)
 | 
							conversationNameElem.style.fontSize = "90%";
 | 
				
			||||||
			conversationNameElem.innerHTML = conversationInfos.name;
 | 
							conversationNameElem.innerHTML = "Loading...";
 | 
				
			||||||
		else {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//Put conversation name field in a waiting state
 | 
							//Get conversation name and apply it
 | 
				
			||||||
			conversationNameElem.style.fontSize = "90%";
 | 
							ComunicWeb.components.conversations.utils.getName(conversationInfos, function(conversationName){
 | 
				
			||||||
			conversationNameElem.innerHTML = "Loading...";
 | 
								conversationNameElem.innerHTML = conversationName;
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
			//Get informations about the first two members
 | 
					 | 
				
			||||||
			var firstMembers = [];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			//Retrieve IDs
 | 
					 | 
				
			||||||
			for(o in conversationInfos.members){
 | 
					 | 
				
			||||||
				//Limit number to 2
 | 
					 | 
				
			||||||
				if(firstMembers.length < 2){ 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					//Check this is a valid entry
 | 
					 | 
				
			||||||
					if(conversationInfos.members[o]){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						//Exclude current user ID
 | 
					 | 
				
			||||||
						if(conversationInfos.members[o] != userID()) 
 | 
					 | 
				
			||||||
							firstMembers.push(conversationInfos.members[o]);
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			//Get users informations
 | 
					 | 
				
			||||||
			ComunicWeb.user.userInfos.getNames(firstMembers, function(usersName){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				//For conversations with many members (more than 3 - we musn't forget current user)
 | 
					 | 
				
			||||||
				if(conversationInfos.members.length > 3)
 | 
					 | 
				
			||||||
					usersName += ", ...";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				//Apply conversation name
 | 
					 | 
				
			||||||
				conversationNameElem.innerHTML = usersName;
 | 
					 | 
				
			||||||
			});
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//Add members number
 | 
							//Add members number
 | 
				
			||||||
		//Create paragraph
 | 
							//Create paragraph
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,6 +64,15 @@ ComunicWeb.components.conversations.manager = {
 | 
				
			|||||||
		//First, add the "open a conversation" new
 | 
							//First, add the "open a conversation" new
 | 
				
			||||||
		this.addOpenConversationButton(conversationsContainerElem);
 | 
							this.addOpenConversationButton(conversationsContainerElem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Then, open any already active conversation
 | 
				
			||||||
 | 
							var openedConversations = ComunicWeb.components.conversations.cachingOpened.getAll();
 | 
				
			||||||
 | 
							console.log(openedConversations);
 | 
				
			||||||
 | 
							//Process opened conversations
 | 
				
			||||||
 | 
							for(i in openedConversations){
 | 
				
			||||||
 | 
								if(i < openedConversations.length)
 | 
				
			||||||
 | 
									this.openConversation(openedConversations[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -87,14 +96,13 @@ ComunicWeb.components.conversations.manager = {
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Open a conversation accordingly to specified informations
 | 
						 * Add a new conversation to the list of opened conversation accordingly to specified informations
 | 
				
			||||||
	 * 
 | 
						 * 
 | 
				
			||||||
	 * @param {Object} infos Informations about the conversation to open
 | 
						 * @param {Object} infos Informations about the conversation to open
 | 
				
			||||||
	 * @info {Integer} conversationID The ID of the conversation to open
 | 
						 * @info {Integer} conversationID The ID of the conversation to open
 | 
				
			||||||
	 * @return {Boolean} True or false depending of the success of the operation
 | 
						 * @return {Boolean} True or false depending of the success of the operation
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	openConversation: function(infos){
 | 
						addConversation: function(infos){
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		//We check if a conversation ID was specified or not
 | 
							//We check if a conversation ID was specified or not
 | 
				
			||||||
		if(infos.conversationID){
 | 
							if(infos.conversationID){
 | 
				
			||||||
			ComunicWeb.debug.logMessage("Open a conversation based on its ID");
 | 
								ComunicWeb.debug.logMessage("Open a conversation based on its ID");
 | 
				
			||||||
@@ -112,18 +120,51 @@ ComunicWeb.components.conversations.manager = {
 | 
				
			|||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Open the conversation
 | 
				
			||||||
 | 
							this.openConversation(conversationID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Success
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Open a conversation 
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param {Integer} conversationID The ID of the conversation to open
 | 
				
			||||||
 | 
						 * @return {Boolean} True or false depending of the success of the operation
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						openConversation: function(conversationID){
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		//Log action
 | 
							//Log action
 | 
				
			||||||
		ComunicWeb.debug.logMessage("Opening conversation " + conversationID);
 | 
							ComunicWeb.debug.logMessage("Opening conversation " + conversationID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//Save conversation ID in session storage
 | 
							//Save conversation ID in session storage
 | 
				
			||||||
		ComunicWeb.components.conversations.cachingOpened.add(conversationID);
 | 
							ComunicWeb.components.conversations.cachingOpened.add(conversationID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//Create a conversation windows
 | 
							//Create a conversation window
 | 
				
			||||||
		ComunicWeb.components.conversations.chatWindows.create({
 | 
							var conversationWindow = ComunicWeb.components.conversations.chatWindows.create({
 | 
				
			||||||
			target: byId(this.__conversationsContenerID),
 | 
								target: byId(this.__conversationsContenerID),
 | 
				
			||||||
			conversationID: conversationID
 | 
								conversationID: conversationID
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Change conversation window name (loading state)
 | 
				
			||||||
 | 
							ComunicWeb.components.conversations.chatWindows.changeName("Loading", conversationWindow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Peform a request to informations about the conversation
 | 
				
			||||||
 | 
							ComunicWeb.components.conversations.interface.getInfosOne(conversationID, function(informations){
 | 
				
			||||||
 | 
								//In case of error
 | 
				
			||||||
 | 
								if(informations.error){
 | 
				
			||||||
 | 
									//Display error notification
 | 
				
			||||||
 | 
									ComunicWeb.common.notificationSystem.showNotification("Couldn't get informations about the conversation !", "danger");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Change the name of the conversation
 | 
				
			||||||
 | 
								ComunicWeb.components.conversations.utils.getName(informations, function(conversationName){
 | 
				
			||||||
 | 
									ComunicWeb.components.conversations.chatWindows.changeName(conversationName, conversationWindow);
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//Success
 | 
							//Success
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								assets/js/components/conversations/utils.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								assets/js/components/conversations/utils.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Conversations utilites
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ComunicWeb.components.conversations.utils = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Given conversation informations, returns its name
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param {Object} infos Conversation informations
 | 
				
			||||||
 | 
						 * @param {Function} afterName What to do once we got conversation name
 | 
				
			||||||
 | 
						 * @return {Boolean} True for a success
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						getName: function(infos, afterName){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Check if the conversation has a name or not
 | 
				
			||||||
 | 
							if(infos.name)
 | 
				
			||||||
 | 
								afterName(infos.name);
 | 
				
			||||||
 | 
							else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Get informations about the first two members
 | 
				
			||||||
 | 
								var firstMembers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Retrieve IDs
 | 
				
			||||||
 | 
								for(o in infos.members){
 | 
				
			||||||
 | 
									//Limit number to 2
 | 
				
			||||||
 | 
									if(firstMembers.length < 2){ 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//Check this is a valid entry
 | 
				
			||||||
 | 
										if(infos.members[o]){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											//Exclude current user ID
 | 
				
			||||||
 | 
											if(infos.members[o] != userID()) 
 | 
				
			||||||
 | 
												firstMembers.push(infos.members[o]);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Get users informations
 | 
				
			||||||
 | 
								ComunicWeb.user.userInfos.getNames(firstMembers, function(usersName){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//For conversations with many members (more than 3 - we musn't forget current user)
 | 
				
			||||||
 | 
									if(infos.members.length > 3)
 | 
				
			||||||
 | 
										usersName += ", ...";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//Peform next action now
 | 
				
			||||||
 | 
									afterName(usersName);
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Success
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -123,6 +123,7 @@ $config['JSfiles'] = array(
 | 
				
			|||||||
    "%PATH_ASSETS%js/components/conversations/interface.js",
 | 
					    "%PATH_ASSETS%js/components/conversations/interface.js",
 | 
				
			||||||
    "%PATH_ASSETS%js/components/conversations/service.js",
 | 
					    "%PATH_ASSETS%js/components/conversations/service.js",
 | 
				
			||||||
    "%PATH_ASSETS%js/components/conversations/cachingOpened.js",
 | 
					    "%PATH_ASSETS%js/components/conversations/cachingOpened.js",
 | 
				
			||||||
 | 
					    "%PATH_ASSETS%js/components/conversations/utils.js",
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    //User selector
 | 
					    //User selector
 | 
				
			||||||
    "%PATH_ASSETS%js/components/userSelect/userSelect.js",
 | 
					    "%PATH_ASSETS%js/components/userSelect/userSelect.js",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user