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

34 lines
1.2 KiB
Markdown

# 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.