import 'dart:io'; import 'package:dio/dio.dart'; import '../config/api_config.dart'; class ChatService { final Dio dio; ChatService(this.dio); /// Start chat / get ticket Future> startChat() async { final res = await dio.get('/user/chat/start'); return Map.from(res.data); } /// Get all messages Future> getMessages(int ticketId) async { final res = await dio.get('/user/chat/messages/$ticketId'); return res.data['messages']; } /// Send message (text or file) Future sendMessage( int ticketId, { String? message, String? clientId, }) async { final form = FormData(); if (message != null) form.fields.add(MapEntry('message', message)); if (clientId != null) form.fields.add(MapEntry('client_id', clientId)); await dio.post('/user/chat/send/$ticketId', data: form); } // --------------------------- // SEND FILE (image/video/pdf/excel) // --------------------------- Future> sendFile( int ticketId, File file, { required Function(double) onProgress, }) async { final formData = FormData.fromMap({ 'file': await MultipartFile.fromFile( file.path, filename: file.path.split('/').last, ), }); final res = await dio.post( "/user/chat/send/$ticketId", data: formData, options: Options( headers: {'Content-Type': 'multipart/form-data'}, ), onSendProgress: (sent, total) { if (total > 0) { onProgress(sent / total); } }, ); return Map.from(res.data['message']); } }