- Auth: phone login → POST /auth/phone (direct, no OTP); link phone → POST /auth/verify-phone; add email → POST /auth/link-email
- Services: replace query-param paths with dedicated role endpoints (/services/me, /services/professional/requests, /services/professional, etc.)
- Services: PATCH /services/:id → PATCH /services/:id/status
- Calendar: → GET /services/professional/calendar
- Professionals: /users/professionals → /professionals (handles {data:[...]} response)
- Professional info: /professional-info/:id → /professionals/:id; PATCH → /professionals/me
- Comments: /comments?... → /comments/user/:id and /comments/professional/:id
- Chat: /chats → /chat; start chat → POST /chat/start/:professionalId; poll GET /chat/:chatId/messages; send → POST /chat/:chatId/message
- Cities: /cities → GET /locations/countries (parse nested countries→regions→cities)
- Profesional.fromDocument: null-safe fields; convert schedules array→Schedules, specializations array→name/picture lists, payment_methods object/array
- Usuario.fromDocument: null-safe professional_state and id
- UsuarioProfesional.fromDocument: handle backend format (users nested, professional at top level)
- ScheduleEntity.parseTime: handle ISO8601 time strings from backend
- MessageEntity.fromDocument: accept sender_id (backend) or owner_id (legacy)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.1 KiB
Dart
35 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:prosapp_web_app/models/chat_entity.dart';
|
|
import 'package:prosapp_web_app/models/message_entity.dart';
|
|
import 'package:prosapp_web_app/repositories/firebase_chat_repository.dart';
|
|
|
|
class ChatProvider with ChangeNotifier {
|
|
final FirebaseChatRepository _firebaseChatRepository =
|
|
FirebaseChatRepository();
|
|
|
|
ChatEntity? _currentChat;
|
|
ChatEntity? get currentChat => _currentChat;
|
|
|
|
Stream<ChatEntity?> getChat(String chatId, String professionalId) {
|
|
return _firebaseChatRepository.getChatById(chatId, professionalId).map((chat) {
|
|
_currentChat = chat;
|
|
notifyListeners();
|
|
return chat;
|
|
});
|
|
}
|
|
|
|
Future<ChatEntity> createChat(
|
|
String chatId, String userId, String professionalId) async {
|
|
final chat = await _firebaseChatRepository.createNewChat(
|
|
chatId, userId, professionalId);
|
|
_currentChat = chat;
|
|
notifyListeners();
|
|
return chat;
|
|
}
|
|
|
|
Future<void> sendMessage(String chatId, MessageEntity message) async {
|
|
await _firebaseChatRepository.sendMessage(chatId, message);
|
|
notifyListeners();
|
|
}
|
|
}
|