import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:muaawana/models/chat_v2/all_conversations.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../models/utils/api_response.dart'; import '../../providers/chat_v2/user_conversation.dart'; import '../../utils/utils_singleton.dart'; const url = 'server.muaawana.com'; class AllConversationsService { 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(); } AllConversationsModel? allConversationsModel; Future getAllConversations( {required int page, required int size}) 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/getallmychatroom/${util.user!.id!}', 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); allConversationsModel = AllConversationsModel.fromJson(jsonData); userConversationSingleton .getAllConversations(allConversationsModel!.messagelist!); return APIResponse( statusCode: statusCode, errorMessage: null, data: allConversationsModel); } else { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: []); } } return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: []); } Future getMessagesCount( {required int senderId, required int recipientId}) async { int statusCode = -1; await getToken(); if (token != "" && token != "InvalidToken") { final request = await http.get( Uri.parse('https://$url/api/v1/message/$senderId/$recipientId/count'), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }); statusCode = request.statusCode; if (statusCode == 200 || statusCode == 201) { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: request.body); } else { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: 0); } } return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: 0); } Future markConversationAsSeen( {required int senderId, required int recipientId}) async { int statusCode = -1; await getToken(); if (token != "" && token != "InvalidToken") { final request = await http.patch( Uri.parse( 'https://$url/api/v1/message/seenallmessage/$senderId/$recipientId'), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }); statusCode = request.statusCode; if (statusCode == 200 || statusCode == 201) { return APIResponse( statusCode: statusCode, errorMessage: null, data: "done"); } else { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: null); } } return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: null); } Future getUnreadMessagesCount( {required int recipientId}) async { int statusCode = -1; await getToken(); if (token != "" && token != "InvalidToken") { final request = await http.get( Uri.parse('https://$url/api/v1/message/$recipientId/count'), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }); statusCode = request.statusCode; if (statusCode == 200 || statusCode == 201) { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: request.body); } else { return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: 0); } } return APIResponse( statusCode: statusCode, errorMessage: "Please try again later", data: 0); } }