How It Works
1User taps "Reports and Suggestions" in Settings
2Dialog appears with issue type and message field
3User selects category, enters details (max 500 chars)
4Report sent to server via app_logs endpoint
Location: General Settings Tab • lib/screens/general_tab.dart • Not automated — requires manual user action.
Issue Categories
Audio Player Issue
Billing Problems
Suggestions
Course Download Problems
AI Voice Issues
Other
Data Payload
| Field | Value |
|---|---|
user_id | From user profile |
log_type | "user_reports" |
message | "{IssueType}: {UserMessage}" |
origin | "app" |
created_at | UTC timestamp |
Endpoint: POST .../functions/v1/app_logs • Authenticated with Supabase anon key
Logging Behavior
Critical log type:
user_reports bypasses the user's "Logs" setting. Reports are sent even if the user disabled logs, using the forceLog: true parameter.
Storage: Supabase app_logs table with log_type = 'user_reports'
Error Handling
| Check | Behavior |
|---|---|
| User not logged in | Report blocked — requires active session |
| No user_id in profile | Report blocked — validates user_id exists |
| Send success | Shows success snackbar to user |
| Send failure | Shows failure snackbar to user |
| Network timeout | 5-second timeout to prevent blocking UI |