fix: drop redundant green "Offer accepted" banner on offer page

The ACCEPTED state-notice alert floated between the offer-header
well and the offer-pay-cta well — a green stripe in the middle of
the page with nothing visually anchoring it. Worse, the message it
carried duplicated content the next block already showed:

- Buyer: the "Pay $X now" CTA right below is itself the call to
  action. "Offer accepted — pay now to complete your purchase" was
  noise on top.
- Seller: the "Awaiting payment" well right below already names the
  buyer + amount and explains the auto-email + share link.

Drop the is_accepted branch. The state badge in the offer header
still shows "Accepted" — so the state is never invisible — and the
pay / awaiting blocks carry the per-role copy.

Other state-notice alerts (DECLINED, WITHDRAWN, EXPIRED, PAID,
can_act, is_open) stay — they're useful precisely because their
states have no follow-on action block.
This commit is contained in:
russell@unturf.com 2026-05-13 16:38:53 -04:00
parent c383c41f92
commit 527298874e
No known key found for this signature in database
2 changed files with 7 additions and 5 deletions

View file

@ -44,10 +44,6 @@
<div class="alert alert-success offer-state-notice" name="alert">
<p class="alert-message">Paid &mdash; this offer is complete.</p>
</div>
{% elif is_accepted %}
<div class="alert alert-success offer-state-notice" name="alert">
<p class="alert-message">Offer accepted{% if request.user and request.user.uuid_str == buyer_id %} &mdash; pay now to complete your purchase{% elif not is_paid %} &mdash; waiting on the buyer to pay ${{ "%.2f"|format(current_amount) }}{% endif %}.</p>
</div>
{% elif can_act %}
<div class="alert alert-info offer-state-notice" name="alert">
<p class="alert-message">It's your turn &mdash; accept, counter, or decline below.</p>

View file

@ -6924,13 +6924,19 @@ class TestOfferCheckout(_AuthenticatedBase):
body = self.testapp.get(f"/o/{offer_id}", status=200).body.decode()
self.assertIn("Awaiting payment", body)
self.assertIn("offer-pay-link", body)
self.assertIn("waiting on the buyer to pay $75.00", body)
self.assertIn("Buyer must pay", body)
self.assertIn("$75.00", body)
# Auto-email language: seller is told the buyer was emailed a
# one-time link, not that they need to courier it themselves.
self.assertIn("emailed", body)
self.assertIn("one-time checkout link", body)
# Seller never sees the buyer's pay-now form (they cannot pay).
self.assertNotIn(f"/o/{offer_id}/checkout", body)
# The orphaned green "Offer accepted — waiting on the buyer"
# state-notice banner that used to float between the header and
# the awaiting-payment well is gone; the awaiting-payment well
# itself carries the message now.
self.assertNotIn("offer-state-notice", body)
def test_pending_offer_renders_respond_countdown(self):
"""A PENDING / COUNTERED offer carries a 'respond by' countdown