Files
prosappweb/lib/providers/professional_provider.dart
T
Lizandro GuarnizoandClaude Sonnet 4.6 ee678b26ff fix: professional profile fetch uses /me endpoint and re-fetches after save
- Use GET /professionals/me (JWT-authenticated) instead of /professionals/{uid}
  to avoid silent failures when the user_id lookup fails
- After save, re-fetch from server so fp.profesional reflects confirmed server state
  on the next page navigation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 23:05:47 -05:00

64 lines
1.8 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:prosapp_web_app/models/location_preferences.dart';
import 'package:prosapp_web_app/models/payment_method_entity.dart';
import 'package:prosapp_web_app/models/profesional.dart';
import 'package:prosapp_web_app/models/schedules.dart';
import 'package:prosapp_web_app/services/api_service.dart';
class ProfessionalProvider extends ChangeNotifier {
Profesional? profesional;
bool _isProModeActive = false;
final _api = ApiService.instance;
bool get isProModeActive => _isProModeActive;
Future<Profesional> getProfessional(String uid) async {
try {
final data = await _api.get('/professionals/me');
profesional = Profesional.fromDocument(data as Map<String, dynamic>);
} catch (_) {
// Professional profile doesn't exist yet — return empty so the form shows blank
profesional = Profesional(
id: uid,
identification: '',
rethusCode: '',
rethusValidated: false,
address: '',
aditionalAddress: '',
profession: '',
ratePreferences: false,
rate: '',
locationPreferences: LocationPreferences.office,
bannerPicture: '',
identificationPicture: '',
certificatePicture: '',
latitude: 0,
longitude: 0,
specializations: [],
specializationsPictures: [],
schedules: Schedules.empty,
paymentMethods: PaymentMethodEntity.empty,
);
}
notifyListeners();
return profesional!;
}
void logout() {
_isProModeActive = false;
notifyListeners();
}
void toggleProMode() {
_isProModeActive = !_isProModeActive;
notifyListeners();
}
void setIsProModeActive(bool value) {
_isProModeActive = value;
notifyListeners();
}
sendProfessionalToReview() {}
}