sso and courses in app browser updated

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

@ -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<String, dynamic> json) {
@ -72,6 +73,7 @@ class CourseStatus {
cStartdate = json['c_startdate'];
cEnddate = json['c_enddate'];
cUrl = json['c_url'];
token =json['c_token'];
}
Map<String, dynamic> 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;
}
}

@ -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<ITGAdsScreen> {
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<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);
// if (await canLaunchUrl(uri)) {
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/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<CoursesScreen> {
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<CoursesScreen> {
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

@ -15,10 +15,13 @@ class SsoLoginWebView extends StatefulWidget {
class _SsoLoginWebViewState extends State<SsoLoginWebView> {
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<SsoLoginWebView> {
<!DOCTYPE html>
<html>
<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}" />
</form>
<h1>Redirecting...</h1>
@ -56,6 +59,6 @@ class _SsoLoginWebViewState extends State<SsoLoginWebView> {
@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)));
}
}

Loading…
Cancel
Save