% Ajoute les parents de chaque message.
% @spec mise_en_forme_conversation([integer()]) -> [{integer(), [integer()]}]
mise_en_forme_conversation(Messages) ->
- lists:foldl(
+ lists:foldr(
fun(Id, Acc) ->
case euphorik_minichat:message_by_id(Id) of
{ok, Message} ->
Curseur = qlc:cursor(q([E#minichat.id || E <- qlc:sort(table(minichat), [{order, descending}])])),
{CP, Plus} = conversation_principale(Curseur, Conversations, N, P),
qlc:delete_cursor(Curseur),
- {reverse([M || M <- CP, M > D]), Plus} % filtre en fonction de D
+ {[M || M <- CP, M > D], Plus} % filtre en fonction de D
end)),
[Conversation_principale | Conversations].
% et la liste de conversations.
% N est le nombre de messages que l'on souhaite.
% P est le numéro de la page (1, 2, 3...)
-% Renvoie {[Id], Plus}
-% @spec conversation_principale(qlc:QueryCursor(), [Conversation_detailee()], integer(), integer())
+% @spec conversation_principale(qlc:QueryCursor(), [Conversation_detailee()], integer(), integer()) -> {[Id], Plus}
conversation_principale(C, Conversations, N, P) ->
- CP = conversation_principale2(C, lists:flatten(map(fun({C2, _, X, _}) -> C2 -- X end, Conversations)), N + 1, (P - 1) * N),
+ % on prend en message de plus pour savoir s'il y en a plus que ce que l'on désire
+ CP = reverse(conversation_principale2(C, lists:flatten(map(fun({C2, _, X, _}) -> C2 -- X end, Conversations)), N + 1, (P - 1) * N)),
Plus = length(CP) =:= N + 1,
{
if Plus ->