Commit graph

209 commits

Author SHA1 Message Date
Patrick Britton c635da552d Implement robust notification deep linking
- Create SecureChatLoaderScreen for linking to conversations by ID
- Add /secure-chat/:id route to AppRoutes
- Update NotificationService to use AppRoutes.router for all navigation
- Fix Follow and Post navigation routes in NotificationService
- Decouple notification handling from manual Navigator pushes
2026-02-04 17:42:37 -06:00
Patrick Britton 69358b016f Fix compilation errors in followers/following and privacy screens
- Fix FollowersFollowingScreen: correct imports, AppTheme references, SignedMediaImage param
- Fix profile_screen.dart: move _navigateToConnections to _ProfileScreenState, pass callback to _ProfileHeader
- Fix profile_settings_screen.dart: update property names (isPrivate, defaultVisibility)
2026-02-04 17:21:08 -06:00
Patrick Britton adeffe691e Add followers/following screen and comprehensive privacy settings
Features:
- Create FollowersFollowingScreen with tabs for followers/following lists
- Make follower/following counts tappable on profile to navigate to connections
- Create comprehensive PrivacySettingsScreen with sections for:
  - Account privacy (private account toggle)
  - Post visibility defaults
  - Interaction controls (who can message/comment)
  - Discovery settings (search visibility)
  - Circle (close friends) management placeholder
  - Data export and blocked users
- Update ProfilePrivacySettings model with additional fields
- Connect to new backend API endpoints
2026-02-04 16:46:20 -06:00
Patrick Britton 9fec6754d9 Add comprehensive social graph implementation documentation 2026-02-04 16:20:49 -06:00
Patrick Britton 61165000a9 Implement social graph, circle privacy, and data export system
Backend Infrastructure:
- Add circle_members table and is_in_circle() SQL function
- Implement GetFollowers/GetFollowing with pagination and trust scores
- Add complete circle management (add/remove/list members)
- Create comprehensive data export for GDPR compliance

API Endpoints:
- GET /users/:id/followers - List user's followers
- GET /users/:id/following - List users they follow
- POST /users/circle/:id - Add to close friends circle
- DELETE /users/circle/:id - Remove from circle
- GET /users/circle/members - List circle members
- GET /users/me/export - Export all user data as JSON

Note: Circle visibility enforcement in feed queries needs manual completion in post_repository.go GetFeed(), GetPostsByAuthor(), and GetPostByID() methods.
2026-02-04 16:19:05 -06:00
Patrick Britton e1470c8f52 Add smooth fade-in animation to signed images for premium feel 2026-02-04 13:37:53 -06:00
Patrick Britton 92d8920183 Fix 413 Request Entity Too Large and refine image display aesthetics 2026-02-04 13:32:46 -06:00
Patrick Britton 3c91dc64c9 feat(notifications): make push messages more specific and include chosen reaction emoji 2026-02-04 13:00:05 -06:00
Patrick Britton 0531e8f878 feat(notifications): improve reaction notification titles with emojis 2026-02-04 12:57:44 -06:00
Patrick Britton 23bf5a15b4 feat(notifications): add actor_handle and navigation targets for deep linking 2026-02-04 12:52:16 -06:00
Patrick Britton 80d7d92ebd fix(notifications): use background context for async notifications 2026-02-04 12:35:00 -06:00
Patrick Britton 6e1ba291c0 fix(push): use SendEachForMulticast to avoid deprecated FCM batch API 2026-02-04 12:20:25 -06:00
Patrick Britton 3f3e228e8a feat: Add comprehensive notification system including model, UI, and service integration, alongside new deployment documentation. 2026-02-04 12:17:58 -06:00
Patrick Britton 13feb70356 fix: removed deprecated fcm dependency and updated firebase sdk 2026-02-04 12:09:49 -06:00
Patrick Britton 1c654ad7b5 feat: added notifications for post reactions 2026-02-04 11:35:58 -06:00
Patrick Britton f77bd72c57 feat: Implement comprehensive reaction display widget, add numerous new screens, services, models, documentation, and configuration files. 2026-02-04 10:57:00 -06:00
Patrick Britton 72ae644758 feat: notification system refinements and api route fixes 2026-02-04 10:51:01 -06:00
Patrick Britton 002f960142 Update terminology, fix search feed, and deploy updates 2026-02-03 21:44:08 -06:00
Patrick Britton 403f522a0b fix(cors): allow X-Signature headers for valid web requests 2026-02-03 18:09:50 -06:00
Patrick Britton 98637c6d9c feat: finalize notification system (android manifest, token revocation, backend logs) 2026-02-03 17:33:45 -06:00
Patrick Britton 87523428a7 feat: add initial VS Code configurations and development environment setup for Flutter, Supabase, and Deno. 2026-02-03 17:28:52 -06:00
Patrick Britton ffdd77ce76 Security update for .gitignore: catch all common secret and certificate file extensions and remove tracked environment files 2026-02-03 17:26:47 -06:00
Patrick Britton 5f2c3a971f Ignore bloated binaries and large log files to reduce repository size 2026-02-03 17:19:15 -06:00
Patrick Britton 10ae2944d2 feat: Initialize Sojorn Flutter application with core UI, services, E2EE, backup, and build scripts for various platforms. 2026-02-03 17:13:28 -06:00
Patrick Britton 78f43494a2 Update saved posts route and handler 2026-02-03 16:52:40 -06:00
Patrick Britton a1d47f8e95 Add reaction system and security improvements 2026-02-01 16:06:12 -06:00
Patrick Britton 2cc8cfb1d0 Reactions tweaks 2026-02-01 14:25:27 -06:00
Patrick Britton a6c7834b3b Remove old ReactionStrip to avoid duplication
- Remove old ReactionStrip component from PostActions
- Remove unused top reactions calculation
- Remove ReactionStrip import
- Keep only SmartReactionButton for clean interface
- Eliminate redundant reaction display
- Simplify action row layout
2026-02-01 14:22:35 -06:00
Patrick Britton 94ffb419ae Replace appreciate button with smart reaction button
- Remove appreciate button functionality (redundant with reactions)
- Create SmartReactionButton that shows:
  - Plus icon when no reactions exist
  - Top reaction + count when reactions exist
  - User's reaction + count when user has reacted
- Update ReactionPicker to show existing reactions first with counts
- Add visual indicators for selected reactions and counts
- Maintain full reaction functionality in single button
- Improve UX by consolidating reaction interactions
2026-02-01 14:16:20 -06:00
Patrick Britton 6cb19b056d Add reaction picker for selecting emoji reactions
- Create ReactionPicker component with 24 common emoji options
- Show emoji grid in dialog with proper styling
- Update PostActions to show picker instead of default heart
- Add _showReactionPicker method with showDialog
- Update ReactionStrip onAdd callback to use picker
- Maintain full reaction functionality with user choice
- Add proper styling with borders and shadows to picker
2026-02-01 14:07:39 -06:00
Patrick Britton fb9748c795 Update reaction strip to show only top 3 reactions with full functionality
- Add logic to sort reactions by count and take top 3
- Maintain full ReactionStrip functionality (toggle, add, tooltips)
- Only limit display to top 3 most popular reactions
- Keep all reaction state management and API calls
- Preserve visual design and interactions
- Add button still available for adding new reactions
2026-02-01 14:01:54 -06:00
Patrick Britton eb3957febc Restrict clickable area to user profile section only
- Remove InkWell wrapper from entire card
- Add separate InkWell for PostHeader area only
- Add separate InkWell for PostBody and PostMedia areas
- Only user name/avatar area navigates to profile
- Post content areas navigate to post detail (onTap)
- PostMenu remains separate and unaffected
- Add AppRoutes import for profile navigation
- Maintain proper visual feedback with borderRadius
2026-02-01 14:00:54 -06:00
Patrick Britton d3b102aaf5 Make card borders lighter and add spacing between cards
- Change border color from brightNavy to navyBlue with 0.3 opacity (lighter)
- Reduce border width from 2px to 1.5px for subtler appearance
- Lighten shadow opacity from 0.18 to 0.12 for softer effect
- Reduce shadow blur from 24 to 20 and offset from 8 to 6
- Add 16px bottom margin between cards for proper spacing
- Maintain overall card design while making it more subtle
2026-02-01 13:59:22 -06:00
Patrick Britton 6741c193e1 Copy threaded conversation card design to regular post cards
- Update PostActions to include reactions with full state management
- Add reaction toggle functionality with optimistic updates
- Redesign PostActions layout to match threaded conversation:
  - Reactions section at top (full width)
  - Left-aligned action buttons (Reply, Like, Save, Share)
  - Reply button as expanded ElevatedButton
  - Icon buttons with background styling
- Update sojorn_post_card design:
  - Add card container with border and shadow
  - Remove chain context display
  - Remove reply boxes
  - Match threaded conversation visual style
- Add proper reaction state seeding and sync
- Import Google Fonts and ReactionStrip
2026-02-01 13:58:01 -06:00
Patrick Britton 2d5323a310 Remove 'Dashboard View' text and implement 3-per-row grid layout
- Remove unnecessary 'Dashboard View' badge from header
- Replace vertical list with GridView (3 columns)
- Update reply cards for compact grid layout:
  - Smaller avatars (24x24) with initials
  - More compact text sizes and spacing
  - Reduced padding and margins
  - Simplified reactions display (just count)
  - Shorter 'View' button instead of 'View Thread'
- Adjust childAspectRatio for better card proportions
- Faster staggered animations (50ms vs 100ms)
- Scale animation instead of slide for grid items
2026-02-01 13:53:58 -06:00
Patrick Britton ad11183ddc Fix timeago import error in threaded conversation screen 2026-02-01 13:44:41 -06:00
Patrick Britton c281a224d3 Redesign threaded conversation layout with dashboard-style reply chains
- Add top padding to anchor zone for better spacing
- Move reactions into stage actions to match main post width
- Left-align interaction buttons (reply, like, save)
- Create dashboard-style reply chains with:
  - Header showing reply count and 'Dashboard View' badge
  - Individual reply cards with menu buttons
  - 'View Thread' action buttons
  - Consistent width matching main post
  - Subtle shadows and borders for depth
- Add staggered animations for reply items
- Improve visual hierarchy and spacing throughout
2026-02-01 13:44:14 -06:00
Patrick Britton 904996a14e Redesign previous chain (anchor zone) in threaded conversation
- Edit correct file: threaded_conversation_screen.dart _buildAnchorZone method
- Implement rounded top corners with flat bottom
- Add gradient from darker navy top to transparent bottom
- Add prominent top border for visual separation
- Remove spacing between anchor zone and stage zone
- Add 'Previous chain' label and enhanced styling
- Update arrow icon with background container
2026-02-01 13:39:12 -06:00
Patrick Britton af0b29bff1 Enhance previous chain visibility with debug styling
- Make gradient more prominent with higher opacity values
- Add thicker top border for better visual separation
- Increase font weights and sizes for better readability
- Add temporary red background for debugging visibility
- Adjust padding and margins for better spacing
2026-02-01 13:37:52 -06:00
Patrick Britton 1cc6d22f20 Redesign previous chain box with rounded top, flat bottom, and gradient effect
- Move previous chain box to sit directly on top of current post
- Add rounded top corners with flat bottom for visual flow
- Implement gradient from darker top to lighter bottom
- Add subtle top border for better visual separation
- Update arrow icon styling with background container
- Remove spacing between previous chain and focus post
2026-02-01 13:36:02 -06:00
Patrick Britton 681b5b85f9 Add debug logging to _persistReaction to track API response data 2026-02-01 13:13:08 -06:00
Patrick Britton 558272c9a2 Fix reaction UI updates - prioritize local state over post model
Change _reactionCountsFor and _myReactionsFor to prefer local state for immediate UI updates after toggle reactions, falling back to post model data when no local state exists.
2026-02-01 13:08:08 -06:00
Patrick Britton a3c609c0cc Fix ToggleReaction error handling - use pgx.ErrNoRows instead of sql.ErrNoRows
pgx returns pgx.ErrNoRows not sql.ErrNoRows for no rows result set, causing toggle reaction to fail
2026-02-01 12:54:08 -06:00
Patrick Britton 8c3ca59872 Add debug logging to ToggleReaction to identify the error 2026-02-01 12:48:40 -06:00
Patrick Britton 400f4116eb Fix unused variable compilation error in geoip.go 2026-02-01 12:46:28 -06:00
Patrick Britton 3b91a48c06 Remove geographic blocking middleware - will implement later 2026-02-01 12:38:04 -06:00
Patrick Britton e436ab40bb Replace complex GeoIP middleware with simple IP-based blocking
- Remove dependency on external GeoIP database
- Block known problematic regions (China, Russia, India, Brazil) by IP ranges
- Block common hosting providers and datacenter IPs used by bots
- Simple, no-setup solution that works immediately
2026-02-01 12:37:39 -06:00
Patrick Britton 189fa7a56e Update GeoIP setup to create placeholder database with manual installation instructions 2026-02-01 12:36:42 -06:00
Patrick Britton b26f806002 Update GeoIP setup script to automatically download real database from GitHub mirror 2026-02-01 12:35:08 -06:00
Patrick Britton 5782563236 Add GeoIP middleware to block requests from outside North America
- Add GeoIP middleware that checks country codes
- Block all countries except US, CA, MX, and Central American countries
- Add setup script for GeoIP database
- Gracefully handle missing database (logs warning but continues)
2026-02-01 12:34:26 -06:00