import 'package:dio/dio.dart'; import 'package:ebroker/utils/logger.dart'; import 'package:flutter/material.dart'; import '../../Ui/screens/ChatNew/MessageTypes/blueprint.dart'; import '../../Ui/screens/ChatNew/MessageTypes/registerar.dart'; import '../../Ui/screens/ChatNew/model.dart'; import '../../utils/api.dart'; import '../../utils/constant.dart'; import '../../utils/hive_utils.dart'; import '../model/chat/chated_user_model.dart'; import '../model/data_output.dart'; class ChatRepostiory { BuildContext? _setContext; void setContext(BuildContext context) { _setContext = context; } Future> fetchChatList(int pageNumber) async { Map response = await Api.get( url: Api.getChatList, queryParameters: {"page": pageNumber, "per_page": Constant.loadLimit}); List modelList = (response['data'] as List).map( (e) { return ChatedUser.fromJson(e, context: _setContext); }, ).toList(); return DataOutput(total: response['total_page'] ?? 0, modelList: modelList); } Future> getMessages( {required int page, required int userId, required int propertyId}) async { Map response = await Api.get( url: Api.getMessages, queryParameters: { "user_id": userId, "property_id": propertyId, "page": page, "per_page": Constant.minChatMessages }, ); List modelList = (response['data']['data'] as List).map( (result) { //Creating model ChatMessageModel chatMessageModel = ChatMessageModel.fromJson(result); chatMessageModel.setIsSentByMe( HiveUtils.getUserId() == chatMessageModel.senderId.toString()); chatMessageModel.setIsSentNow(false); chatMessageModel.date = result['created_at']; //Creating message widget Message message = filterMessageType(chatMessageModel); message.isSentByMe = chatMessageModel.isSentByMe ?? false; message.isSentNow = chatMessageModel.isSentNow ?? false; message.message = chatMessageModel; return message; }, ).toList(); return DataOutput(total: response['total_page'] ?? 0, modelList: modelList); } Future> sendMessage( {required String senderId, required String recieverId, required String? message, required String proeprtyId, MultipartFile? audio, MultipartFile? attachment}) async { Map parameters = { "sender_id": senderId, "receiver_id": recieverId, "message": message, "property_id": proeprtyId, "file": attachment, "audio": audio }; if (attachment == null) { parameters.remove("file"); } if (audio == null) { parameters.remove("audio"); } Logger.error(parameters, name: "CHAT PARAMS"); Map map = await Api.post(url: Api.sendMessage, parameter: parameters); return map; } }