[object Object]

← back to Rentv 2026

fix(metros): metro deal items drill to the specific deal (/news/:id), not generic /deals

c06e94cea7a8a7a596faa2dff2737dc477984839 · 2026-07-31 17:37:33 -0700 · Steve Abrams

HARD RULE (all data points href to deeper data): each metro group's deal rows
linked to the /deals firehose instead of the individual deal. Now drills to
/news/${id} (in-app reader, no rentv.com hotlink) — same pattern as deals.html +
watchlist.html. d.id survives the metro grouping (full object pushed); all scripts
parse; drill URL resolves (e.g. /news/34238).

Files touched

Diff

commit c06e94cea7a8a7a596faa2dff2737dc477984839
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Jul 31 17:37:33 2026 -0700

    fix(metros): metro deal items drill to the specific deal (/news/:id), not generic /deals
    
    HARD RULE (all data points href to deeper data): each metro group's deal rows
    linked to the /deals firehose instead of the individual deal. Now drills to
    /news/${id} (in-app reader, no rentv.com hotlink) — same pattern as deals.html +
    watchlist.html. d.id survives the metro grouping (full object pushed); all scripts
    parse; drill URL resolves (e.g. /news/34238).
---
 public/metros.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/metros.html b/public/metros.html
index 69cd6e7d..ec418582 100644
--- a/public/metros.html
+++ b/public/metros.html
@@ -147,7 +147,7 @@ function render(){
         </div>
         <div class="r"><div class="vol">${g.vol?esc(usd(g.vol)):'—'}</div><div class="ct">${g.count} deal${g.count===1?'':'s'}</div><div class="chev">▾ deals</div></div>
       </div>
-      <div class="deals">${g.deals.map(d=>`<a class="deal" href="/deals"><div><h4>${esc(d.title)}</h4><div class="m">${[d.property_type,d.txn_type].filter(Boolean).map(esc).join(' · ')}</div></div><div class="amt">${esc(d.amount_label||(d.amount?usd(d.amount):'—'))}</div></a>`).join('')}</div>
+      <div class="deals">${g.deals.map(d=>`<a class="deal" href="${d.id?('/news/'+encodeURIComponent(d.id)):'/deals'}"><div><h4>${esc(d.title)}</h4><div class="m">${[d.property_type,d.txn_type].filter(Boolean).map(esc).join(' · ')}</div></div><div class="amt">${esc(d.amount_label||(d.amount?usd(d.amount):'—'))}</div></a>`).join('')}</div>
     </div>`).join('');
   $('metros').querySelectorAll('.mrow').forEach(r=>r.onclick=()=>r.parentElement.classList.toggle('open'));
 }

← 4e674a28 fix(watchlist): deal cards drill to the specific deal (/news  ·  back to Rentv 2026  ·  chore: lint (py with-context), refactor (Invalid-Date guard, 871a02b4 →