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>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"

View File

@ -2,7 +2,7 @@ import UIKit
import Flutter
@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ 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/nav/nav.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:qr_flutter/qr_flutter.dart';
import 'package:share_plus/share_plus.dart';
@ -152,8 +153,7 @@ Future singInLoginAction(
AppState().serialNumber = await getSerialNumber() ?? '';
AppState().isLogged = true;
AppState().haveLocal =
await checkLocals(context: context, model: model);
AppState().haveLocal = await checkLocals(context: context, model: model);
toggleApp(context, AppState().haveLocal!);
} else {
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 {
context.pushNamed(
'signInPage',
@ -300,15 +286,7 @@ Future toggleSignUpPage(BuildContext context) async {
Future toggleApp(BuildContext context, bool haveLocal) async {
if (haveLocal == true) {
context.pushNamed(
'homePage',
extra: <String, dynamic>{
kTransitionInfoKey: const TransitionInfo(
hasTransition: true,
transitionType: PageTransitionType.fade,
),
},
);
Navigator.push(context, MaterialPageRoute(builder: (context) => const HomePageWidget()));
} else if (haveLocal == false) {
context.pushNamed(
'receptionPage',

View File

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

View File

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

View File

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