- собираем цепочки по Message-ID/In-Reply-To
- сообщения с одинаковым In-Reply-To сортируем по дате
- собранные и отсортированные цепочки собираем в список с порядком по дате первого сообщения цепочки
Ну в целом оно так и работает.
Не совсем :-). В режиме списка ещё да, а в режиме чтения сообщения твориться мистика:
1. в одной цепочке я видел сообщение, которое было по времени, вместо In-Reply-To. Т.е. вместо
M1->M2->M3(вот тут время отправки было раньше M2, но по In-Reply-To это был ответ на M2)
я увидел:
M1->M3->M2
2. как писал ранее, после промотки вперёд и возвращении назад получаются другие сообщение совершенно.
Что говорит о том, что используется не единый отсортированный список для списка сообщений и для режима чтения сообщений.
3. Порядок цепочек обратный, вместо прямого(хотя в списке опять же, всё нормально)
4. Номера сообщений в цепочках идут в обратную сторону
Просто Вы захотели чтобы сортировка писем была в обратном порядке (и цепочек тоже).
Я как раз хочу, что б в прямом была :-). Как страницы книги или как шкала времени.
Если вернётесь на порядок "новые сверху" (и для общего списка и для цепочек), то как раз увидите что оно всё "просто работает" без "выкрутасов".
Проблема 2 осталась. 1 сейчас не могу проверить. 3 и 4 работает.
Сложность именно в том что у Вас - особый случай.
Возможно. Но вся его особенность в том, что хочется просто полного инвертирования умолчальной сортировки.