- ]\r
- }; \r
- {del, Troll_id} ->\r
- {struct,\r
- [\r
- {reply, "troll_deleted"},\r
- {troll_id, Troll_id}\r
- ]\r
- }; \r
- _ ->\r
- erreur("timeout")\r
- end;\r
-wait_event(_) ->\r
- erreur("Page inconnue").\r
-\r
-\r
-wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id) ->\r
- % est-ce que le troll est à jour ?\r
- case euphorik_bd:current_troll() of\r
- Current when is_record(Current, troll), Current#troll.id =/= Troll_id ->\r
- {struct, [\r
- {reply, "new_troll"},\r
- {troll_id, Current#troll.id},\r
- {message_id, euphorik_bd:message_id_associe(Current#troll.id)},\r
- {content, Current#troll.content}\r
- ]};\r
- _ ->\r
- % est-ce qu'il y a des nouveaux messages ?\r
- case euphorik_minichat_conversation:conversations(Racines_conversations, Message_count, Last_message_id, Main_page) of\r
- vide -> \r
- wait_event_bd_page_chat(),\r
- wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id);\r
- Conversations ->\r
- % accrochez-vous ca va siouxer ;)\r
- {struct, [\r
- {reply, "new_messages"},\r
- {conversations, {array,\r
- lists:map(\r
- fun({Conv, Plus}) ->\r
- {struct, [\r
- {last_page, not Plus},\r
- {messages, {array, \r
- lists:map(\r
- fun({Mess, Repond_a}) -> \r
- Est_proprietaire = User =/= inconnu andalso User#user.id =:= Mess#minichat.auteur_id,\r
- A_repondu_a_message = User =/= inconnu andalso euphorik_bd:a_repondu_a_message(User#user.id, Mess#minichat.id),\r
- Est_une_reponse_a_user = User =/= inconnu andalso euphorik_bd:est_une_reponse_a_user(User#user.id, Mess#minichat.id),\r
- {ok, User_mess } = euphorik_bd:user_by_id(Mess#minichat.auteur_id),\r
- {struct, [\r
- {id, Mess#minichat.id},\r
- {user_id, User_mess#user.id},\r
- {date, format_date(Mess#minichat.date)},\r
- {system, Mess#minichat.auteur_id =:= 0},\r
- {owner, Est_proprietaire},\r
- {answered, A_repondu_a_message},\r
- {is_a_reply, Est_une_reponse_a_user},\r
- {nick, Mess#minichat.pseudo},\r
- {login, User_mess#user.login},\r
- {content, Mess#minichat.contenu},\r
- {root, Mess#minichat.racine_id},\r
- {answer_to, {array, lists:map(\r
- fun(Id_mess) -> \r
- {ok, M} = euphorik_bd:message_by_id(Id_mess),\r
- {ok, User_reponse} = euphorik_bd:user_by_mess(M#minichat.id),\r
- {struct, [{id, M#minichat.id}, {nick, M#minichat.pseudo}, {login, User_reponse#user.login}]}\r
- end,\r
- Repond_a\r
- )}},\r
- {ek_master, User_mess#user.ek_master}\r
- ]}\r
- end,\r
- Conv\r
- )\r
- }}\r
- ]}\r
- end,\r
- Conversations\r
- )\r
- }}\r
- ]}\r
- end\r