aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-09 00:24:25 -0700
committerAdam Soltys <[email protected]>2026-10-09 00:24:25 -0700
commitb6819d91422adc10ea71ea5174c8e3e2badd1340 (patch)
tree1667f5f3a36a2e661f9dbbc9178f716a0c234080 /src
parent02a6468807c6f4f34f56b2bafb091c1b6ff25f0e (diff)
downloadcoinosv3-b6819d91422adc10ea71ea5174c8e3e2badd1340.tar.gz
coinosv3-b6819d91422adc10ea71ea5174c8e3e2badd1340.zip
Footer: "Show your support" beside How it works opens the hat shop from any page (shown once a wallet is open, since the shop pays from it)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/app.js5
-rw-r--r--src/features/hats.js2
-rw-r--r--src/i18n.js1
3 files changed, 8 insertions, 0 deletions
diff --git a/src/app.js b/src/app.js
index 6945c10..1bb837e 100644
--- a/src/app.js
+++ b/src/app.js
@@ -381,6 +381,11 @@ function footer() {
'div',
{ style: 'margin-top:4px' },
h('button', { class: 'linklike', style: 'font-weight:400', onClick: openHowItWorks }, t('howItWorks')),
+ // the hat shop: needs a wallet to pay from, so only once one is open
+ activeAccount() && FEATURES.some((f) => f.openHatShop)
+ ? h('span', {}, h('span', { class: 'faint' }, ' ยท '),
+ h('button', { class: 'linklike', style: 'font-weight:400', onClick: () => { clearFeatureNav(); ui.screen = 'wallet'; featureHook('openHatShop'); } }, t('footerSupport')))
+ : null,
// Chrome no longer prompts to install on its own โ€” surface our own link
// once it reports the app is installable. We render from a persisted flag
// (not the live event) so the link is present on the first paint after a
diff --git a/src/features/hats.js b/src/features/hats.js
index 16849f2..a14fc2b 100644
--- a/src/features/hats.js
+++ b/src/features/hats.js
@@ -438,6 +438,8 @@ export function hatsFeature(ctx) {
node,
h('span', { class: 'ava-hat', style: posStyle(hat), html: hat.art }));
},
+ // The footer's "Show your support" link: straight into the shop.
+ openHatShop() { openShop(); try { window.scrollTo(0, 0); } catch {} return true; },
// Own-profile editor entry: the door to the shop.
hatShopEntry() {
return h('button', {
diff --git a/src/i18n.js b/src/i18n.js
index 0ec6366..e6452e1 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -658,6 +658,7 @@ const STR = {
profSaved: 'Profile published',
hats: 'Hats',
hatShopSupport: 'Support Coinos, Buy a Hat!',
+ footerSupport: 'Show your support',
hatShopTitle: 'Hat shop',
hatShopBlurb: 'Support Coinos and wear the proof on your avatar.',
hatShopOffline: 'The hat stand is unreachable right now.',