Commit Graph

4 Commits

Author SHA1 Message Date
bc7bf124f5 Fix P0-P3 code review issues for clubs and challenges (FRE-4664)
P0: Fix variable shadowing in ClubService.createClub/updateClub and
    ChallengeService.createChallenge/updateChallenge — renamed local
    'var request' to 'var urlRequest' so JSONEncoder encodes the
    typed parameter, not the URLRequest.

P1: Wire CreateClubSheet and CreateChallengeSheet to parent ViewModel —
    sheets now receive viewModel and call createClub/createChallenge
    before dismissing.

P2: Extract HTTPMethod enum to shared Utils/HTTPMethod.swift (was
    defined in NotificationService). Remove dead 'body' parameter from
    buildRequest in all three services. Add error alert UI to
    ClubsView and ChallengesView.

P3: Replace forced URL unwrap with static let defaultBaseURL in all
    three services. Fix MockChallengeService.updateChallenge to track
    updateCalled instead of always throwing notFound.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 06:42:00 -04:00
ad6b4c9c1c fix: Address code review findings for NotificationsView (FRE-4737)
- P0: Add default param to protocol list(params:) for compile fix
- P1: Fix onDelete async closure, implement deletion logic
- P2: Remove redundant objectWillChange.send() (Published handles it)
- P2: Make RelativeDateTimeFormatter static singleton (per-row perf)
- P3: Replace deprecated NavigationView with NavigationStack
2026-05-10 04:38:12 -04:00
cb55ad95e2 Add notification badge count and MainTabView with notification tab FRE-4740 FRE-4739
- Add getUnreadCount() endpoint to NotificationsServiceProtocol
- Add NotificationUnreadCountResponse model
- Add badgeCount and fetchUnreadCount() to NotificationsViewModel
- Update markAsRead/markAllAsRead to decrement badge count
- Create MainTabView with Home, Challenges, Clubs, Notifications tabs
- Add unread badge on notification tab using .badge() modifier
- Support injected ViewModel in NotificationsView for shared state
- Add badge count tests to NotificationServiceTests
- Fetch unread count on app launch and tab switch

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-03 20:16:05 -04:00
Senior Engineer
57eb01f5af FRE-4738: Implement mark-as-read and mark-all-read actions
- Extract NotificationItem/NotificationType to Models/Notification.swift
- Create NotificationsServiceProtocol with testable service layer
- Implement markAsRead(id:) and markAllAsRead() with HTTP calls
- Add NotificationError enum with localized descriptions
- Update NotificationsViewModel to use protocol-based service
- Add 18 unit tests (12 ViewModel + 6 Model) with mock service
- Update README with architecture documentation
2026-05-03 12:17:15 -04:00