[object Object]

← back to Silkwallcoverings

hydrate saved sort before first grid load so initial /api/products request honors persisted choice

e81c98e6f7106fb5e6bfc4cbd8a5643db9bc8061 · 2026-05-25 21:33:16 -0700 · Steve Abrams

Files touched

Diff

commit e81c98e6f7106fb5e6bfc4cbd8a5643db9bc8061
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon May 25 21:33:16 2026 -0700

    hydrate saved sort before first grid load so initial /api/products request honors persisted choice
---
 public/index.html | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/public/index.html b/public/index.html
index 4141cae..69329b8 100644
--- a/public/index.html
+++ b/public/index.html
@@ -659,6 +659,21 @@ slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
 const savedDensity = parseInt(localStorage.getItem('sc_theme_density') || '6');
 if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
 
+// DW STANDARD: hydrate saved sort BEFORE first grid load so the initial
+// /api/products request honors the user's persisted choice (avoids a
+// jarring "newest" flash followed by re-sort once the wire-up below runs).
+(function(){
+  try {
+    const sortSel = document.getElementById('sortSelect');
+    if (!sortSel) return;
+    const saved = localStorage.getItem(HOSTKEY + '_sort');
+    if (saved && [...sortSel.options].some(o => o.value === saved)) {
+      sortSel.value = saved;
+      state.sort = saved;
+    }
+  } catch(e){}
+})();
+
 // ===== Grid / List view toggle =====
 const viewToggle = document.getElementById('viewToggle');
 function setView(v) {
@@ -980,14 +995,13 @@ loadGridPage();
 })();
 
 
-// DW STANDARD sort-select wire-up (added by fleet patcher)
+// DW STANDARD sort-select change handler. Initial hydration runs earlier
+// (before loadGridPage) so the first /api/products request honors the saved
+// sort. This block only wires the change-event listener.
 (function(){
   const sortSel = document.getElementById('sortSelect');
   if (!sortSel) return;
-  const KEY = location.hostname.replace(/\./g, '_') + '_sort';
-  const saved = localStorage.getItem(KEY);
-  if (saved) { try { sortSel.value = saved; } catch(e){} }
-  if (typeof state !== 'undefined') state.sort = sortSel.value;
+  const KEY = (typeof HOSTKEY === 'string' ? HOSTKEY : location.hostname.replace(/\./g, '_')) + '_sort';
   sortSel.addEventListener('change', e => {
     const v = e.target.value;
     try { localStorage.setItem(KEY, v); } catch(e){}

← 02548e7 retag aesthetic from PG: 47 rows updated  ·  back to Silkwallcoverings  ·  /api/facets total now reflects FILTERED count (honors q/aest 04ede70 →