diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index e8a94cd..28226ce 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -179,7 +179,7 @@ class DashboardApiClient { // "ClientId": "a9f4d1a0596d4aea8f830992ec4bdac1", "PersonId": AppState().memberInformationList?.eMPLOYEENUMBER, "Username": AppState().memberInformationList?.eMPLOYEENUMBER, - "Language": "en", + "Language": "US", }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index 7589317..7bb9bd4 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -21,6 +21,7 @@ import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; +import 'package:mohem_flutter_app/widgets/sso_webview_widget.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -263,32 +264,33 @@ class ServicesWidget extends StatelessWidget { if (ssoToken != null) { logger.d(ssoToken.data!.toJson()); logger.d(ssoToken.data!.accessToken); + dynamic url = await pro.fetchURLRedirection(token: ssoToken.data!.accessToken!); + Navigator.push(context, MaterialPageRoute(builder: (context) => SsoLoginWebView(url: url ?? "", jwtToken: ssoToken.data!.accessToken!))); - dynamic valu = await pro.fetchURLRedirection(token: ssoToken.data!.accessToken!); - - myInAppBrowser = MyInAppBrowser( - onExitCallback: () { - log("Browser Exited"); - }, - onLoadStartCallback: (String url) { - log("Browser LoadStart for : $url"); - if (url.contains("https://ek.techmaster.in/")) { - // Handle the URL as needed - log("SSO URL Loaded: $url"); - } - }, - ); - - await myInAppBrowser!.openUrlRequest( - urlRequest: URLRequest( - url: WebUri(valu, forceToStringRawValue: true), - allowsCellularAccess: true, - allowsConstrainedNetworkAccess: true, - allowsExpensiveNetworkAccess: true, - // headers: {'Authorization': 'Bearer ${ssoToken.data!.accessToken}'}, - ), - settings: inAppBrowserOptions, - ); + // + // myInAppBrowser = MyInAppBrowser( + // onExitCallback: () { + // log("Browser Exited"); + // }, + // onLoadStartCallback: (String url) { + // log("Browser LoadStart for : $url"); + // if (url.contains("https://ek.techmaster.in/")) { + // // Handle the URL as needed + // log("SSO URL Loaded: $url"); + // } + // }, + // ); + // + // await myInAppBrowser!.openUrlRequest( + // urlRequest: URLRequest( + // url: WebUri(valu, forceToStringRawValue: true), + // allowsCellularAccess: true, + // allowsConstrainedNetworkAccess: true, + // allowsExpensiveNetworkAccess: true, + // // headers: {'Authorization': 'Bearer ${ssoToken.data!.accessToken}'}, + // ), + // settings: inAppBrowserOptions, + // ); // Navigator.of(context).push( // MaterialPageRoute( diff --git a/lib/widgets/sso_webview_widget.dart b/lib/widgets/sso_webview_widget.dart new file mode 100644 index 0000000..e5f2759 --- /dev/null +++ b/lib/widgets/sso_webview_widget.dart @@ -0,0 +1,61 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +class SsoLoginWebView extends StatefulWidget { + final String url; + final String jwtToken; + + SsoLoginWebView({required this.url, required this.jwtToken}); + + @override + State createState() => _SsoLoginWebViewState(); +} + +class _SsoLoginWebViewState extends State { + late final WebViewController _controller; + + @override + void initState() { + // TODO: implement initState + super.initState(); + _controller = + WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + print("WebView is loading (progress: $progress%)"); + }, + onPageStarted: (String url) { + print("Page started loading: $url"); + }, + onPageFinished: (String url) { + print("Page finished loading: $url"); + }, + onHttpError: (HttpResponseError error) { + print("HTTP error: ${error.toString()} for URL: ${error.response!.statusCode}"); + }, + onWebResourceError: (WebResourceError error) { + print("Web resource error: ${error.description} for URL: ${error.errorType}"); + }, + ), + ) + ..loadHtmlString(''' + + + +
+ +
+

Redirecting...

+ +'''); + } + + @override + Widget build(BuildContext context) { + return Scaffold(appBar: AppBar(title: Text('Logging in...')), body: WebViewWidget(controller: _controller)); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 24bb5c2..54d313f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -133,6 +133,7 @@ dependencies: #todo its for temporary purpose, later will remove this. dotted_border: ^2.0.0+3 + webview_flutter: ^4.13.0 # saf: ^1.0.3+4