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.
HMG_Patient_App_New/lib/splashPage.dart

238 lines
11 KiB
Dart

import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_callkit_incoming/entities/call_event.dart';
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart';
import 'package:get_it/get_it.dart';
import 'package:hmg_patient_app_new/presentation/lab/lab_orders_page.dart';
import 'package:hmg_patient_app_new/presentation/onboarding/onboarding_screen.dart';
import 'package:hmg_patient_app_new/presentation/onboarding/splash_animation_screen.dart';
import 'package:hmg_patient_app_new/core/api_consts.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart';
// import 'package:hmg_patient_app_new/presentation/authantication/login.dart';
import 'package:hmg_patient_app_new/presentation/home/landing_page.dart';
import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart';
import 'package:hmg_patient_app_new/presentation/tele_consultation/zoom/call_screen.dart';
import 'package:hmg_patient_app_new/services/cache_service.dart';
import 'package:hmg_patient_app_new/services/navigation_service.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/transitions/fade_page.dart';
import 'package:lottie/lottie.dart';
import 'package:provider/provider.dart';
import 'core/cache_consts.dart';
import 'core/utils/local_notifications.dart';
import 'core/utils/push_notification_handler.dart';
import 'widgets/routes/custom_page_route.dart';
class SplashPage extends StatefulWidget {
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashPage> {
late AuthenticationViewModel authVm;
Future<void> initializeStuff() async {
listenerEvent();
Timer(
Duration(milliseconds: 500),
() async {
ApiConsts.setBackendURLs();
PushNotificationHandler().init(context); // Asyncronously
},
);
await authVm.getServicePrivilege();
Timer(Duration(seconds: 2, milliseconds: 500), () async {
bool isAppOpenedFromCall = await GetIt.instance<CacheService>().getBool(key: CacheConst.isAppOpenedFromCall) ?? false;
LocalNotification.init(onNotificationClick: (payload) {});
if (isAppOpenedFromCall) {
navigateToTeleConsult();
} else {
if (await Utils.getBoolFromPrefs(CacheConst.firstLaunch)) {
// Navigator.of(context).pushReplacement(FadePage(page: SplashAnimationScreen(routeWidget: OnboardingScreen())));
Navigator.of(context).pushReplacement(FadePage(page: OnboardingScreen()));
} else {
// Navigator.of(context).pushReplacement(FadePage(page: SplashAnimationScreen(routeWidget: LandingNavigation())));
Navigator.of(context).pushReplacement(FadePage(page: LandingNavigation()));
}
}
});
var zoom = ZoomVideoSdk();
InitConfig initConfig = InitConfig(
domain: "zoom.us",
enableLog: false,
);
zoom.initSdk(initConfig);
}
navigateToTeleConsult() async {
String roomID = await Utils.getStringFromPrefs(CacheConst.zoomRoomID);
print('RoomID: $roomID');
// GetIt.instance<CacheService>().remove(key: CacheConst.isAppOpenedFromCall);
Utils.removeFromPrefs(CacheConst.isAppOpenedFromCall);
Navigator.of(GetIt.instance<NavigationService>().navigatorKey.currentContext!).pushReplacement(FadePage(page: SplashAnimationScreen(routeWidget: LandingNavigation())));
Navigator.pushReplacementNamed(
// context,
GetIt.instance<NavigationService>().navigatorKey.currentContext!,
AppRoutes.zoomCallPage,
// arguments: CallArguments(appointmentID, "111", "Patient", "40", "1", true, 1),
arguments: CallArguments(roomID, "123", "Patient", "40", "0", true, 1),
// arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)),
);
}
Future<void> listenerEvent() async {
print('Call Canceled : ------->');
try {
FlutterCallkitIncoming.onEvent.listen((event) async {
switch (event!.event) {
case Event.actionCallIncoming:
print('actionCallIncoming Event Received: ------->');
break;
case Event.actionCallStart:
print('actionCallStart Event Received: ------->');
break;
case Event.actionCallAccept:
print('actionCallAccept Event Received: ------->');
FlutterCallkitIncoming.endAllCalls();
try {
navigateToTeleConsult();
// String roomID = await Utils.getStringFromPrefs(SharedPrefsConsts.ZOOM_ROOM_ID);
// String roomPass = await Utils.getStringFromPrefs(SharedPrefsConsts.ZOOM_ROOM_PASS);
// print('RoomID: $roomID');
// print('RoomPass: $roomPass');
// Future.delayed(const Duration(milliseconds: 3000), () async {
// // try {
// // String teleConsultURL = "https://teleconsult.meena-health.com/api/videocall/doVideoCall?roomid=";
// // await Utils.getStringFromPrefs(SharedPrefsConsts.PATIENT_MRN).then((value) {
// // teleConsultURL = teleConsultURL + value;
// // print("TeleConsult URL: $teleConsultURL");
// // Uri uri = Uri.parse(teleConsultURL);
// // launchUrl(uri, mode: LaunchMode.externalApplication, webOnlyWindowName: "TeleConsult");
// // });
//
// // var cameraStatus = await Permission.camera.request();
// // var micStatus = await Permission.microphone.request();
// // var permissionStatus = await [Permission.microphone, Permission.camera, Permission.notification].request();
// // if (permissionStatus[1]?.isDenied == true) {
// // await Permission.camera.request();
// // }
// // if (permissionStatus[0]?.isDenied == true) {
// // await Permission.microphone.request();
// // }
//
// Navigator.pushNamed(
// // context,
// navigatorKey.currentContext!,
// AppRoutes.zoomCallPage,
// // arguments: CallArguments(appointmentID, "111", "Patient", "40", "1", true, 1),
// arguments: CallArguments(roomID, roomPass, "Patient", "40", "0", true, 1),
// // arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)),
// );
// // } catch (err) {
// // print(err);
// // }
// });
// String teleConsultURL = "https://teleconsult.meena-health.com/api/videocall/doVideoCall?roomid=";
// await Utils.getStringFromPrefs(SharedPrefsConsts.PATIENT_MRN).then((value) {
// teleConsultURL = teleConsultURL + value;
// print("TeleConsult URL: $teleConsultURL");
// Uri uri = Uri.parse(teleConsultURL);
// launchUrl(uri, mode: LaunchMode.inAppBrowserView, webOnlyWindowName: "Test");
// });
// navigatorKey.currentState!.pushNamed(AppRoutes.incomingCallScreenRoute);
// await Navigator.pushNamed(context, AppRoutes.incomingCallScreenRoute).then((value) {});
} catch (e) {
print("ERRORRRR!!! ${e.toString()}");
// await AppSharedPreferences().setObject('call_data', data);
// var data1 = await AppSharedPreferences().getObject('call_data');
}
break;
case Event.actionCallDecline:
print('actionCallConnected Event Received: ------->');
await FlutterCallkitIncoming.endAllCalls();
GetIt.instance<CacheService>().remove(key: CacheConst.isAppOpenedFromCall);
break;
case Event.actionCallEnded:
break;
case Event.actionCallTimeout:
break;
case Event.actionCallCallback:
break;
case Event.actionCallToggleHold:
break;
case Event.actionCallToggleMute:
break;
case Event.actionCallToggleDmtf:
break;
case Event.actionCallToggleGroup:
break;
case Event.actionCallToggleAudioSession:
break;
case Event.actionDidUpdateDevicePushTokenVoip:
break;
case Event.actionCallCustom:
break;
case Event.actionCallConnected:
print('actionCallConnected Event Received: ------->');
await FlutterCallkitIncoming.endAllCalls();
break;
}
});
} on Exception catch (e) {
print(e);
print("ERRORRRR!!! ${e.toString()}");
}
}
/// load the Privilege from service
Future loadPrivilege() async {
// ProjectViewModel projectProvider = Provider.of<ProjectViewModel>(context, listen: false);
// projectProvider.setPrivilegeModelList(privilege: _privilegeService.privilegeModelList);
// projectProvider.setVidaPlusProjectList(_privilegeService.vidaPlusProjectListModel);
// projectProvider.setHMCProjectList(_privilegeService.hMCProjectListModel);
// projectProvider.setProjectsDetailList(_privilegeService.projectDetailListModel);
// double lat = await AppSharedPreferences().getDouble(USER_LAT) ?? 0.0;
// double long = await AppSharedPreferences().getDouble(USER_LONG) ?? 0.0;
// AppSharedPreferences().clear(); // Clearing Shared Preferences On App Launch
// await AppSharedPreferences().setDouble(USER_LAT, lat);
// await AppSharedPreferences().setDouble(USER_LONG, long);
// AppSharedPreferences().setString(APP_LANGUAGE, projectProvider.isArabic ? "ar" : "en");
// var themeNotifier = Provider.of<ThemeNotifier>(context, listen: false);
// themeNotifier.setTheme(defaultTheme(fontName: projectProvider.isArabic ? 'Cairo' : 'Poppins'));
PushNotificationHandler().init(context); // Asyncronously
}
@override
void initState() {
authVm = context.read<AuthenticationViewModel>();
super.initState();
initializeStuff();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.whiteColor,
body: Lottie.asset(AppAnimations.loadingAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.fill).center);
}
}