sso and courses in app browser updated

pull/19/head
Sultan khan 14 hours ago
parent 19ccee6a20
commit 3343e4fe10

@ -49,7 +49,7 @@ class CourseStatus {
String? cStartdate; String? cStartdate;
String? cEnddate; String? cEnddate;
String? cUrl; String? cUrl;
String? token;
CourseStatus({ CourseStatus({
this.cId, this.cId,
this.cFullname, this.cFullname,
@ -60,6 +60,7 @@ class CourseStatus {
this.cStartdate, this.cStartdate,
this.cEnddate, this.cEnddate,
this.cUrl, this.cUrl,
this.token
}); });
CourseStatus.fromJson(Map<String, dynamic> json) { CourseStatus.fromJson(Map<String, dynamic> json) {
@ -72,6 +73,7 @@ class CourseStatus {
cStartdate = json['c_startdate']; cStartdate = json['c_startdate'];
cEnddate = json['c_enddate']; cEnddate = json['c_enddate'];
cUrl = json['c_url']; cUrl = json['c_url'];
token =json['c_token'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -85,6 +87,7 @@ class CourseStatus {
data['c_startdate'] = cStartdate; data['c_startdate'] = cStartdate;
data['c_enddate'] = cEnddate; data['c_enddate'] = cEnddate;
data['c_url'] = cUrl; data['c_url'] = cUrl;
data['c_token'] = token;
return data; return data;
} }
} }

@ -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/colors.dart';
import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart';
import 'package:mohem_flutter_app/classes/utils.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/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/main.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/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/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/my_video_progress_indicator.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:url_launcher/url_launcher.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
@ -396,8 +401,18 @@ class _ITGAdsScreenState extends State<ITGAdsScreen> {
Navigator.pop(context); Navigator.pop(context);
} else if (advertisementData!.actionButtonsColl![index].actionType!.toLowerCase() == 'redirect' && advertisementData!.actionButtonsColl![index].actionValue!.toLowerCase() == } else if (advertisementData!.actionButtonsColl![index].actionType!.toLowerCase() == 'redirect' && advertisementData!.actionButtonsColl![index].actionValue!.toLowerCase() ==
'internal') { '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<DashboardProviderModel>(context, listen: false);
List<GetMenuEntriesList> _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); Uri uri = Uri.parse(advertisementData!.actionButtonsColl![index].iconOrImage);
// if (await canLaunchUrl(uri)) { // if (await canLaunchUrl(uri)) {
await launchUrl(uri, mode: LaunchMode.externalApplication).catchError((err) { await launchUrl(uri, mode: LaunchMode.externalApplication).catchError((err) {

@ -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/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/theme/colors.dart' as theme_colors; 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/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/sso_webview_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
@ -148,7 +149,7 @@ class _CoursesScreenState extends State<CoursesScreen> {
Color statusColor = _getStatusColor(status); Color statusColor = _getStatusColor(status);
return InkWell( return InkWell(
onTap: () => _openCourse(course.cUrl ?? ''), onTap: () => _openCourse(course.cUrl, course.token),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -291,33 +292,37 @@ class _CoursesScreenState extends State<CoursesScreen> {
return format.format(dateTime); return format.format(dateTime);
} }
void _openCourse(String url) { void _openCourse(String? url, String? jwtToken) {
if (url.isEmpty) {
Utils.showToast(LocaleKeys.courseUrlNotAvailable.tr());
return;
}
MyInAppBrowser browser = MyInAppBrowser(
onExitCallback: () {},
onLoadStartCallback: (String url) {},
);
var settings = InAppBrowserClassSettings( Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => SsoLoginWebView(url: url, jwtToken: jwtToken)));
webViewSettings: InAppWebViewSettings( //Utils.showToast(LocaleKeys.courseUrlNotAvailable.tr());
useShouldOverrideUrlLoading: false,
transparentBackground: false,
),
browserSettings: InAppBrowserSettings(
hideUrlBar: true,
hideTitleBar: false,
toolbarTopBackgroundColor: theme_colors.primaryColor,
),
);
browser.openUrlRequest(
urlRequest: URLRequest(url: WebUri(url)), // return;
settings: settings, // }
); //
// 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 @override

@ -15,10 +15,13 @@ class SsoLoginWebView extends StatefulWidget {
class _SsoLoginWebViewState extends State<SsoLoginWebView> { class _SsoLoginWebViewState extends State<SsoLoginWebView> {
late final WebViewController _controller; late final WebViewController _controller;
String? url;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
url = widget.url ?? "https://Paxes-release.techmaster.in/SSO/HMG";
super.initState(); super.initState();
_controller = _controller =
WebViewController() WebViewController()
@ -46,7 +49,7 @@ class _SsoLoginWebViewState extends State<SsoLoginWebView> {
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<body onload="document.forms[0].submit()"> <body onload="document.forms[0].submit()">
<form method="POST" action="https://Paxes-release.techmaster.in/SSO/HMG"> <form method="POST" action="$url">
<input type="hidden" name="JWTToken" value="${widget.jwtToken}" /> <input type="hidden" name="JWTToken" value="${widget.jwtToken}" />
</form> </form>
<h1>Redirecting...</h1> <h1>Redirecting...</h1>
@ -56,6 +59,6 @@ class _SsoLoginWebViewState extends State<SsoLoginWebView> {
@override @override
Widget build(BuildContext context) { 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)));
} }
} }

Loading…
Cancel
Save