fix(chat): pull-to-refresh at top loads older history, no longer resets to bottom
Pull-down-at-top called reloadThread (reload newest 500 + scroll to bottom), so reaching the oldest message yanked the view to the newest — jarring, especially on a single page. Now the pull gesture calls loadOlder: it pages in older history keeping scroll position, or no-ops when there's nothing older. Never jumps to the bottom. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -790,7 +790,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<script src="/icons.js?v=4"></script>
|
<script src="/icons.js?v=4"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/@twemoji/api@15.1.0/dist/twemoji.min.js" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/@twemoji/api@15.1.0/dist/twemoji.min.js" crossorigin="anonymous"></script>
|
||||||
<script>window.__BUILD='2026-07-07-batch46';console.log('%cBiz Connect','color:#1F3B73;font-weight:bold','build '+window.__BUILD);
|
<script>window.__BUILD='2026-07-07-batch47';console.log('%cBiz Connect','color:#1F3B73;font-weight:bold','build '+window.__BUILD);
|
||||||
// Render modern (Twemoji) emojis in place of the OS's flat ones. No-op if the CDN didn't load
|
// Render modern (Twemoji) emojis in place of the OS's flat ones. No-op if the CDN didn't load
|
||||||
// (emojis stay as plain Unicode). (#5)
|
// (emojis stay as plain Unicode). (#5)
|
||||||
function twemojify(el){ try{ if(el && window.twemoji) window.twemoji.parse(el, { folder:'svg', ext:'.svg' }); }catch(_){} }</script>
|
function twemojify(el){ try{ if(el && window.twemoji) window.twemoji.parse(el, { folder:'svg', ext:'.svg' }); }catch(_){} }</script>
|
||||||
@@ -1825,7 +1825,7 @@ async function openConvo(kind,id){
|
|||||||
if(bub && !already && !bub.classList.contains('deleted')) bub.classList.add('show-actions');
|
if(bub && !already && !bub.classList.contains('deleted')) bub.classList.add('show-actions');
|
||||||
});
|
});
|
||||||
if(box) box.addEventListener('scroll', onMsgsScroll);
|
if(box) box.addEventListener('scroll', onMsgsScroll);
|
||||||
if(box) enablePullRefresh(box, reloadThread); // pull down at the top to refresh the conversation
|
if(box) enablePullRefresh(box, loadOlder); // pull down at the top loads OLDER history (or no-ops); never jumps to the newest/bottom
|
||||||
const jl=document.getElementById('jumpLatest'); if(jl) jl.onclick=()=>{ const b=document.getElementById('msgs'); if(b) b.scrollTop=b.scrollHeight; };
|
const jl=document.getElementById('jumpLatest'); if(jl) jl.onclick=()=>{ const b=document.getElementById('msgs'); if(b) b.scrollTop=b.scrollHeight; };
|
||||||
composeMentions=new Map(); convoMembers=[];
|
composeMentions=new Map(); convoMembers=[];
|
||||||
// Synchronous render from cache (within the click's activation → paints immediately, even
|
// Synchronous render from cache (within the click's activation → paints immediately, even
|
||||||
|
|||||||
Reference in New Issue
Block a user