ADD un objet permettant l'attente des événements. Utilisé pour la page 'chat' et...
[euphorik.git] / js / pageMinichat.js
index 80cd013..ed0321c 100755 (executable)
@@ -150,8 +150,7 @@ PageMinichat.prototype.charger = function()
 
 PageMinichat.prototype.decharger = function()
 {
-   //alert(this.attenteCourante)
-   this.messages.stopAttenteCourante()
+   this.messages.pageEvent.stopAttenteCourante()
    
    $("body #smiles").remove()
    $("body #outilsBan").remove()
@@ -672,8 +671,7 @@ function Messages(client, formateur, util)
    this.conversations = new Array() // les conversations, la première représente la conversation principale
    this.nouvelleConversation(0)
    
-   // l'objet JSONHttpRequest représentant la connexion d'attente
-   this.attenteCourante = null
+   this.pageEvent = new PageEvent("chat", this.util)
 }
 
 /**
@@ -682,8 +680,6 @@ function Messages(client, formateur, util)
 Messages.prototype.getJSONrafraichirMessages = function()
 {
    var mess =  {
-      "action" : "wait_event",
-      "page" : "chat",
       "message_count" : conf.nbMessageAffiche,
       "main_page" : this.client.pagePrincipale,
       "conversations" : this.getJSONConversations()
@@ -692,9 +688,6 @@ Messages.prototype.getJSONrafraichirMessages = function()
    if (this.client.cookie != null) mess["cookie"] = this.client.cookie;
    mess["last_message_id"] = this.conversations[0].idDernierMessageAffiche
    
-   // obsolète
-   //if (this.idDernierMessage != null) mess["last_message_id"] = this.idDernierMessage
-   
    return mess
 }
 
@@ -877,22 +870,10 @@ Messages.prototype.ouvrirConversation = function(racine)
 
 Messages.prototype.viderMessages = function()
 {
-   // Obsolète
-   //this.idDernierMessage = null
-   
    for (var i = 0; i < this.conversations.length; i++)
       this.conversations[i].viderMessages()
 }
 
-/**
-  * Arrete l'attente courante s'il y en a une.
-  */
-Messages.prototype.stopAttenteCourante = function()
-{
-   if (this.attenteCourante != null)
-      this.attenteCourante.abort()   
-}
-
 /**
   * Met à jour les messages de manière continue.
   * (AJAX-Comet-style proof)
@@ -900,30 +881,24 @@ Messages.prototype.stopAttenteCourante = function()
   */
 Messages.prototype.rafraichirMessages = function(vider)
 {
-   var thisMessages = this // caisupair javacrypte
+   var thisMessages = this
    
    if (vider == undefined)
       vider = false
-      
-   this.stopAttenteCourante()
    
    if (vider)
       for (var i = 0; i < this.conversations.length; i++)
-         this.conversations[i].idDernierMessageAffiche = 0\r
-      
-   ;;; dumpObj(this.getJSONrafraichirMessages())
-   this.attenteCourante = jQuery.ajax({
-      type: "POST",
-      url: "request",
-      dataType: "json",
-      data: this.util.jsonVersAction(this.getJSONrafraichirMessages()),
-      success:
-         function(data)
-         {            \r
-            ;;; dumpObj(data)\r
+         this.conversations[i].idDernierMessageAffiche = 0
          
+   this.pageEvent.waitEvent(
+      function() { return thisMessages.getJSONrafraichirMessages() },
+      function(data)
+      {
             if (vider)
+            {
                thisMessages.viderMessages()
+               vider = false
+            }
             
             // ajoute les messages reçus à leur conversation respective
             for (var numConv = 0; numConv < data["conversations"].length; numConv++)
@@ -934,14 +909,6 @@ Messages.prototype.rafraichirMessages = function(vider)
                   thisMessages.client.supprimerConversation(numConv - 1) 
                }
             }
-            
-            // rappel de la fonction dans 100 ms
-            setTimeout(function(){ thisMessages.rafraichirMessages() }, 100);
-         },
-      error:
-         function(XMLHttpRequest, textStatus, errorThrown)
-         {
-            setTimeout(function(){ thisMessages.rafraichirMessages() }, 1000);
-         }
-   })
+      }
+   )
 }