mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 19:11:12 -05:00
111 lines
2.8 KiB
Markdown
111 lines
2.8 KiB
Markdown
# PHASE 10: Users & Profiles
|
|
|
|
**Status:** ⬜ Not Started
|
|
**Estimated Time:** 8-10 hours
|
|
**Priority:** HIGH
|
|
**Depends On:** Phase 1 (Foundation), Phase 2 (Authentication)
|
|
**Blocks:** Phase 12 (Pages Migration)
|
|
|
|
---
|
|
|
|
## 🎯 Goal
|
|
|
|
Migrate all user profile and user management functionality from Supabase to Django.
|
|
|
|
---
|
|
|
|
## 📋 Tasks
|
|
|
|
### Task 10.1: Users Service (3 hours)
|
|
|
|
```typescript
|
|
class UsersService extends BaseService {
|
|
// GET /users/{id}/
|
|
async getUser(userId: string): Promise<User>
|
|
|
|
// GET /users/{id}/profile/
|
|
async getUserProfile(userId: string): Promise<UserProfile>
|
|
|
|
// PATCH /users/{id}/profile/
|
|
async updateUserProfile(userId: string, data: Partial<ProfileData>): Promise<UserProfile>
|
|
|
|
// GET /users/search/?q={query}
|
|
async searchUsers(query: string): Promise<User[]>
|
|
|
|
// POST /users/{id}/block/
|
|
async blockUser(userId: string): Promise<void>
|
|
|
|
// DELETE /users/{id}/block/
|
|
async unblockUser(userId: string): Promise<void>
|
|
|
|
// GET /users/{id}/blocked/
|
|
async getBlockedUsers(userId: string): Promise<User[]>
|
|
}
|
|
```
|
|
|
|
- [ ] Create `src/services/users/usersService.ts`
|
|
- [ ] Create types and mappers
|
|
- [ ] Handle profile updates
|
|
- [ ] Handle user blocking
|
|
|
|
### Task 10.2: Update Profile Pages (3 hours)
|
|
|
|
**Files:**
|
|
- `src/pages/Profile.tsx`
|
|
- `src/components/profile/UserReviewsList.tsx`
|
|
- `src/components/profile/RideCreditsManager.tsx`
|
|
- `src/components/profile/UserBlockButton.tsx`
|
|
|
|
- [ ] Replace `supabase.from('profiles')` with `usersService`
|
|
- [ ] Replace `supabase.rpc('get_filtered_profile')`
|
|
- [ ] Update profile editing
|
|
- [ ] Test profile display
|
|
|
|
### Task 10.3: Update Settings Pages (3 hours)
|
|
|
|
**Files:**
|
|
- `src/pages/Settings.tsx`
|
|
- `src/components/settings/AccountProfileTab.tsx`
|
|
- `src/components/settings/SecurityTab.tsx`
|
|
- `src/components/settings/PrivacyTab.tsx`
|
|
- `src/components/settings/LocationTab.tsx`
|
|
- `src/components/settings/DataExportTab.tsx`
|
|
|
|
- [ ] Replace all Supabase auth/profile calls
|
|
- [ ] Update email change flow
|
|
- [ ] Update password change flow
|
|
- [ ] Update account deletion flow
|
|
- [ ] Update data export
|
|
|
|
### Task 10.4: Update User Blocking (1-2 hours)
|
|
|
|
**Files:**
|
|
- `src/components/privacy/BlockedUsers.tsx`
|
|
- `src/components/profile/UserBlockButton.tsx`
|
|
|
|
- [ ] Replace block/unblock operations
|
|
- [ ] Update blocked users list
|
|
- [ ] Test blocking functionality
|
|
|
|
---
|
|
|
|
## 🎯 Success Criteria
|
|
|
|
- [ ] User profiles display correctly
|
|
- [ ] Profile editing works
|
|
- [ ] Settings pages work
|
|
- [ ] User blocking works
|
|
- [ ] Avatar uploads work
|
|
- [ ] Email change works
|
|
- [ ] Password change works
|
|
- [ ] Data export works
|
|
- [ ] Account deletion works
|
|
- [ ] Zero `supabase.from('profiles')` calls
|
|
- [ ] Zero `supabase.auth.updateUser()` calls (except in auth service)
|
|
|
|
---
|
|
|
|
## ⏭️ Next Phase
|
|
|
|
**Phase 11:** Contact & Reports
|