tane/apps/app_seeds/lib/state
vjrj f17ae7751c perf(market): paginate Nostr offer discovery, infinite scroll, memory cap
Bound market memory and let large areas page instead of loading everything:
- DiscoveryQuery gains an until cursor; OfferTransport gains discoverPage()
  (one-shot, EOSE-bounded, newest-first) alongside the existing live discover()
  stream, which now accepts since so it only carries NEW offers going forward.
- NostrOfferTransport.discoverPage sorts by created_at desc and derives the
  next cursor from the oldest event seen (not the oldest type-matched one, so
  filtering never skips a page).
- OffersCubit: discover() fetches the first page + opens a since=now live sub;
  loadNextPage() pages further back; the in-memory list is capped at 400
  offers (each can carry a ~40KB inline photo thumbnail, so unbounded growth in
  a busy area was a real OOM risk).
- market_screen: infinite scroll via a scroll-position trigger + footer
  spinner, instead of a single unbounded ListView.
- Added discoverPage unit tests (commons_core) and cubit pagination tests
  (first page/cursor, accumulation, cap, cross-page dedup).
2026-07-20 22:53:48 +02:00
..
inventory_cubit.dart Merge remote-tracking branch 'origin/main' 2026-07-11 13:31:04 +02:00
messages_cubit.dart feat(chat): disallow links in messages 2026-07-11 07:14:58 +02:00
offers_cubit.dart perf(market): paginate Nostr offer discovery, infinite scroll, memory cap 2026-07-20 22:53:48 +02:00
peer_rating_cubit.dart feat(ratings): Wallapop-style ratings in chat and offer detail 2026-07-11 13:13:43 +02:00
quick_add_cubit.dart style: dart format reflow (no behavior change) 2026-07-09 22:19:43 +02:00
trust_cubit.dart refactor(trust): ego-centric trust replaces the global Duniter membership 2026-07-11 13:03:20 +02:00
variety_detail_cubit.dart feat(offers): asking price on lots, published with sale offers (schema v11) 2026-07-11 08:00:08 +02:00