ADD avancement sur la possibilité de réduire une conversation (pas fini)
[euphorik.git] / modules / erl / euphorik_protocole.erl
index dac7d03..3f9d7a1 100755 (executable)
@@ -74,19 +74,27 @@ erreur_register_flood() ->
 \r
 % Un utilisateur se logge (avec un couple {login, mot de passe})\r
 login([{login, Login}, {password, Password}], IP) ->\r
-   loginUser(euphorik_bd:user_by_login_password(Login, Password), IP);\r
+   case euphorik_bd:user_by_login_password(Login, Password) of\r
+      {ok, User} ->\r
+         loginUser(User, IP);\r
+      _ -> \r
+         timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),\r
+         erreur("Couple login/pass introuvable")\r
+   end;\r
 % Un utilisateur se logge (avec un cookie)\r
 login([{cookie, Cookie}], IP) ->\r
-   loginUser(euphorik_bd:user_by_cookie(Cookie), IP).\r
+   case euphorik_bd:user_by_cookie(Cookie) of\r
+      {ok, User} ->\r
+         loginUser(User, IP);\r
+      _ ->\r
+         timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),\r
+         erreur("Authentification impossible par cookie")\r
+   end.\r
    \r
-loginUser({ok, User}, IP) ->\r
+loginUser(User, IP) ->\r
    euphorik_bd:update_ip(User#user.id, IP),\r
    euphorik_bd:update_date_derniere_connexion(User#user.id),\r
-   json_reponse_login_ok(User);\r
-loginUser(_, _) ->\r
-   % ajoute un délais d'attente\r
-   timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),\r
-   erreur("Couple login/pass introuvable").\r
+   json_reponse_login_ok(User).\r
    \r
    \r
 % Renvoie un string() représentant un cookie en base 36. Il y a 10^32 possibillités.\r
@@ -113,14 +121,22 @@ profile(
       {nick_format, Nick_format_str},\r
       {view_times, View_times},\r
       {view_tooltips, View_tooltips},\r
-      {conversations, {array, Conversations_json}}\r
+      {conversations, {array, Conversations_json}},\r
+      {ostentatious_master, Ostentatious_master}\r
    ]\r
 ) ->\r
-   % virage des messages qui n'existent pas\r
-   Conversations = lists:dropwhile(\r
-      fun(Message_id) ->\r
-         not euphorik_bd:message_existe(Message_id)\r
+   % décomposition de la strucure JSON\r
+   Conversations = lists:foldr(\r
+      fun({struc, [{root, Racine}, {minimized, Reduit}]}, A) ->\r
+         % virage des messages qui n'existent pas\r
+         Message_exite = euphorik_bd:message_existe(Racine),\r
+         if Message_exite ->\r
+               [ {Racine, Reduit} | A];\r
+            true ->\r
+               A\r
+         end\r
       end,\r
+      [],\r
       Conversations_json\r
    ),\r
    %  TODO : pas très beau, mieux vaut construire un #user\r
@@ -134,7 +150,8 @@ profile(
          list_to_atom(Nick_format_str),\r
          View_times,\r
          View_tooltips,\r
-         Conversations) of\r
+         Conversations,\r
+         list_to_atom(Ostentatious_master)) of\r
       ok ->\r
          json_reponse_ok();\r
       login_deja_pris ->\r
@@ -658,8 +675,14 @@ json_reponse_login_ok(User) ->
          {nick_format, atom_to_list(User#user.nick_format)},\r
          {view_times, User#user.view_times},\r
          {view_tooltips, User#user.view_tooltips},\r
-         {conversations, {array, User#user.conversations } },\r
-         {ek_master, User#user.ek_master}\r
+         {conversations, {array, lists:map(\r
+            fun({Racine, Reduit}) ->\r
+               {struct, [{root, Racine}, {minimized, Reduit}]}\r
+            end,\r
+            User#user.conversations\r
+         )}},\r
+         {ek_master, User#user.ek_master},\r
+         {ostentatious_master, atom_to_list(User#user.ostentatious_master)}\r
       ]\r
    }.\r
    \r
@@ -692,5 +715,6 @@ json_message(Mess, Repond_a, User) ->
          end,\r
          Repond_a\r
       )}},\r
-      {ek_master, User_mess#user.ek_master}\r
+      {ek_master, User_mess#user.ek_master},\r
+      {ostentatious_master, atom_to_list(User_mess#user.ostentatious_master)}\r
    ]}.\r