feat: likes on brews and other record types (#5)
* feat: like records -- added ability to "like" feed items
* fix: sum water from pours when not set explicitly
When viewing a brew, if the water amount field is 0 (not set explicitly),
the display now calculates the total by summing water amounts from all pours.
This provides a more accurate display when users log individual pours but
don't set a total water amount.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
feat: add like button to brew view page
Added a like button on the brew view page, positioned in the same row
as the back button but on the right side. The button:
- Shows the current like count
- Allows authenticated users to toggle likes via HTMX
- Uses the existing LikeButton component
Added GetBrewRecordByRKey method to AtprotoStore to fetch brew records
with their AT Protocol metadata (URI and CID) needed for the like button.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: move like and share buttons
* refactor: move RecordType to lexicons package
- Create new internal/lexicons package for AT Protocol lexicon types
- Add RecordType type with constants for bean, brew, brewer, grinder, like, roaster
- Add String() and DisplayName() helper methods
- Update feed/service.go, firehose/index.go, and feed.templ to use lexicons.RecordType
- Remove magic strings throughout the codebase for type safety
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: prevent like button requests when unauthenticated
- Modified LikeButton to conditionally add HTMX attributes based on IsAuthenticated
- Added IsAuthenticated prop to LikeButtonProps and SocialButtonsProps
- Updated FeedCard and FeedPartial to pass authentication state through component hierarchy
- Added TODO comment to implement login prompt instead of doing nothing when unauthenticated users click like
- Edit buttons already check isOwnProfile, so they only appear for authenticated owners
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
authored by