alpha
Login
or
Join now
alice.pds.demo.boltless.dev
/
core
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
2
Pulls
1
Pipelines
core
/
appview
/
pages
/
templates
/
timeline
1 folder
2 files
at
6c6ca65b2e841d28be771b6e3f3dfe281bb6af05
eti
appview: persist newsletter signup/dismiss per-user for cross-device hiding
5mo ago
6c6ca65b
fragments
appview: deduplicate newsletter widget, single-render timeline grid the newsletter widget was being rendered twice on the timeline (once for mobile, once for desktop) via hidden/visible wrapper divs. both copies shared the same element ids (newsletter-widget, newsletter-widget-msg), so desktop submissions swapped into the hidden mobile copy and appeared to do nothing. collapse the two layouts into one responsive grid with tailwind order/col-start utilities so the widget lives in the dom exactly once, and drop the mutationobserver wiring in favour of a small delegated click listener that also handles gfi banner widening on dismiss. consolidate the three signup form variants (banner, widget, home hero) into a single newsletterForm fragment that takes a dict(Id, Variant). each instance gets a unique response-span id (newsletter-msg-<Id>) so multiple forms can coexist on a page without id collisions. move the handler's inline html/tailwind response strings into a newsletterResponse template rendered through pages, so the response id round-trips with the form's hx-target via an hx-vals target field. drop the stray blank line in base.html. Signed-off-by: eti <eti@eti.tf>
5 months ago
home.html
appview: persist newsletter signup/dismiss per-user for cross-device hiding the newsletter widget used only localStorage to remember whether a user had signed up or dismissed it, so the cta kept reappearing whenever a user opened tangled on another device or browser. for logged-in users, store the state in a newsletter_preferences table keyed on did with an enum status ('subscribed' | 'dismissed') and the email they gave us. the home and timeline handlers read this row to decide whether to render the widget, and the server-rendered gfi banner widens when the widget is gone so the grid doesn't leave an empty column. resend stays the source of truth for the mailing list itself (sending, bounces, one-click unsubscribes) — the new table only answers the render-time question 'should this did see the widget right now?', which resend cannot cheaply answer because it's keyed on email rather than did and would add a network hop to every timeline render. anonymous visitors keep the localStorage fallback. the client-side 'already dismissed in a past session' path deliberately only calls hide() (not dismiss()) so that a stale localStorage flag can't clobber a subscribed row set from another device. Signed-off-by: eti <eti@eti.tf>
5 months ago
timeline.html
appview: persist newsletter signup/dismiss per-user for cross-device hiding the newsletter widget used only localStorage to remember whether a user had signed up or dismissed it, so the cta kept reappearing whenever a user opened tangled on another device or browser. for logged-in users, store the state in a newsletter_preferences table keyed on did with an enum status ('subscribed' | 'dismissed') and the email they gave us. the home and timeline handlers read this row to decide whether to render the widget, and the server-rendered gfi banner widens when the widget is gone so the grid doesn't leave an empty column. resend stays the source of truth for the mailing list itself (sending, bounces, one-click unsubscribes) — the new table only answers the render-time question 'should this did see the widget right now?', which resend cannot cheaply answer because it's keyed on email rather than did and would add a network hop to every timeline render. anonymous visitors keep the localStorage fallback. the client-side 'already dismissed in a past session' path deliberately only calls hide() (not dismiss()) so that a stale localStorage flag can't clobber a subscribed row set from another device. Signed-off-by: eti <eti@eti.tf>
5 months ago