/- feed=trill-feed, sur=nostrill /+ sr=sortug, constants |% ++ latest-page |= f=feed:feed ^- fc:feed =/ nodelist (tap:orm:feed f) =/ subset (scag feed-page-size:constants nodelist) ?~ subset [f ~ ~] =/ start `id.i.subset =/ rev (flop subset) ?~ rev [f ~ ~] =/ end `id.i.rev =/ nf (gas:orm:feed *feed:feed subset) [nf start end] :: ++ latest-page-nostr |= f=nostr-feed:sur ^- nfc:sur =/ nodelist (tap:norm:sur f) =/ subset (scag feed-page-size:constants nodelist) ?~ subset [f ~ ~] =/ start `id.i.subset =/ rev (flop subset) ?~ rev [f ~ ~] =/ end `id.i.rev =/ nf (gas:norm:sur *nostr-feed:sur subset) [nf start end] :: :: NOTE START IS OLD, END IS NEW ++ subset |= [=fc:feed replies=? now=@da] ^- fc:feed ?: ?&(?=(%~ start.fc) ?=(%~ end.fc)) (latest-page feed.fc) =/ count feed-page-size:constants =/ start ?~ start.fc 0 u.start.fc =/ end ?~ end.fc now u.end.fc =/ nodelist (tap:orm:feed feed.fc) =/ threads %+ skim nodelist |= [=id:post =post:post] ^- ? ?. replies ?& ?= %~ parent.post (lte id start) (gte id end) == ?& (lte id start) (gte id end) == =/ thread-count (lent threads) =/ result=(list [id:post post:post]) ?: newest (scag count threads) (flop (scag count (flop threads))) =/ cursors=[(unit @da) (unit @da)] ?~ result [~ ~] ?~ threads [~ ~] :- ?: .=((head result) (head threads)) ~ `id:(head result) ?: .=((rear result) (rear threads)) ~ `id:(rear result) [(gas:orm:feed *feed:feed result) -.cursors +.cursors] --