diff --git a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart index 1565e678..e5710f7b 100644 --- a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart +++ b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart @@ -14,7 +14,8 @@ import '/backend/api_requests/api_calls.dart'; import '/flutter_flow/flutter_flow_theme.dart'; class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget { - const BottomArrowLinkedLocalsComponentWidget({super.key}); + const BottomArrowLinkedLocalsComponentWidget({super.key, required this.response}); + final ApiCallResponse? response; @override State createState() => _BottomArrowLinkedLocalsComponentWidgetState(); @@ -71,16 +72,15 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State _fetchLocals() async { try { setState(() => _loading = true); - var response = await PhpGroup.getLocalsCall.call(); - final bool isError = response.jsonBody['error']; + final bool isError = widget.response?.jsonBody['error']; if (isError) { - final String errorMsg = response.jsonBody['error_msg']; + final String errorMsg = widget.response?.jsonBody['error_msg']; _handleError(context, errorMsg); - return response; + return widget.response; } - final List locals = response.jsonBody['locais'] ?? []; + final List locals = widget.response?.jsonBody['locais'] ?? []; final bool isEmpty = locals.isEmpty; final bool isUnique = locals.length == 1; @@ -99,7 +99,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State value == true ? onUpdate() : null); - } + }); } @@ -96,8 +98,8 @@ class _LocalProfileComponentWidgetState extends State value == true ? onUpdate() : null); + await StorageHelper().set(SQLiteStorageKey.clientUUID.value, '', Storage.SQLiteStorage); + await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null); }, child: ClipRRect( borderRadius: BorderRadius.circular(200.0), diff --git a/lib/main.dart b/lib/main.dart index 24ebdf9b..c6564acf 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -278,10 +278,11 @@ class _AppState extends State with WidgetsBindingObserver { @override void didChangeAppLifecycleState(AppLifecycleState state) async { + if (state == AppLifecycleState.detached) { await LocalizationService.processLocals(context); FirebaseMessagingService().updateDeviceToken(); - } + } } @override diff --git a/lib/shared/services/localization/localization_service.dart b/lib/shared/services/localization/localization_service.dart index 92ff9604..1ed2deb1 100644 --- a/lib/shared/services/localization/localization_service.dart +++ b/lib/shared/services/localization/localization_service.dart @@ -3,6 +3,8 @@ import 'dart:developer'; import 'package:flutter/material.dart'; +import 'package:http/src/response.dart'; +import 'package:hub/backend/api_requests/api_manager.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/storage_helper.dart'; @@ -27,12 +29,12 @@ class LocalizationService { _handleError(context, response.jsonBody['error_msg']); return; } - if (isError == null) { + if (response.jsonBody == null) { final String errorMsg = FFLocalizations.of(context).getVariableText( enText: 'Verify your connection', ptText: 'Verifique sua conexão', ); - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context)); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); return; } @@ -58,13 +60,22 @@ class LocalizationService { try { final GetLocalsCall callback = PhpGroup.getLocalsCall; final ApiCallResponse response = await callback.call(); - final bool isError = response.jsonBody['error']; + final bool? isError = response.jsonBody['error']; - if (isError) { + if (isError == true) { final String errorMsg = response.jsonBody['error_msg']; _handleError(context, errorMsg); return false; } + if (response.jsonBody == null) { + final String errorMsg = FFLocalizations.of(context).getVariableText( + enText: 'Verify your connection', + ptText: 'Verifique sua conexão', + ); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); + return false; + } + final List locals = response.jsonBody['locais'].toList() ?? []; _logLocalsStatus(locals); @@ -90,7 +101,7 @@ class LocalizationService { return await _handleEnabled(context, locals[0]); } else if (isUnselected) { log('() => isUnselected'); - return await selectLocal(context); + return await selectLocal(context, response); } else if (isSelected) { log('() => isSelected'); return await processData(context); @@ -103,7 +114,7 @@ class LocalizationService { if (!isUnique && isPending) log('() => not unique and pending'); if (!isUnique && isBlocked) log('() => not unique and blocked'); log('() => else'); - return await selectLocal(context); + return await selectLocal(context, response); } } catch (e, s) { log('() => stack: $s'); @@ -113,7 +124,7 @@ class LocalizationService { enText: 'Error getting locals, verify your connection', ptText: 'Erro ao obter locais, verifique sua conexão', ); - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context)); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, null)); return false; } } @@ -122,13 +133,22 @@ class LocalizationService { try { final GetDadosCall callback = PhpGroup.getDadosCall; var response = await callback.call(); - final bool error = response.jsonBody['error']; + final bool? isError = response.jsonBody['error']; - if (error == true || error == 'true') { + if (isError == true || isError == 'true') { final String errorMsg = response.jsonBody['error_msg']; - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context)); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); return false; - } else { + } + else if (response.jsonBody == null) { + final String errorMsg = FFLocalizations.of(context).getVariableText( + enText: 'Verify your connection', + ptText: 'Verifique sua conexão', + ); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); + return false ; + } + else { await _updateStorageUtil(response.jsonBody); return true; } @@ -139,12 +159,12 @@ class LocalizationService { enText: 'Error getting data, verify your connection', ptText: 'Erro ao obter dados, verifique sua conexão', ); - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context)); + DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, null)); return false; } } - static Future selectLocal(BuildContext context) async { + static Future selectLocal(BuildContext context, ApiCallResponse? response) async { return await showModalBottomSheet( isScrollControlled: true, backgroundColor: Colors.transparent, @@ -157,7 +177,7 @@ class LocalizationService { canPop: false, child: Padding( padding: MediaQuery.viewInsetsOf(context), - child: const BottomArrowLinkedLocalsComponentWidget(), + child: BottomArrowLinkedLocalsComponentWidget(response: response), ), ), ).then((_) async => await processData(context)); @@ -230,7 +250,7 @@ class LocalizationService { await DialogUtil.warning(context, errorMsg); return; } - await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context)); + await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context, null)); } static Future _handleUnavailable(BuildContext context, List locals) async {