363 Commits
Author SHA1 Message Date
Lizandro GuarnizoandClaude Sonnet 4.6 06a89df690 feat(ui): apply card design to all service list screens
ci-651288 / run (push) Has been cancelled
ci-946620 / run (push) Has been cancelled
Port the same card UI pattern from the redesigned solicitudes screen
to the 4 remaining list screens (pro/user active services + history):

- 4px colored left strip matching service status color
- Circular avatar with status-colored border + letter fallback
- Status badge with icon + colored border (replaces solid filled badges)
- Date/time row with calendar icon
- Theme-aware colors via _Th extension (respects dark/light mode)
- AppBar with brand blue (replaces default grey)
- Empty state with icon + descriptive text
- Shimmer placeholders as rounded cards (replaces ListTile shimmer)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 22:46:10 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 a65e671603 feat(ui): port web UI/UX improvements to mobile app
Port the 3 redesigned views from prosappweb to prosappco:

- Solicitudes: modern cards with 4px colored left strip, status badge with
  icon+border, avatar with status-colored ring, date/time row, empty state
- Calendario: card-wrapped TableCalendar with custom CalendarStyle (blue
  selected/ring today), day header card with date box + occupied/available
  stat pills, slot cards with colored strip and time badge instead of
  gradient circles
- Perfil profesional: gradient banner header with profession pill + camera
  overlay, section cards with icon+title, payment method chips (animated)
  instead of checkboxes, schedule rows with colored active/inactive dots,
  theme-aware colors throughout (respects dark/light mode)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 22:38:55 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 1e962af6e8 feat: redesign professional pending and denied screens
- professional_denied_screen: full UI with icon, bullet list of next steps,
  re-register button and logout option (was just a Text widget)
- professional_pending_screen: replace static GIF screen with step-by-step
  progress indicator (submitted → in review → approved), notification tip,
  logout button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 16:06:35 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 2c5b237890 feat: SMS OTP phone auth + mandatory phone verification gate
- MyUser: add isPhoneVerified field (from is_phone_verified in API)
- ApiUserRepository: signInWithPhoneNumber calls POST /auth/send-otp,
  verifyOTP calls POST /auth/phone, linkWithOTP calls POST /auth/verify-phone
  Added updateFcmToken and changePassword methods
- AuthBloc: remove Firebase PhoneVerificationService, use repository OTP flow
- app_view.dart: gate authenticated users without verified phone to
  PhoneVerifyRequiredScreen before showing HomeScreen
- welcome_screen.dart: full redesign with gradient header, logo, integrated
  OTP flow (phone → code in same screen), 60s resend timer
- PhoneVerifyRequiredScreen: new screen for users who need to verify phone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 15:53:43 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 38beca4b4f feat: implement SMS OTP auth via backend API
- signInWithPhoneNumber: calls POST /auth/send-otp, stores pending phone
- verifyOTP: calls POST /auth/phone with phone+code, saves token
- linkWithOTP: calls POST /auth/verify-phone (authenticated) with phone+code
- AuthBloc._linkWithPhoneNumber: replaced Firebase PhoneVerificationService with repository call

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 15:23:39 -05:00
Lizandro Guarnizo 7446f22e23 update 2026-06-18 21:41:35 -05:00
Lizandro Guarnizo a24bbe6fc6 update 2026-06-18 18:16:50 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 79f350e85f feat: implement FCM push notifications via firebase_messaging
- Add firebase_core + firebase_messaging to pubspec.yaml
- Initialize Firebase in main.dart before runApp
- NotificationBloc: request permission, get FCM token, register with
  backend (PATCH /users/me/fcm-token), show local notification on
  foreground messages, refresh token on rotation
- app_view.dart: call initializePushNotifications() on authenticated state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:43:41 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 5e92d2b908 fix: replace Timestamp.toDate() with DateTime.tryParse in score list screens
score.createdAt is now String (ISO 8601) not Firebase Timestamp, so .toDate()
was a compile error. Use DateTime.tryParse() with fallback to DateTime.now().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:28:07 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 90aab51a26 fix: remove Firebase repository exports from all 8 package barrel files
Deleted firebase_*_repository.dart files were still re-exported, causing
compile errors. Barrel files now only export the API implementations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:24:48 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 7fb0615169 fix: align Flutter API repositories with backend routes (Fase 3 prep)
- api_service_repository: use correct endpoints (/services/me, /services/professional,
  /professional/requests, /professional/history, /professional/calendar)
  instead of broken /services?userId= query params
- api_service_repository: fix status string↔enum, createService DTO,
  paginated {data,meta} response, stub setProfessionalScored/setUserScored,
  extract professionalId from nested professionals.user_id
- api_score_repository: fix /comments/user/:id and /comments/professional/:id
- api_professional_repository + api_user_repository: handle paginated response

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 18:29:47 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 af91e0ba04 chore: remove Firebase dependencies and legacy code (Fase 4)
- Delete all firebase_*_repository.dart files (replaced by api_* equivalents)
- Remove cloud_firestore, firebase_auth, firebase_storage, firebase_core from all package pubspecs
- Remove cloud_firestore from main pubspec.yaml
- Delete firebase_options.dart (no longer referenced)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 18:11:31 -05:00
Lizandro GuarnizoandClaude Sonnet 4.6 733384091c feat: migrate prosappco from Firebase to NestJS REST API (Fase 2)
- Replace all Firebase* repositories with Api* repositories using HTTP + SharedPreferences JWT
- Remove Firebase.initializeApp() and firebase_messaging background handler from main.dart
- Update DI (app_di.dart) to inject Api* repositories instead of Firebase* ones
- Replace all Timestamp/cloud_firestore usage with ISO 8601 String dates
- Stub PhoneVerificationService (Firebase phone OTP → backend OTP when implemented)
- Add ApiService singleton with JWT management in lib/services/
- Legacy firebase_*_repository.dart files preserved for Fase 4 cleanup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 16:53:11 -05:00
Felipe 726cf12fd2 fix: campo rate preferences 2024-12-23 09:22:32 -05:00
Felipe bcd7eaefc2 fix: sale tarfa aunque este en false 2024-12-23 09:14:45 -05:00
Felipe 721111ea31 update 2024-10-25 21:35:21 -05:00
Lizandro Guarnizo d575ca9244 upload 2024-10-14 14:16:16 -05:00
Lizandro Guarnizo 72ea541658 Create upload_keystore.jks 2024-10-14 14:10:54 -05:00
Felipe 75c5cbf537 update 2024-09-20 17:07:22 -05:00
Felipe 0496101a9d error import 2024-09-20 14:49:21 -05:00
Felipe fd07ad3015 update 2024-09-20 08:25:05 -05:00
Felipe f6f2e403d8 update lat, lng 0 y horarios 2024-08-17 11:41:25 -05:00
Felipe a7f62dec6d fix jueves error 2024-08-02 18:47:49 -05:00
Felipe 408744fcc6 update 2024-08-02 18:46:17 -05:00
Felipe e1717f1be7 si no 2024-05-29 17:30:09 -05:00
Felipe 2c705f882a update 2024-05-29 17:13:58 -05:00
Felipe 6e1409f4b8 pdf 2024-05-29 16:13:41 -05:00
lizandrogd dcd697e885 update 2024-05-28 17:19:13 -05:00
Lizandro Guarnizo ac53cc7cb5 Actualizacion de plugin, 2024-05-28 16:09:37 -05:00
Lizandro Guarnizo 8899a3b79f Update pubspec.yaml 2024-05-27 15:46:02 -05:00
Felipe a678167bc5 botones etc 2024-05-27 10:47:41 -05:00
Felipe bec1aaef21 update 2024-05-25 14:04:02 -05:00
Felipe 50f0c04f59 update servicio caducado 2024-05-25 13:49:08 -05:00
Felipe fbae057d8a timer 2024-05-25 13:35:34 -05:00
Felipe f4d3bdabe9 boton depende de hora actual 2024-05-25 13:31:44 -05:00
Felipe 0e93bc23b8 fecha en mensajes y lista profesional 2024-05-25 10:09:54 -05:00
Felipe f1b2497c92 update faltan los ifs 2024-05-24 17:53:12 -05:00
Felipe 5db51bc86a calendario profesional 2024-05-23 21:41:49 -05:00
Lizandro Guarnizo b419e24b90 labelname en android 2024-05-21 21:06:37 -05:00
Lizandro Guarnizo e27955d671 up 2024-05-21 10:26:19 -05:00
Felipe 8b34e7d12d numero de solicitudes 2024-04-25 23:52:16 -05:00
Felipe 171b3fd926 info 2024-04-25 11:47:34 -05:00
Felipe c64df99bfb notificaciones al cancelar servicio 2024-04-25 11:39:43 -05:00
Felipe e1049f7281 notificaciones al pedir servicio y al enviar mensaje de chat 2024-04-25 11:15:33 -05:00
Felipe 76be1f1f1a lading chat 2024-04-23 14:51:15 -05:00
Felipe 34135b25e1 clear before notificaciones 2024-04-20 11:39:01 -05:00
Felipe c874178019 score 2024-04-18 18:29:41 -05:00
Felipe 8084d5fc7f after 2024-04-18 15:51:23 -05:00
Felipe 631b8c5801 before events 2024-04-18 11:40:06 -05:00
Felipe 142c09d389 fix pov user y profesional 2024-04-18 10:23:43 -05:00