mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-24 18:08:50 +00:00
Prepared service to refresh conversations
This commit is contained in:
parent
0b0f91275a
commit
ce4502b571
@ -75,7 +75,13 @@ ComunicWeb.components.conversations.chatWindows = {
|
||||
|
||||
|
||||
//Debug
|
||||
infosBox.boxBody.innerHTML = "<div class='direct-chat-messages'>Hello world</p>";
|
||||
//Create messages contener
|
||||
infosBox.messagesArea = createElem2({
|
||||
appendTo: infosBox.boxBody,
|
||||
type: "div",
|
||||
class: "direct-chat-messages",
|
||||
innerHTML: "<p>Loading, please wait...</p>",
|
||||
});
|
||||
|
||||
//Add button to get conversation members
|
||||
infosBox.membersButton = createElem("button");
|
||||
@ -221,6 +227,10 @@ ComunicWeb.components.conversations.chatWindows = {
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
load: function(conversationID, conversationWindow){
|
||||
|
||||
//Log action
|
||||
ComunicWeb.debug.logMessage("Loading conversation " + conversationID);
|
||||
|
||||
//Change conversation window name (loading state)
|
||||
this.changeName("Loading", conversationWindow);
|
||||
|
||||
@ -265,6 +275,9 @@ ComunicWeb.components.conversations.chatWindows = {
|
||||
//Display conversation settings pane
|
||||
ComunicWeb.components.conversations.chatWindows.showConversationSettings(conversationInfos);
|
||||
|
||||
//Register the conversation in the service
|
||||
ComunicWeb.components.conversations.service.registerConversation(conversationID);
|
||||
|
||||
//Make send a message button lives
|
||||
conversationInfos.box.sendMessageForm.formRoot.onsubmit = function(){
|
||||
|
||||
@ -299,6 +312,16 @@ ComunicWeb.components.conversations.chatWindows = {
|
||||
//Log action
|
||||
ComunicWeb.debug.logMessage("Unloading a conversation: " + conversationID);
|
||||
|
||||
//Get informations
|
||||
var conversationInfos = this.__conversationsCache["conversation-"+conversationID];
|
||||
|
||||
//Empty messages area
|
||||
emptyElem(conversationInfos.box.messagesArea);
|
||||
conversationInfos.box.messagesArea.innerHTML = "<p>Reloading, please wait...</p>";
|
||||
|
||||
//Un-register conversation
|
||||
ComunicWeb.components.conversations.service.unregisterConversation(conversationID);
|
||||
|
||||
//Remove informations if required
|
||||
if(!keepInfos){
|
||||
delete this.__conversationsCache["conversation-"+conversationID];
|
||||
|
@ -64,6 +64,9 @@ ComunicWeb.components.conversations.manager = {
|
||||
//First, add the "open a conversation" new
|
||||
this.addOpenConversationButton(conversationsContainerElem);
|
||||
|
||||
//Intializate conversation service
|
||||
ComunicWeb.components.conversations.service.init();
|
||||
|
||||
//Then, open any already active conversation
|
||||
var openedConversations = ComunicWeb.components.conversations.cachingOpened.getAll();
|
||||
|
||||
@ -73,9 +76,6 @@ ComunicWeb.components.conversations.manager = {
|
||||
ComunicWeb.components.conversations.chatWindows.openConversation(openedConversations[i]);
|
||||
}
|
||||
|
||||
//Intializate conversation service
|
||||
ComunicWeb.components.conversations.service.init();
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -9,10 +9,15 @@
|
||||
ComunicWeb.components.conversations.service = {
|
||||
|
||||
/**
|
||||
* @var {Integer} intervalID The ID of the current service interval
|
||||
* @var {Integer} __intervalID The ID of the current service interval
|
||||
*/
|
||||
__intervalID: false,
|
||||
|
||||
/**
|
||||
* @var {Object} __serviceCache The service cache
|
||||
*/
|
||||
__serviceCache: false,
|
||||
|
||||
/**
|
||||
* Initializate conversation service
|
||||
*
|
||||
@ -20,6 +25,9 @@ ComunicWeb.components.conversations.service = {
|
||||
*/
|
||||
init: function(){
|
||||
|
||||
//Make sure the cache is empty
|
||||
this.emptyCache();
|
||||
|
||||
//Check if an interval already exists or not
|
||||
if(this.__intervalID)
|
||||
clearInterval(this.__intervalID); //Remove old interval
|
||||
@ -27,7 +35,7 @@ ComunicWeb.components.conversations.service = {
|
||||
//Initializate interval
|
||||
this.__intervalID = setInterval(function(){
|
||||
ComunicWeb.components.conversations.service.call();
|
||||
}, 1500);
|
||||
}, 2000);
|
||||
ComunicWeb.common.cacheManager.registerInterval(this.__intervalID);
|
||||
|
||||
//Success
|
||||
@ -40,6 +48,111 @@ ComunicWeb.components.conversations.service = {
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
call: function(){
|
||||
console.log("Conversation service called !");
|
||||
}
|
||||
|
||||
//Check if the conversation element still exists or not
|
||||
if(!byId("conversationsElem")){
|
||||
ComunicWeb.debug.logMessage("Conversation Service : Couldn't locate conversation element, unregistering service !");
|
||||
clearInterval(this.__intervalID);
|
||||
return false;
|
||||
}
|
||||
|
||||
//Perform service task
|
||||
this.performTask();
|
||||
},
|
||||
|
||||
/**
|
||||
* Perform service task
|
||||
*
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
performTask: function(){
|
||||
console.log(this.__serviceCache);
|
||||
//Prepare API request
|
||||
var newConversations = [];
|
||||
var conversationsToRefresh = {}
|
||||
|
||||
//Process each conversation
|
||||
var i;
|
||||
for(i in this.__serviceCache){
|
||||
|
||||
//Extract conversation ID
|
||||
var processConversation = this.__serviceCache[i].conversationID;
|
||||
|
||||
//Check if it is new conversation
|
||||
if(this.__serviceCache[i].last_update === 0)
|
||||
newConversations.push(processConversation);
|
||||
|
||||
//Else perform a simple update of the conversation
|
||||
else {
|
||||
conversationsToRefresh["conversation-"+processConversation] = {
|
||||
last_update: this.__serviceCache[i].last_update,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//Perform a request on the interface
|
||||
|
||||
//Success
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Register a new conversation
|
||||
*
|
||||
* @param {Integer} conversationID The ID of the conversation to register
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
registerConversation: function(conversationID){
|
||||
|
||||
//Create conversation object
|
||||
if(!this.__serviceCache)
|
||||
this.__serviceCache = {}; //Create service cache object
|
||||
|
||||
//Register conversation
|
||||
this.__serviceCache['conversation-' + conversationID] = {
|
||||
conversationID: conversationID,
|
||||
last_update: 0,
|
||||
};
|
||||
|
||||
//Success
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Unregister a conversation
|
||||
*
|
||||
* @param {Integer} conversationID The ID of the conversation to remove
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
unregisterConversation: function(conversationID){
|
||||
|
||||
//Log action
|
||||
ComunicWeb.debug.logMessage("Unregistering conversation " + conversationID + " from service.");
|
||||
|
||||
if(this.__serviceCache){
|
||||
if(this.__serviceCache['conversation-'+conversationID]){
|
||||
delete this.__serviceCache['conversation-'+conversationID]; //Remove conversation
|
||||
}
|
||||
}
|
||||
|
||||
//Success
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Empty service cache (unregister all conversations)
|
||||
*
|
||||
* @return {Boolean} True for a success
|
||||
*/
|
||||
emptyCache: function(){
|
||||
if(this.__serviceCache){
|
||||
clearObject(this.__serviceCache);
|
||||
}
|
||||
|
||||
//Success
|
||||
return true;
|
||||
},
|
||||
}
|
||||
|
||||
//Register service cache
|
||||
ComunicWeb.common.cacheManager.registerCacheCleaner("ComunicWeb.components.conversations.service.emptyCache");
|
Loading…
Reference in New Issue
Block a user