Under the hood
Web setup push-offer logic consolidated into one shared eligibility check
What
The checks that decide whether to show the 'web setup push offer' prompt (whether it was dismissed forever, already shown, shown too recently, or shown too many times) used to be four separate checks. They are now combined into a single shared helper function, used both by the code that decides whether to show the offer and by another function (tun), which now also skips its 'not connected' check when the helper says the offer is eligible.
Why
This is an internal refactor that consolidates duplicated logic, making the push-offer eligibility rules consistent wherever they're checked.