% Message est le message de type #minichat et Parents une liste d'Id.
% Plus est un bool. Si Plus vaut true alors il y a encore des messages.
% Si il n'y a pas de nouveaux message alors la fonction est bloquante et attend un nouveau message.
-% @spec conversations([{integer(), integer()}, integer(), integer(), integer()) -> [Conversation()]
+% @spec conversations([{integer(), integer()}], integer(), integer(), integer()) -> [Conversation()]
conversations(Racines, N, D, P) ->
% écoute des nouveaux messages
case subscribe(minichat, 2) of
% Ajoute les parents de chaque message.
% @spec mise_en_forme_conversation([integer()]) -> [{integer(), [integer()]}]
mise_en_forme_conversation(Messages) ->
- map(
- fun(Id) ->
- {ok, Message} = euphorik_minichat:message_by_id(Id),
- {Message, parents(Id)}
+ lists:foldl(
+ fun(Id, Acc) ->
+ case euphorik_minichat:message_by_id(Id) of
+ {ok, Message} ->
+ [{Message, parents(Id)} | Acc];
+ _ ->
+ Acc
+ end
end,
+ [],
Messages
).
-
+
% Renvoie une liste de conversations, le première élément correspond à la conversation principale.
% Les autres éléments sont des tuples {C, Cn, X}, voir conversation/4 pour plus d'infos.