diff options
| author | Adam Soltys <[email protected]> | 2026-11-06 23:31:43 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-11-06 23:31:43 -0700 |
| commit | 259a95abdec170b7bb6def107b451dde1454293d (patch) | |
| tree | 619f340638ee1812c126513f6bf21abbbd789453 /src/app.js | |
| parent | 4c8754a843335bfa4d84a989fb92f33bc6c26367 (diff) | |
| download | coinosv3-259a95abdec170b7bb6def107b451dde1454293d.tar.gz coinosv3-259a95abdec170b7bb6def107b451dde1454293d.zip | |
Pull down to refresh works in the Android app, the Beta and an installed PWA. "Pull down to refresh isn't working for me in the apk" (Adam, 2026-11-06): measured on his Pixel, the same pull reloads a Chrome tab but not the app — Chrome turns its pull-to-refresh off whenever a page runs full screen, which the TWA (sticky-immersive since 1.14) always does, and a WebView or a standalone PWA has none at all. src/pull-refresh.js takes over where the page reports display-mode standalone or fullscreen, or runs in our WebView (window.CoinosHost), and switches the browser's off there (overscroll-behavior-y: contain) so the two never both fire; a browser tab keeps the browser's. A pull counts only at the top of the page, vertical (sideways swipes stay the tab navigation's), and not from inside something scrolled down (a chat, a picker) or over the page (dialogs, the media viewer, fields); damped like the browser's, a round arrow follows the finger and spins once the pull is far enough, and release reloads (through the network, as a refresh does). On the phone, the local build served into the app: a pull at the top reloads, one while scrolled down only scrolls, a short one does nothing
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VMan6Ts5Tktega8VbLg31q
Diffstat (limited to 'src/app.js')
| -rw-r--r-- | src/app.js | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -21,6 +21,7 @@ import { STAGING } from './build-flags.js'; import { buildFeatures, loadDeferredFeatures } from './features/index.js'; import { cacheReady, cacheStore } from './cache-store.js'; import { t, LANGS, getLang, setLang, isRTL, loadLocale } from './i18n.js'; +import { initPullRefresh } from './pull-refresh.js'; import { rateNow, rateAt, refreshRates, haveRate, getCurrency, setCurrency, currencies, fmtFiat, fmtFiatBare } from './rates.js'; import { fmtBtc, @@ -7042,6 +7043,7 @@ loadLocale(getLang()).finally(async () => { _restorePending = false; if (!opened || !activeAccount()) render(); bootPhase('ui'); + initPullRefresh(); // the app and the Beta have no browser pull-to-refresh setTimeout(bootSettled, 8000); if (WAKE_PAYLOAD != null) { // Nothing opened — a locked vault, or no wallet on this device. There is |
