mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-25 02:18:51 +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
|
//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
|
//Add button to get conversation members
|
||||||
infosBox.membersButton = createElem("button");
|
infosBox.membersButton = createElem("button");
|
||||||
@ -221,6 +227,10 @@ ComunicWeb.components.conversations.chatWindows = {
|
|||||||
* @return {Boolean} True for a success
|
* @return {Boolean} True for a success
|
||||||
*/
|
*/
|
||||||
load: function(conversationID, conversationWindow){
|
load: function(conversationID, conversationWindow){
|
||||||
|
|
||||||
|
//Log action
|
||||||
|
ComunicWeb.debug.logMessage("Loading conversation " + conversationID);
|
||||||
|
|
||||||
//Change conversation window name (loading state)
|
//Change conversation window name (loading state)
|
||||||
this.changeName("Loading", conversationWindow);
|
this.changeName("Loading", conversationWindow);
|
||||||
|
|
||||||
@ -265,6 +275,9 @@ ComunicWeb.components.conversations.chatWindows = {
|
|||||||
//Display conversation settings pane
|
//Display conversation settings pane
|
||||||
ComunicWeb.components.conversations.chatWindows.showConversationSettings(conversationInfos);
|
ComunicWeb.components.conversations.chatWindows.showConversationSettings(conversationInfos);
|
||||||
|
|
||||||
|
//Register the conversation in the service
|
||||||
|
ComunicWeb.components.conversations.service.registerConversation(conversationID);
|
||||||
|
|
||||||
//Make send a message button lives
|
//Make send a message button lives
|
||||||
conversationInfos.box.sendMessageForm.formRoot.onsubmit = function(){
|
conversationInfos.box.sendMessageForm.formRoot.onsubmit = function(){
|
||||||
|
|
||||||
@ -299,6 +312,16 @@ ComunicWeb.components.conversations.chatWindows = {
|
|||||||
//Log action
|
//Log action
|
||||||
ComunicWeb.debug.logMessage("Unloading a conversation: " + conversationID);
|
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
|
//Remove informations if required
|
||||||
if(!keepInfos){
|
if(!keepInfos){
|
||||||
delete this.__conversationsCache["conversation-"+conversationID];
|
delete this.__conversationsCache["conversation-"+conversationID];
|
||||||
|
@ -64,6 +64,9 @@ ComunicWeb.components.conversations.manager = {
|
|||||||
//First, add the "open a conversation" new
|
//First, add the "open a conversation" new
|
||||||
this.addOpenConversationButton(conversationsContainerElem);
|
this.addOpenConversationButton(conversationsContainerElem);
|
||||||
|
|
||||||
|
//Intializate conversation service
|
||||||
|
ComunicWeb.components.conversations.service.init();
|
||||||
|
|
||||||
//Then, open any already active conversation
|
//Then, open any already active conversation
|
||||||
var openedConversations = ComunicWeb.components.conversations.cachingOpened.getAll();
|
var openedConversations = ComunicWeb.components.conversations.cachingOpened.getAll();
|
||||||
|
|
||||||
@ -73,9 +76,6 @@ ComunicWeb.components.conversations.manager = {
|
|||||||
ComunicWeb.components.conversations.chatWindows.openConversation(openedConversations[i]);
|
ComunicWeb.components.conversations.chatWindows.openConversation(openedConversations[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Intializate conversation service
|
|
||||||
ComunicWeb.components.conversations.service.init();
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,10 +9,15 @@
|
|||||||
ComunicWeb.components.conversations.service = {
|
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,
|
__intervalID: false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var {Object} __serviceCache The service cache
|
||||||
|
*/
|
||||||
|
__serviceCache: false,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializate conversation service
|
* Initializate conversation service
|
||||||
*
|
*
|
||||||
@ -20,6 +25,9 @@ ComunicWeb.components.conversations.service = {
|
|||||||
*/
|
*/
|
||||||
init: function(){
|
init: function(){
|
||||||
|
|
||||||
|
//Make sure the cache is empty
|
||||||
|
this.emptyCache();
|
||||||
|
|
||||||
//Check if an interval already exists or not
|
//Check if an interval already exists or not
|
||||||
if(this.__intervalID)
|
if(this.__intervalID)
|
||||||
clearInterval(this.__intervalID); //Remove old interval
|
clearInterval(this.__intervalID); //Remove old interval
|
||||||
@ -27,7 +35,7 @@ ComunicWeb.components.conversations.service = {
|
|||||||
//Initializate interval
|
//Initializate interval
|
||||||
this.__intervalID = setInterval(function(){
|
this.__intervalID = setInterval(function(){
|
||||||
ComunicWeb.components.conversations.service.call();
|
ComunicWeb.components.conversations.service.call();
|
||||||
}, 1500);
|
}, 2000);
|
||||||
ComunicWeb.common.cacheManager.registerInterval(this.__intervalID);
|
ComunicWeb.common.cacheManager.registerInterval(this.__intervalID);
|
||||||
|
|
||||||
//Success
|
//Success
|
||||||
@ -40,6 +48,111 @@ ComunicWeb.components.conversations.service = {
|
|||||||
* @return {Boolean} True for a success
|
* @return {Boolean} True for a success
|
||||||
*/
|
*/
|
||||||
call: function(){
|
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