'</head><body>' . PRE_WRAP;
# sort child messages in chronological order
- $th->order(sub { mime_sort_children(@_) });
+ $th->order(*PublicInbox::Thread::sort_ts);
# except we sort top-level messages reverse chronologically
my $state = [ time, {}, $first, 0 ];
- for (mime_sort_roots($th)) { dump_msg($_, 0, \$html, $state) }
+ for (PublicInbox::Thread::rsort_ts($th->rootset)) {
+ dump_msg($_, 0, \$html, $state)
+ }
Email::Address->purge_cache;
my $footer = nav_footer($args->{cgi}, $last, $feed_opts, $state);
my $t = eval { str2time($mime->header('Date')) };
defined($t) or $t = 0;
- $mime->header_set('X-PI-Date', $t);
+ $mime->header_set('X-PI-TS', $t);
push @$messages, $mime;
1;
}
-# children are chronological
-sub mime_sort_children {
- sort {
- $a->topmost->message->header('X-PI-Date') <=>
- $b->topmost->message->header('X-PI-Date')
- } @_;
-}
-
-# parents are reverse chronological
-sub mime_sort_roots {
- my ($th) = @_;
- sort {
- (eval { $b->message->header('X-PI-Date') } || 0) <=>
- (eval { $a->message->header('X-PI-Date') } || 0)
- } $th->rootset;
-}
-
1;
eval q(sub _container_class { 'PublicInbox::Thread::Container' });
}
+sub sort_ts {
+ sort {
+ (eval { $a->topmost->message->header('X-PI-TS') } || 0) <=>
+ (eval { $b->topmost->message->header('X-PI-TS') } || 0)
+ } @_;
+}
+
+sub rsort_ts {
+ sort {
+ (eval { $b->topmost->message->header('X-PI-TS') } || 0) <=>
+ (eval { $a->topmost->message->header('X-PI-TS') } || 0)
+ } @_;
+}
+
package PublicInbox::Thread::Container;
use strict;
use warnings;
$subj = PublicInbox::Hval->new_oneline($subj)->as_html;
my $pfx = (' ' x $level);
- my $ts = $mime->header('X-PI-Date');
+ my $ts = $mime->header('X-PI-TS');
my $fmt = '%Y-%m-%d %H:%M UTC';
$ts = POSIX::strftime($fmt, gmtime($ts));
'm' . mid_compressed(mid_clean($msgid));
}
-# children are chronological
-sub simple_sort_children {
- sort {
- (eval { $a->topmost->message->header('X-PI-TS') } || 0) <=>
- (eval { $b->topmost->message->header('X-PI-TS') } || 0)
- } @_;
-}
-
sub simple_dump {
my ($dst, $root, $node, $level) = @_;
$$dst .= ' ' x $level;
$root->header_set('X-PI-TS', '0');
my $th = PublicInbox::Thread->new($root, @msgs);
$th->thread;
- $th->order(sub { simple_sort_children(@_) });
+ $th->order(*PublicInbox::Thread::sort_ts);
$root = [ $root->header('Message-ID'),
clean_subj($root->header('Subject')) ];
simple_dump($dst, $root, $_, 0) for $th->rootset;