sojorn/sojorn_docs/features/notifications-troubleshooting.md
Patrick Britton 38653f5854 Sojorn Backend Finalization & Cleanup - Complete Migration from Supabase
##  Phase 1: Critical Feature Completion (Beacon Voting)
- Add VouchBeacon, ReportBeacon, RemoveBeaconVote methods to PostRepository
- Implement beacon voting HTTP handlers with confidence score calculations
- Register new beacon routes: /beacons/:id/vouch, /beacons/:id/report, /beacons/:id/vouch (DELETE)
- Auto-flag beacons at 5+ reports, confidence scoring (0.5 base + 0.1 per vouch)

##  Phase 2: Feed Logic & Post Distribution Integrity
- Verify unified feed logic supports all content types (Standard, Quips, Beacons)
- Ensure proper distribution: Profile Feed + Main/Home Feed for followers
- Beacon Map integration for location-based content
- Video content filtering for Quips feed

##  Phase 3: The Notification System
- Create comprehensive NotificationService with FCM integration
- Add CreateNotification method to NotificationRepository
- Implement smart deep linking: beacon_map, quip_feed, main_feed
- Trigger notifications for beacon interactions and cross-post comments
- Push notification logic with proper content type detection

##  Phase 4: The Great Supabase Purge
- Delete function_proxy.go and remove /functions/:name route
- Remove SupabaseURL, SupabaseKey from config.go
- Remove SupabaseID field from User model
- Clean all Supabase imports and dependencies
- Sanitize codebase of legacy Supabase references

##  Phase 5: Flutter Frontend Integration
- Implement vouchBeacon(), reportBeacon(), removeBeaconVote() in ApiService
- Replace TODO delay in video_comments_sheet.dart with actual publishComment call
- Fix compilation errors (named parameters, orphaned child properties)
- Complete frontend integration with Go API endpoints

##  Additional Improvements
- Fix compilation errors in threaded_comment_widget.dart (orphaned child property)
- Update video_comments_sheet.dart to use proper named parameters
- Comprehensive error handling and validation
- Production-ready notification system with deep linking

##  Migration Status: 100% Complete
- Backend: Fully migrated from Supabase to custom Go/Gin API
- Frontend: Integrated with new Go endpoints
- Notifications: Complete FCM integration with smart routing
- Database: Clean of all Supabase dependencies
- Features: All functionality preserved and enhanced

Ready for VPS deployment and production testing!
2026-01-30 09:24:31 -06:00

1.2 KiB

Notifications Troubleshooting and Fix

Symptoms

  • Notifications screen fails to load and logs show a GET | 401 response from supabase/functions/v1/notifications.
  • Edge function logs show Unauthorized even though the client is signed in.

Root Cause

The notifications edge function relied on supabaseClient.auth.getUser() without explicitly passing the bearer token from the request. In some cases, the global headers were not applied as expected, so getUser() could not resolve the user and returned 401.

Fix

Explicitly read the Authorization header and pass the token to supabaseClient.auth.getUser(token). This ensures the function authenticates the user consistently even if the SDK does not automatically inject the header.

Code Change

File: supabase/functions/notifications/index.ts

Key update:

  • Parse Authorization header.
  • Extract bearer token.
  • Call getUser(token) instead of getUser() without arguments.

Deployment Step

Redeploy the notifications edge function so the new auth flow is used.

Verification

  • Open the notifications screen.
  • Confirm the request returns 200 and notifications render.
  • If it still fails, check edge function logs for missing or empty auth headers.