|
|
|
@ -14,6 +14,7 @@ import 'package:flutter_callkit_incoming/entities/call_event.dart';
|
|
|
|
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
|
|
|
|
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
|
|
|
|
import 'package:flutter_ios_voip_kit/call_state_type.dart';
|
|
|
|
import 'package:flutter_ios_voip_kit/call_state_type.dart';
|
|
|
|
import 'package:flutter_ios_voip_kit/flutter_ios_voip_kit.dart';
|
|
|
|
import 'package:flutter_ios_voip_kit/flutter_ios_voip_kit.dart';
|
|
|
|
|
|
|
|
import 'package:mohem_flutter_app/api/chat/chat_api_client.dart';
|
|
|
|
|
|
|
|
|
|
|
|
// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
|
|
|
|
// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
|
|
|
|
import 'package:mohem_flutter_app/api/login_api_client.dart';
|
|
|
|
import 'package:mohem_flutter_app/api/login_api_client.dart';
|
|
|
|
@ -28,6 +29,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/string_extensions.dart';
|
|
|
|
import 'package:mohem_flutter_app/extensions/widget_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/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_user_login_token_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
|
|
|
|
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
|
|
|
|
@ -57,6 +61,7 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
|
|
|
|
MemberLoginListModel? _memberLoginList;
|
|
|
|
MemberLoginListModel? _memberLoginList;
|
|
|
|
|
|
|
|
|
|
|
|
late final FirebaseMessaging _firebaseMessaging;
|
|
|
|
late final FirebaseMessaging _firebaseMessaging;
|
|
|
|
|
|
|
|
IosCallPayload? _iosCallPayload;
|
|
|
|
|
|
|
|
|
|
|
|
bool _autoLogin = false;
|
|
|
|
bool _autoLogin = false;
|
|
|
|
|
|
|
|
|
|
|
|
@ -114,6 +119,8 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
|
|
|
|
voIPKit.onDidReceiveIncomingPush = (
|
|
|
|
voIPKit.onDidReceiveIncomingPush = (
|
|
|
|
Map<String, dynamic> payload,
|
|
|
|
Map<String, dynamic> payload,
|
|
|
|
) async {
|
|
|
|
) async {
|
|
|
|
|
|
|
|
_iosCallPayload = IosCallPayload.fromJson(payload);
|
|
|
|
|
|
|
|
logger.d(_iosCallPayload!.incomingCallerId!.split("-").last);
|
|
|
|
print('🎈 example: onDidReceiveIncomingPush $payload');
|
|
|
|
print('🎈 example: onDidReceiveIncomingPush $payload');
|
|
|
|
_timeOut();
|
|
|
|
_timeOut();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
@ -134,9 +141,14 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
|
|
|
|
var callerID = "did accept call $callerId";
|
|
|
|
var callerID = "did accept call $callerId";
|
|
|
|
|
|
|
|
|
|
|
|
debugPrint(callerID);
|
|
|
|
debugPrint(callerID);
|
|
|
|
|
|
|
|
logger.d(_iosCallPayload!.incomingCallerId!.split("-").last);
|
|
|
|
|
|
|
|
debugPrint(_iosCallPayload!.incomingCallerId);
|
|
|
|
|
|
|
|
debugPrint(_iosCallPayload!.incomingCallerName);
|
|
|
|
|
|
|
|
debugPrint(_iosCallPayload!.incomingCallType);
|
|
|
|
|
|
|
|
await connectCall();
|
|
|
|
await voIPKit.acceptIncomingCall(callerState: CallStateType.calling);
|
|
|
|
await voIPKit.acceptIncomingCall(callerState: CallStateType.calling);
|
|
|
|
await voIPKit.callConnected();
|
|
|
|
await voIPKit.callConnected();
|
|
|
|
|
|
|
|
|
|
|
|
Future.delayed(const Duration(milliseconds: 2500), () {
|
|
|
|
Future.delayed(const Duration(milliseconds: 2500), () {
|
|
|
|
voIPKit.endCall().then((value) async {});
|
|
|
|
voIPKit.endCall().then((value) async {});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -160,6 +172,17 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
|
|
|
|
// print(error);
|
|
|
|
// print(error);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
Future<void> connectCall() async {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserCallToken(userid: _iosCallPayload!.incomingCallerId!.split("-").last);
|
|
|
|
|
|
|
|
if (userLoginResponse.response != null) {
|
|
|
|
|
|
|
|
AppState().setchatUserDetails = userLoginResponse;
|
|
|
|
|
|
|
|
Utils.saveStringFromPrefs("userLoginChatDetails", jsonEncode(userLoginResponse.response));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
logger.d(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Future<void> callListeners() async {
|
|
|
|
Future<void> callListeners() async {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
@ -200,7 +223,9 @@ class _LoginScreenState extends State<LoginScreen> with WidgetsBindingObserver {
|
|
|
|
dynamic calls = await FlutterCallkitIncoming.activeCalls();
|
|
|
|
dynamic calls = await FlutterCallkitIncoming.activeCalls();
|
|
|
|
if (calls is List) {
|
|
|
|
if (calls is List) {
|
|
|
|
if (calls.isNotEmpty) {
|
|
|
|
if (calls.isNotEmpty) {
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
if (Platform.isAndroid) {
|
|
|
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
|
|
|
}
|
|
|
|
var pageRoute = MaterialPageRoute(builder: (context) => StartCallPage());
|
|
|
|
var pageRoute = MaterialPageRoute(builder: (context) => StartCallPage());
|
|
|
|
Navigator.push(context, pageRoute).whenComplete(() {
|
|
|
|
Navigator.push(context, pageRoute).whenComplete(() {
|
|
|
|
checkFirebaseToken();
|
|
|
|
checkFirebaseToken();
|
|
|
|
|