import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; import '../../models/chat_v2/conversation.dart'; import '../../models/utils/api_response.dart'; import '../../providers/chat_v2/user_conversation.dart'; const url = 'server.muaawana.com'; class UserMessagesService { ConversationModel conversationModel = ConversationModel(); String token = "InvalidToken"; int statusCode = -1; bool errorToken = false; Future getToken() async { final prefs = await SharedPreferences.getInstance(); if (prefs.getString('token') == null || prefs.getString('token') == '') { prefs.setString('token', 'InvalidToken'); } if (prefs.getString('token') != null) { token = prefs.getString('token')!; } return token.toString(); } Future> getUserMessages( {required int page, required int size, required int senderId, required int recipientId}) async { int statusCode = 1; await getToken(); if (token != "" && token != "InvalidToken") { final queryParams = {'page': page.toString(), 'size': size.toString()}; var uri = Uri.https( url, '/api/v1/message/$recipientId/$senderId', queryParams); final request = await http.get(uri, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }); statusCode = request.statusCode; if (statusCode == 200 || statusCode == 201) { final jsonData = json.decode(request.body); conversationModel = ConversationModel.fromJson(jsonData); userConversationSingleton .addMessagesToCurrentConversation(conversationModel.messages!); return APIResponse( statusCode: statusCode, errorMessage: null, data: conversationModel); } else { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", ); } } return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", ); } }