|
|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
import 'package:audio_waveforms/audio_waveforms.dart';
|
|
|
|
|
import 'package:easy_localization/easy_localization.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
@ -10,11 +10,9 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/main.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/chat/call.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/provider/chat_call_provider.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/ui/chat/custom_auto_direction.dart';
|
|
|
|
|
@ -23,9 +21,9 @@ import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/ui/chat/common.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/chat_app_bar_widge.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
|
|
|
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
|
|
|
|
import 'package:signalr_netcore/signalr_client.dart';
|
|
|
|
|
import 'package:swipe_to/swipe_to.dart';
|
|
|
|
|
|
|
|
|
|
class ChatDetailedScreenParams {
|
|
|
|
|
@ -98,14 +96,32 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
|
|
|
|
|
showTyping: true,
|
|
|
|
|
chatUser: params!.chatUser,
|
|
|
|
|
actions: [
|
|
|
|
|
// SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() {
|
|
|
|
|
// makeCall(callType: "AUDIO");
|
|
|
|
|
// }),
|
|
|
|
|
// 24.width,
|
|
|
|
|
// SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() {
|
|
|
|
|
// makeCall(callType: "VIDEO");
|
|
|
|
|
// }),
|
|
|
|
|
// 21.width,
|
|
|
|
|
// if (Platform.isAndroid)
|
|
|
|
|
SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() async {
|
|
|
|
|
Future<PermissionStatus> micPer = Permission.microphone.request();
|
|
|
|
|
if (await micPer.isGranted) {
|
|
|
|
|
makeCall(callType: "AUDIO");
|
|
|
|
|
} else {
|
|
|
|
|
Permission.microphone.request().isGranted.then((value) {
|
|
|
|
|
makeCall(callType: "AUDIO");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
// if (Platform.isAndroid)
|
|
|
|
|
24.width,
|
|
|
|
|
// if (Platform.isAndroid)
|
|
|
|
|
SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() async {
|
|
|
|
|
Future<PermissionStatus> camPer = Permission.camera.request();
|
|
|
|
|
if (await camPer.isGranted) {
|
|
|
|
|
makeCall(callType: "VIDEO");
|
|
|
|
|
} else {
|
|
|
|
|
Permission.camera.request().isGranted.then((value) {
|
|
|
|
|
makeCall(callType: "VIDEO");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
// if (Platform.isAndroid)
|
|
|
|
|
21.width,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
body: SafeArea(
|
|
|
|
|
@ -149,7 +165,7 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
).onPress(() async {
|
|
|
|
|
logger.w(m.userChatHistory[i].toJson());
|
|
|
|
|
// logger.w(m.userChatHistory[i].toJson());
|
|
|
|
|
if (m.userChatHistory[i].fileTypeResponse != null && m.userChatHistory[i].fileTypeId != null) {
|
|
|
|
|
if (m.userChatHistory[i].fileTypeId! == 1 ||
|
|
|
|
|
m.userChatHistory[i].fileTypeId! == 5 ||
|
|
|
|
|
@ -351,30 +367,22 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// void makeCall({required String callType}) async {
|
|
|
|
|
// callPro.initCallListeners();
|
|
|
|
|
// print("================== Make call Triggered ============================");
|
|
|
|
|
// Map<String, dynamic> json = {
|
|
|
|
|
// "callerID": AppState().chatDetails!.response!.id!.toString(),
|
|
|
|
|
// "callerDetails": AppState().chatDetails!.toJson(),
|
|
|
|
|
// "receiverID": params!.chatUser!.id.toString(),
|
|
|
|
|
// "receiverDetails": params!.chatUser!.toJson(),
|
|
|
|
|
// "title": params!.chatUser!.userName!.replaceAll(".", " "),
|
|
|
|
|
// "calltype": callType == "VIDEO" ? "Video" : "Audio",
|
|
|
|
|
// };
|
|
|
|
|
// logger.w(json);
|
|
|
|
|
// CallDataModel callData = CallDataModel.fromJson(json);
|
|
|
|
|
// await Navigator.push(
|
|
|
|
|
// context,
|
|
|
|
|
// MaterialPageRoute(
|
|
|
|
|
// builder: (BuildContext context) => OutGoingCall(
|
|
|
|
|
// isVideoCall: callType == "VIDEO" ? true : false,
|
|
|
|
|
// outGoingCallData: callData,
|
|
|
|
|
// ),
|
|
|
|
|
// ),
|
|
|
|
|
// ).then((value) {
|
|
|
|
|
// print("then");
|
|
|
|
|
// callPro.stopListeners();
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
void makeCall({required String callType}) async {
|
|
|
|
|
Map<String, dynamic> json = {
|
|
|
|
|
"callerID": AppState().chatDetails!.response!.id,
|
|
|
|
|
"callerName": AppState().chatDetails!.response!.userName,
|
|
|
|
|
"callerEmail": AppState().chatDetails!.response!.email,
|
|
|
|
|
"callerTitle": AppState().chatDetails!.response!.title,
|
|
|
|
|
"callerPhone": AppState().chatDetails!.response!.phone,
|
|
|
|
|
"receiverID": params!.chatUser!.id,
|
|
|
|
|
"receiverName": params!.chatUser!.userName,
|
|
|
|
|
"receiverEmail": params!.chatUser!.email,
|
|
|
|
|
"receiverTitle": params!.chatUser!.title,
|
|
|
|
|
"receiverPhone": params!.chatUser!.phone,
|
|
|
|
|
"title": params!.chatUser!.userName!.replaceAll(".", " "),
|
|
|
|
|
"callType": callType == "VIDEO" ? "Video" : "Audio",
|
|
|
|
|
};
|
|
|
|
|
CallDataModel callData = CallDataModel.fromJson(json);
|
|
|
|
|
await Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => OutGoingCall(isVideoCall: callType == "VIDEO" ? true : false, outGoingCallData: callData)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|