fix: Seleção de Local apos o Login

This commit is contained in:
Ivan Antunes 2024-08-29 12:48:53 -03:00
parent 6a89cb7bce
commit c65d103d96
6 changed files with 41 additions and 136 deletions

View File

@ -40,7 +40,7 @@
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Release" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0" launchStyle = "0"

View File

@ -2,7 +2,7 @@ import UIKit
import Flutter import Flutter
@UIApplicationMain @main
@objc class AppDelegate: FlutterAppDelegate { @objc class AppDelegate: FlutterAppDelegate {
override func application( override func application(
_ application: UIApplication, _ application: UIApplication,

View File

@ -9,6 +9,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/flutter_flow/random_data_util.dart'; import 'package:hub/flutter_flow/random_data_util.dart';
import 'package:hub/index.dart';
import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/dialog_util.dart';
import 'package:qr_flutter/qr_flutter.dart'; import 'package:qr_flutter/qr_flutter.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
@ -152,8 +153,7 @@ Future singInLoginAction(
AppState().serialNumber = await getSerialNumber() ?? ''; AppState().serialNumber = await getSerialNumber() ?? '';
AppState().isLogged = true; AppState().isLogged = true;
AppState().haveLocal = AppState().haveLocal = await checkLocals(context: context, model: model);
await checkLocals(context: context, model: model);
toggleApp(context, AppState().haveLocal!); toggleApp(context, AppState().haveLocal!);
} else { } else {
if (PhpGroup.loginCall.msg((loginCall?.jsonBody ?? '')) == null) { if (PhpGroup.loginCall.msg((loginCall?.jsonBody ?? '')) == null) {
@ -260,20 +260,6 @@ Future forgotPasswdAction(
} }
} }
Future cachingLoginActionApp(BuildContext context) async {
if (AppState().isLogged == true) {
context.pushNamed('homePage');
} else {
if (isAndroid == true) {
AppState().device = 'Android';
} else if (isiOS == true) {
AppState().device = 'iOS';
} else {
AppState().device = 'Web';
}
}
}
Future toggleSignInPage(BuildContext context) async { Future toggleSignInPage(BuildContext context) async {
context.pushNamed( context.pushNamed(
'signInPage', 'signInPage',
@ -300,15 +286,7 @@ Future toggleSignUpPage(BuildContext context) async {
Future toggleApp(BuildContext context, bool haveLocal) async { Future toggleApp(BuildContext context, bool haveLocal) async {
if (haveLocal == true) { if (haveLocal == true) {
context.pushNamed( Navigator.push(context, MaterialPageRoute(builder: (context) => const HomePageWidget()));
'homePage',
extra: <String, dynamic>{
kTransitionInfoKey: const TransitionInfo(
hasTransition: true,
transitionType: PageTransitionType.fade,
),
},
);
} else if (haveLocal == false) { } else if (haveLocal == false) {
context.pushNamed( context.pushNamed(
'receptionPage', 'receptionPage',

View File

@ -80,8 +80,7 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
FFRoute( FFRoute(
name: 'homePage', name: 'homePage',
path: '/homePage', path: '/homePage',
builder: (context, params) => builder: (context, params) => const HomePageWidget(),
params.isEmpty ? const HomePageWidget() : const HomePageWidget(),
), ),
FFRoute( FFRoute(
name: 'receptionPage', name: 'receptionPage',

View File

@ -90,7 +90,6 @@ class _AppState extends State<App> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
log("haveLocals: ${AppState().haveLocal}");
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider(create: (_) => AppState()), ChangeNotifierProvider(create: (_) => AppState()),

View File

@ -31,103 +31,59 @@ class _HomePageWidgetState extends State<HomePageWidget> {
late LocalProfileComponentWidget _localProfileComponentWidget; late LocalProfileComponentWidget _localProfileComponentWidget;
_HomePageWidgetState() { _HomePageWidgetState() {
log('HomePageWidget'); _localProfileComponentWidget = LocalProfileComponentWidget(showBottomSheet: showModalSelectLocal);
_localProfileComponentWidget =
LocalProfileComponentWidget(showBottomSheet: showBottomSheet);
} }
final _dataSubject = BehaviorSubject<bool>(); Future<void> processData() async {
bool isShowModalLocal = false;
bool isShowingBottomSheet = false;
Future<void> checkData() async {
try { try {
PhpGroup.getDadosCall var response = await PhpGroup.getDadosCall.call(
.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
cliUUID: AppState().cliUUID, cliUUID: AppState().cliUUID,
atividade: 'getDados', atividade: 'getDados',
) );
.then((response) {
log('Response getDadosCall: ${response.jsonBody}');
if (response.statusCode == 200) {
final error = response.jsonBody['error'];
final errorMsg = response.jsonBody['error_msg'];
if (error == false) { final error = response.jsonBody['error'];
AppState().whatsapp = response.jsonBody['whatsapp'] ?? false; final errorMsg = response.jsonBody['error_msg'];
AppState().provisional = response.jsonBody['provisional'] ?? false;
AppState().name = response.jsonBody['visitado']['VDO_NOME']; if (error == false) {
safeSetState(() {}); AppState().whatsapp = response.jsonBody['whatsapp'] ?? false;
} else if (errorMsg == AppState().provisional = response.jsonBody['provisional'] ?? false;
r'''Usuario nao possui vínculo ativo com esse condominio''') { AppState().name = response.jsonBody['visitado']['VDO_NOME'];
log(errorMsg);
return DialogUtil.warningDefault(context)
.whenComplete(() => checkLocal())
.then((_) => safeSetState(() {}));
} else {
return DialogUtil.warningDefault(context)
.whenComplete(() => checkLocal())
.then((_) => safeSetState(() {}));
}
} else {
return DialogUtil.warningDefault(context)
.whenComplete(() => checkLocal())
.then((_) => safeSetState(() {}));
}
}).catchError((e) {
log('Error in getDadosCall: $e');
return DialogUtil.warningDefault(context)
.whenComplete(() => checkLocal())
.then((_) => safeSetState(() {}));
}).onError((error, stackTrace) {
log('Error in getDadosCall: $error\n\n$stackTrace');
return DialogUtil.warningDefault(context)
.whenComplete(() => checkLocal())
.then((_) => safeSetState(() {}));
}).whenComplete(() {
safeSetState(() {}); safeSetState(() {});
}); return;
} catch (e, s) { }
log('Error in checkData: \n\n$e\n\n$s');
await DialogUtil.warningDefault(context).whenComplete(() => checkLocal()); DialogUtil.warningDefault(context).whenComplete(() => processLocals());
safeSetState(() {});
return;
} catch(e, s) {
DialogUtil.warningDefault(context).whenComplete(() => processLocals());
} }
} }
Future<void> checkLocal() async { Future<void> processLocals() async {
log('Checklocal');
try { try {
final response = await PhpGroup.getLocalsCall.call( var response = await PhpGroup.getLocalsCall.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
); );
List<dynamic> locals = response.jsonBody['locais'] ?? []; List<dynamic> locals = response.jsonBody['locais'] ?? [];
final activeLocals =
locals.where((local) => local['CLU_STATUS'] == 'A').toList(); final activeLocals = locals.where((local) => local['CLU_STATUS'] == 'A').toList();
log('ActiveLocals: $activeLocals');
if (activeLocals.isEmpty || AppState().cliUUID.isEmpty) { if (activeLocals.isEmpty || AppState().cliUUID.isEmpty) {
log('2ShowBottomSheet: $isShowModalLocal'); await showModalSelectLocal();
if (isShowModalLocal || isShowingBottomSheet) return;
isShowModalLocal = true;
await showBottomSheet();
} else { } else {
await checkData(); await processData();
} }
} catch (e) { } catch (e) {
log('Error in checkLocal: $e'); await showModalSelectLocal();
if (isShowModalLocal || isShowingBottomSheet) return;
await showBottomSheet();
} }
} }
Future<void> showBottomSheet() async { Future<void> showModalSelectLocal() async {
if (isShowingBottomSheet) return;
isShowingBottomSheet = true;
log('ShowBottomSheet: $isShowModalLocal');
await showModalBottomSheet( await showModalBottomSheet(
isScrollControlled: true, isScrollControlled: true,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
@ -140,34 +96,17 @@ class _HomePageWidgetState extends State<HomePageWidget> {
), ),
).then((_) async { ).then((_) async {
_model.updatePage(() => safeSetState(() { _model.updatePage(() => safeSetState(() {
// isShowModalLocal = false; _localProfileComponentWidget = LocalProfileComponentWidget(showBottomSheet: showModalSelectLocal);
_localProfileComponentWidget = }));
LocalProfileComponentWidget(showBottomSheet: showBottomSheet);
})); await processData();
await checkData();
}).whenComplete(() {
isShowingBottomSheet = false;
}); });
} }
@override @override
void dispose() { void dispose() {
_model.dispose();
// Close the data subject
_dataSubject.close();
super.dispose(); super.dispose();
} _model.dispose();
// Call this method to trigger the checkData() function
void triggerCheckData() {
_dataSubject.add(true);
}
// Call this method to trigger the checkLocal() function
void triggerCheckLocal() {
_dataSubject.add(false);
} }
@override @override
@ -179,24 +118,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
() async { () async {
await FirebaseMessagingService().updateDeviceToken(); await FirebaseMessagingService().updateDeviceToken();
checkLocal();
}();
_dataSubject.stream.listen((data) { if (AppState().cliUUID.isEmpty) {
if (data) { await processLocals();
checkData();
} else {
checkLocal();
} }
}); }();
// WidgetsBinding.instance.addPostFrameCallback((_) async {
// });
_model.textController ??= TextEditingController(); _model.textController ??= TextEditingController();
_model.textFieldFocusNode ??= FocusNode(); _model.textFieldFocusNode ??= FocusNode();
// Subscribe to the data subject
} }
@override @override