You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.0 KiB
Dart
86 lines
3.0 KiB
Dart
import 'dart:developer';
|
|
import 'dart:io';
|
|
import 'package:http/io_client.dart';
|
|
import 'package:mc_common_app/api/api_client.dart';
|
|
import 'package:mc_common_app/classes/app_state.dart';
|
|
import 'package:mc_common_app/classes/consts.dart';
|
|
import 'package:mc_common_app/config/dependencies.dart';
|
|
import 'package:mc_common_app/main.dart';
|
|
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
|
|
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
|
|
import 'package:signalr_core/signalr_core.dart';
|
|
|
|
abstract class ChatRepo {
|
|
Future<HubConnection> getHubConnection();
|
|
|
|
Future<void> markMessageAsRead({required int messageId});
|
|
|
|
Future<List<ChatMessageModel>> getUsersChatMessages({required int providerId, required int customerId, required int requestOfferId, required int requestId, int pageIndex = 0, int pageSize = 0});
|
|
}
|
|
|
|
class ChatRepoImp implements ChatRepo {
|
|
ApiClient apiClient = injector.get<ApiClient>();
|
|
AppState appState = injector.get<AppState>();
|
|
|
|
@override
|
|
Future<HubConnection> getHubConnection() async {
|
|
final userId = AppState().getUser.data!.userInfo!.userId ?? "";
|
|
final hubUrl = "https://ms.hmg.com/McHub?userID=$userId";
|
|
logger.i("Connecting with Hub ($hubUrl)");
|
|
|
|
HubConnection hub;
|
|
hub = HubConnectionBuilder()
|
|
.withUrl(
|
|
hubUrl,
|
|
HttpConnectionOptions(
|
|
client: IOClient(HttpClient()
|
|
..badCertificateCallback = (x, y, z) => true),
|
|
logging: (level, message) {
|
|
log(message);
|
|
},
|
|
))
|
|
.build();
|
|
return hub;
|
|
}
|
|
|
|
@override
|
|
Future<void> markMessageAsRead({required int messageId}) async {
|
|
var queryParameters = {
|
|
"id": messageId.toString(),
|
|
};
|
|
await apiClient.postJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.messageIsReadUpdate,
|
|
queryParameters,
|
|
token: appState.getUser.data!.accessToken,
|
|
);
|
|
}
|
|
|
|
@override
|
|
Future<List<ChatMessageModel>> getUsersChatMessages(
|
|
{required int providerId, required int customerId, required int requestOfferId, required int requestId, int pageIndex = 0, int pageSize = 0}) async {
|
|
var queryParameters = {
|
|
"ReqOfferID": requestOfferId.toString(),
|
|
"RequestID": requestId.toString(),
|
|
"ProviderID": providerId.toString(),
|
|
"CustomerID": customerId.toString(),
|
|
"PageSize": pageSize.toString(),
|
|
"PageIndex": pageIndex.toString(),
|
|
};
|
|
GenericRespModel genericRespModel = await apiClient.getJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.getChatMessages,
|
|
queryParameters: queryParameters,
|
|
token: appState.getUser.data!.accessToken,
|
|
);
|
|
if (genericRespModel.messageStatus == 1 && genericRespModel.data != null) {
|
|
List<ChatMessageModel> chatMessages = List.generate(
|
|
genericRespModel.data.length,
|
|
(index) => ChatMessageModel.fromJson(genericRespModel.data[index]),
|
|
);
|
|
return chatMessages;
|
|
}
|
|
return [];
|
|
}
|
|
}
|