- ]\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({Racine, {Conv, Plus}}) ->\r
- {struct, [\r
- {last_page, not Plus},\r
- {first, % le premier message de la conversation\r
- if Racine =:= undefined orelse Conv =:= [] ->\r
- null;\r
- true ->\r
- {Racine_id, _, _} = Racine,\r
- case euphorik_bd:message_by_id(Racine_id) of\r
- {ok, Mess} ->\r
- json_message(Mess, euphorik_bd:parents(Racine), User);\r
- _ ->\r
- null\r
- end\r
- end\r
- },\r
- {messages, {array,\r
- lists:map(\r
- fun({Mess, Repond_a}) ->\r
- json_message(Mess, Repond_a, User)\r
- end,\r
- Conv\r
- )\r
- }}\r
- ]}\r
- end,\r
- % on ajoute un 'undefined' correspondant à la premier conversation qui ne possède pas de racine\r
- % TODO : peut être à revoir car un peu lourd est compliqué\r
- aggregation_racines_conversations([undefined | Racines_conversations], Conversations)\r
- )\r
- }}\r
- ]}\r
- end\r