Small things in lib/widgets/repeater_admin_sheet.dart that are all one or two lines each:
- A failed Unclaim shows the generic "The server rejected the request." even when the provider handed back a specific sentence. Use
result.message ?? result.userMessage, the way Claim and Upload already do.
- A failed upload's red sentence survives "Fetch again". Clear
_uploadResult when a new fetch starts.
- A failed Unclaim wipes the "Claimed. Listed as ..." line while the button correctly stays Unclaim. Only clear
_claimResult on success.
- "All N neighbours loaded" also shows when Load more stopped for the 30 page brake or an empty page, where held is less than the repeater's total. Say "N of M loaded" in that case.
- Log in and Reset route only look at
session.busy, so they stay tappable while a claim or upload POST is in flight. A login there flips the state under the pending result. Gate them on _serverBusy too.
- The proven neighbour row on the map's detail sheet has no gap between the name and the SNR, so a long name butts against the dB value. The My Repeaters subtitle separates the prefix and the region with two spaces, which most layouts collapse; a middot reads better.
- Unresolved proven neighbours always render "(unknown)".
repeaterNameForPrefix exists and could name some of them from the local list.
Small things in
lib/widgets/repeater_admin_sheet.dartthat are all one or two lines each:result.message ?? result.userMessage, the way Claim and Upload already do._uploadResultwhen a new fetch starts._claimResulton success.session.busy, so they stay tappable while a claim or upload POST is in flight. A login there flips the state under the pending result. Gate them on_serverBusytoo.repeaterNameForPrefixexists and could name some of them from the local list.