From ee973ad74934ff80e99151aafe90e8a232a64a31 Mon Sep 17 00:00:00 2001 From: Ivan Antunes Date: Fri, 23 Aug 2024 18:02:17 -0300 Subject: [PATCH] fet: Reservas --- .../menu_component/menu_component_model.dart | 5 + .../menu_component/menu_component_widget.dart | 33 ++++++ lib/flutter_flow/nav/nav.dart | 6 ++ .../fast_pass_page/fast_pass_page_widget.dart | 3 - .../reservation_page_widget.dart | 101 ++++++++++++++++++ 5 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 lib/pages/reservation_page/reservation_page_widget.dart diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 96c92010..808b44bd 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:hub/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; +import 'package:hub/pages/reservation_page/reservation_page_widget.dart'; import '/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart'; import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; @@ -163,6 +164,10 @@ class MenuComponentModel extends FlutterFlowModel { ).then((value) => true); } + Future reservation(BuildContext context) async { + Navigator.push(context, MaterialPageRoute(builder: (context) => ReservationPageWidget())); + } + Future liberationHistoryOptAction(BuildContext context) async { await showAdaptiveDialog( // isScrollControlled: true, diff --git a/lib/components/organism_components/menu_component/menu_component_widget.dart b/lib/components/organism_components/menu_component/menu_component_widget.dart index a30ffa13..ddbdda9a 100644 --- a/lib/components/organism_components/menu_component/menu_component_widget.dart +++ b/lib/components/organism_components/menu_component/menu_component_widget.dart @@ -122,6 +122,17 @@ class _MenuComponentWidgetState extends State { ptText: 'Encomendas', ), ), + MenuButtonWidget( + icon: Icons.event_available, + action: () async { + await _model.reservation(context); + setState(() {}); + }, + title: FFLocalizations.of(context).getVariableText( + enText: 'Reservations', + ptText: 'Reservas', + ), + ), MenuButtonWidget( icon: Icons.settings, action: () async { @@ -204,6 +215,17 @@ class _MenuComponentWidgetState extends State { ptText: 'Encomendas', ), ), + MenuCardItem( + icon: Icons.event_available, + action: () async { + await _model.reservation(context); + setState(() {}); + }, + title: FFLocalizations.of(context).getVariableText( + enText: 'Reservations', + ptText: 'Reservas', + ), + ), MenuCardItem( icon: Icons.settings, action: () async { @@ -296,6 +318,17 @@ class _MenuComponentWidgetState extends State { ptText: 'Encomendas', ), ), + MenuCardItem( + icon: Icons.event_available, + action: () async { + await _model.reservation(context); + setState(() {}); + }, + title: FFLocalizations.of(context).getVariableText( + enText: 'Reservations', + ptText: 'Reservas', + ), + ), MenuCardItem( icon: Icons.settings, action: () async { diff --git a/lib/flutter_flow/nav/nav.dart b/lib/flutter_flow/nav/nav.dart index 1d21afff..3c88ce9c 100644 --- a/lib/flutter_flow/nav/nav.dart +++ b/lib/flutter_flow/nav/nav.dart @@ -6,6 +6,7 @@ import 'package:hub/pages/fast_pass_page/fast_pass_page_widget.dart'; import 'package:hub/pages/message_history_page/message_history_page_widget.dart'; import 'package:hub/pages/no_connection_page/no_connection_page.dart'; import 'package:hub/pages/package_order_page/package_order_page.dart'; +import 'package:hub/pages/reservation_page/reservation_page_widget.dart'; import 'package:provider/provider.dart'; import '/backend/schema/structs/index.dart'; @@ -177,6 +178,11 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter( path: '/packageOrder', builder: (context, params) => const PackageOrderPage(), ), + FFRoute( + name: 'reservation', + path: '/reservation', + builder: (context, params) => ReservationPageWidget(), + ), // FFRoute( // name: 'settingsPage', // path: '/settingsPage', diff --git a/lib/pages/fast_pass_page/fast_pass_page_widget.dart b/lib/pages/fast_pass_page/fast_pass_page_widget.dart index 1b918bcb..bd2bfb8e 100644 --- a/lib/pages/fast_pass_page/fast_pass_page_widget.dart +++ b/lib/pages/fast_pass_page/fast_pass_page_widget.dart @@ -1,7 +1,4 @@ -import 'dart:developer'; - import 'package:hub/app_state.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:url_launcher/url_launcher_string.dart'; diff --git a/lib/pages/reservation_page/reservation_page_widget.dart b/lib/pages/reservation_page/reservation_page_widget.dart new file mode 100644 index 00000000..87eab3f6 --- /dev/null +++ b/lib/pages/reservation_page/reservation_page_widget.dart @@ -0,0 +1,101 @@ +import 'package:hub/app_state.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:url_launcher/url_launcher_string.dart'; +import 'package:webview_flutter/webview_flutter.dart'; +import 'dart:io' show Platform; + +class ReservationPageWidget extends StatefulWidget { + final String freToken = AppState().userUUID; + final String freUserData = "{\"name\": \"${AppState().name}\", " + + "\"email\": \"${AppState().email}\"," + + "\"dev_id\": \"${AppState().devUUID}\"," + + "\"created_at\": \"${AppState().createdAt}\"," + + "\"updated_at\": \"0000-00-00 00:00:00\"," + + "\"status\": \"A\" }"; + + final String clientId = AppState().cliUUID; + + @override + _ReservationPageWidgetState createState() => _ReservationPageWidgetState(); +} + +class _ReservationPageWidgetState extends State { + late InAppWebViewController _controllerIOS; + late WebViewController _controllerAll; + late String url; + late String name; + late String email; + late String userUUID; + late String created_at; + + @override + void initState() { + super.initState(); + name = AppState().name; + email = AppState().email; + userUUID = AppState().userUUID; + created_at = AppState().createdAt; + url = 'https://hub.freaccess.com.br/hub/reservation/${widget.clientId}'; + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + body: Platform.isIOS + ? InAppWebView( + initialUrlRequest: URLRequest(url: WebUri(url)), + initialSettings: InAppWebViewSettings( + allowsBackForwardNavigationGestures: true, + javaScriptEnabled: true, + ), + onWebViewCreated: (controller) async { + _controllerIOS = controller; + }, + onLoadStop: (controller, url) async { + await controller.evaluateJavascript( + source: + "window.localStorage.setItem('fre-token', '\"${widget.freToken}\"')"); + await controller.evaluateJavascript( + source: + "window.localStorage.setItem('fre-user-data', '${widget.freUserData}')"); + }, + + ) + : WebViewWidget( + controller: _controllerAll = WebViewController() + ..clearCache() + ..clearLocalStorage() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(const Color(0x00000000)) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) {}, + onPageStarted: (String url) { + final String token = + "localStorage.setItem('fre-token', '\"${widget.freToken}\"');"; + final String data = + "localStorage.setItem('fre-user-data', '${widget.freUserData}');"; + + _controllerAll.runJavaScript(token); + _controllerAll.runJavaScript(data); + }, + onNavigationRequest: (NavigationRequest request) { + if (request.url.startsWith('http') || + request.url + .startsWith('https://api.whatsapp.com/send') || + request.url.startsWith('https://wa.me')) { + launchUrlString(request.url); + return NavigationDecision.prevent; + } + return NavigationDecision.prevent; + }, + ), + ) + ..loadRequest(Uri.parse(url)), + ), + ), + ); + } +}