From 3343e4fe109494b60fe436fa1135ae5bf9c5095d Mon Sep 17 00:00:00 2001 From: Sultan khan Date: Sun, 15 Mar 2026 12:46:43 +0300 Subject: [PATCH] sso and courses in app browser updated --- .../dashboard/courses_response_model.dart | 5 +- .../itg/its_add_screen_video_image.dart | 19 ++++++- lib/ui/screens/courses/courses_screen.dart | 55 ++++++++++--------- lib/widgets/sso_webview_widget.dart | 9 ++- 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/lib/models/dashboard/courses_response_model.dart b/lib/models/dashboard/courses_response_model.dart index 63a98fc..730d4a4 100644 --- a/lib/models/dashboard/courses_response_model.dart +++ b/lib/models/dashboard/courses_response_model.dart @@ -49,7 +49,7 @@ class CourseStatus { String? cStartdate; String? cEnddate; String? cUrl; - + String? token; CourseStatus({ this.cId, this.cFullname, @@ -60,6 +60,7 @@ class CourseStatus { this.cStartdate, this.cEnddate, this.cUrl, + this.token }); CourseStatus.fromJson(Map json) { @@ -72,6 +73,7 @@ class CourseStatus { cStartdate = json['c_startdate']; cEnddate = json['c_enddate']; cUrl = json['c_url']; + token =json['c_token']; } Map toJson() { @@ -85,6 +87,7 @@ class CourseStatus { data['c_startdate'] = cStartdate; data['c_enddate'] = cEnddate; data['c_url'] = cUrl; + data['c_token'] = token; return data; } } diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart index ab0d39f..23bfc66 100644 --- a/lib/ui/landing/itg/its_add_screen_video_image.dart +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -6,14 +6,19 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; 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/main.dart'; +import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/itg/advertisement.dart' as ads; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/my_video_progress_indicator.dart'; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:video_player/video_player.dart'; @@ -396,8 +401,18 @@ class _ITGAdsScreenState extends State { Navigator.pop(context); } else if (advertisementData!.actionButtonsColl![index].actionType!.toLowerCase() == 'redirect' && advertisementData!.actionButtonsColl![index].actionValue!.toLowerCase() == 'internal') { - await Navigator.pushNamed(context, advertisementData!.actionButtonsColl![index].url!); - } else { + + await Navigator.pushNamed(context, advertisementData!.actionButtonsColl![index].url!); + + } else if(advertisementData!.actionButtonsColl![index].actionType!.toLowerCase() == 'eit' && advertisementData!.actionButtonsColl![index].actionValue!.toLowerCase() == + 'internal'){ + var pro = Provider.of(context, listen: false); + List _menuList = + pro.getMenuEntriesList?.where((element) => element.parentMenuName == advertisementData!.actionButtonsColl![index].url && (element.menuEntryType == "FUNCTION" || element.menuEntryType == "MENU")).toList() ?? []; + Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(advertisementData!.advertisementTitle!, _menuList)); + + } + else{ Uri uri = Uri.parse(advertisementData!.actionButtonsColl![index].iconOrImage); // if (await canLaunchUrl(uri)) { await launchUrl(uri, mode: LaunchMode.externalApplication).catchError((err) { diff --git a/lib/ui/screens/courses/courses_screen.dart b/lib/ui/screens/courses/courses_screen.dart index 7c995a2..598b6cf 100644 --- a/lib/ui/screens/courses/courses_screen.dart +++ b/lib/ui/screens/courses/courses_screen.dart @@ -14,6 +14,7 @@ import 'package:mohem_flutter_app/models/dashboard/courses_response_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/theme/colors.dart' as theme_colors; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/sso_webview_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; @@ -148,7 +149,7 @@ class _CoursesScreenState extends State { Color statusColor = _getStatusColor(status); return InkWell( - onTap: () => _openCourse(course.cUrl ?? ''), + onTap: () => _openCourse(course.cUrl, course.token), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -291,33 +292,37 @@ class _CoursesScreenState extends State { return format.format(dateTime); } - void _openCourse(String url) { - if (url.isEmpty) { - Utils.showToast(LocaleKeys.courseUrlNotAvailable.tr()); - return; - } + void _openCourse(String? url, String? jwtToken) { - MyInAppBrowser browser = MyInAppBrowser( - onExitCallback: () {}, - onLoadStartCallback: (String url) {}, - ); - var settings = InAppBrowserClassSettings( - webViewSettings: InAppWebViewSettings( - useShouldOverrideUrlLoading: false, - transparentBackground: false, - ), - browserSettings: InAppBrowserSettings( - hideUrlBar: true, - hideTitleBar: false, - toolbarTopBackgroundColor: theme_colors.primaryColor, - ), - ); + Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => SsoLoginWebView(url: url, jwtToken: jwtToken))); + //Utils.showToast(LocaleKeys.courseUrlNotAvailable.tr()); - browser.openUrlRequest( - urlRequest: URLRequest(url: WebUri(url)), - settings: settings, - ); + + // return; + // } + // + // MyInAppBrowser browser = MyInAppBrowser( + // onExitCallback: () {}, + // onLoadStartCallback: (String url) {}, + // ); + // + // var settings = InAppBrowserClassSettings( + // webViewSettings: InAppWebViewSettings( + // useShouldOverrideUrlLoading: false, + // transparentBackground: false, + // ), + // browserSettings: InAppBrowserSettings( + // hideUrlBar: true, + // hideTitleBar: false, + // toolbarTopBackgroundColor: theme_colors.primaryColor, + // ), + // ); + // + // browser.openUrlRequest( + // urlRequest: URLRequest(url: WebUri(url)), + // settings: settings, + // ); } @override diff --git a/lib/widgets/sso_webview_widget.dart b/lib/widgets/sso_webview_widget.dart index 5877a63..ee4ed7a 100644 --- a/lib/widgets/sso_webview_widget.dart +++ b/lib/widgets/sso_webview_widget.dart @@ -15,10 +15,13 @@ class SsoLoginWebView extends StatefulWidget { class _SsoLoginWebViewState extends State { late final WebViewController _controller; - + String? url; @override void initState() { // TODO: implement initState + + url = widget.url ?? "https://Paxes-release.techmaster.in/SSO/HMG"; + super.initState(); _controller = WebViewController() @@ -46,7 +49,7 @@ class _SsoLoginWebViewState extends State { -
+

Redirecting...

@@ -56,6 +59,6 @@ class _SsoLoginWebViewState extends State { @override Widget build(BuildContext context) { - return Scaffold(appBar: AppBar(title: Text('Logging in...')), body: WebViewWidget(controller: _controller)); + return Scaffold(appBar: null, body:SafeArea(child: WebViewWidget(controller: _controller))); } }