poolServiceLines function

List<String> poolServiceLines(
  1. WalletLocalizations l10n,
  2. PoolServiceReport report
)

One detail line per pool _poolServiceIsDegraded counts — the pool named, then how this server failed it ("Sapling: this server refuses to serve it") — and NOTHING for a pool served normally. In the core's field order (Sapling, Orchard, Ironwood: SUBTREE_ROOT_POOLS' wire order). This is the money fact the headline cannot carry (§4m #10): WHICH pool's funds cannot be spent through this server, so "the balance is a floor" has a subject. The pool names are l10n keys of their own (proper nouns a locale may keep or transliterate), never Dart literals.

Implementation

List<String> poolServiceLines(
  WalletLocalizations l10n,
  PoolServiceReport report,
) => [
  for (final (pool, service) in [
    (l10n.walletPoolSapling, report.sapling),
    (l10n.walletPoolOrchard, report.orchard),
    (l10n.walletPoolIronwood, report.ironwood),
  ])
    if (_poolServiceIsDegraded(service)) ?_poolServiceLine(l10n, pool, service),
];