fix: nav and local selection
This commit is contained in:
parent
82b716a0e6
commit
77397e0f92
|
@ -14,7 +14,8 @@ import '/backend/api_requests/api_calls.dart';
|
||||||
import '/flutter_flow/flutter_flow_theme.dart';
|
import '/flutter_flow/flutter_flow_theme.dart';
|
||||||
|
|
||||||
class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget {
|
class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget {
|
||||||
const BottomArrowLinkedLocalsComponentWidget({super.key});
|
const BottomArrowLinkedLocalsComponentWidget({super.key, required this.response});
|
||||||
|
final ApiCallResponse? response;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<BottomArrowLinkedLocalsComponentWidget> createState() => _BottomArrowLinkedLocalsComponentWidgetState();
|
State<BottomArrowLinkedLocalsComponentWidget> createState() => _BottomArrowLinkedLocalsComponentWidgetState();
|
||||||
|
@ -71,16 +72,15 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
|
||||||
Future<ApiCallResponse?> _fetchLocals() async {
|
Future<ApiCallResponse?> _fetchLocals() async {
|
||||||
try {
|
try {
|
||||||
setState(() => _loading = true);
|
setState(() => _loading = true);
|
||||||
var response = await PhpGroup.getLocalsCall.call();
|
final bool isError = widget.response?.jsonBody['error'];
|
||||||
final bool isError = response.jsonBody['error'];
|
|
||||||
|
|
||||||
if (isError) {
|
if (isError) {
|
||||||
final String errorMsg = response.jsonBody['error_msg'];
|
final String errorMsg = widget.response?.jsonBody['error_msg'];
|
||||||
_handleError(context, errorMsg);
|
_handleError(context, errorMsg);
|
||||||
return response;
|
return widget.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<dynamic> locals = response.jsonBody['locais'] ?? [];
|
final List<dynamic> locals = widget.response?.jsonBody['locais'] ?? [];
|
||||||
|
|
||||||
final bool isEmpty = locals.isEmpty;
|
final bool isEmpty = locals.isEmpty;
|
||||||
final bool isUnique = locals.length == 1;
|
final bool isUnique = locals.length == 1;
|
||||||
|
@ -99,7 +99,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
|
||||||
|
|
||||||
if (isDisabled) {
|
if (isDisabled) {
|
||||||
context.go('/receptionPage');
|
context.go('/receptionPage');
|
||||||
return response;
|
return widget.response;
|
||||||
}
|
}
|
||||||
if (isEnabled) {
|
if (isEnabled) {
|
||||||
final local = locals[0];
|
final local = locals[0];
|
||||||
|
@ -109,10 +109,10 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
|
||||||
await StorageHelper().set(SQLiteStorageKey.ownerUUID.value, local['CLU_OWNER_ID'], Storage.SQLiteStorage);
|
await StorageHelper().set(SQLiteStorageKey.ownerUUID.value, local['CLU_OWNER_ID'], Storage.SQLiteStorage);
|
||||||
|
|
||||||
context.pop();
|
context.pop();
|
||||||
return response;
|
return widget.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return widget.response;
|
||||||
}
|
}
|
||||||
_showNoMoreDataSnackBar(context);
|
_showNoMoreDataSnackBar(context);
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
|
@ -39,9 +39,11 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async{
|
WidgetsBinding.instance.addPostFrameCallback((_) async{
|
||||||
final String? cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage);
|
final String? cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage);
|
||||||
if(cliUUID == null || cliUUID.isEmpty) {
|
bool initialized = false;
|
||||||
|
if(cliUUID == null || cliUUID.isEmpty && !initialized)
|
||||||
|
initialized = true;
|
||||||
await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null);
|
await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -96,8 +98,8 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
||||||
hoverColor: Colors.transparent,
|
hoverColor: Colors.transparent,
|
||||||
highlightColor: Colors.transparent,
|
highlightColor: Colors.transparent,
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
await LocalizationService.selectLocal(context)
|
await StorageHelper().set(SQLiteStorageKey.clientUUID.value, '', Storage.SQLiteStorage);
|
||||||
.then((value) => value == true ? onUpdate() : null);
|
await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null);
|
||||||
},
|
},
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(200.0),
|
borderRadius: BorderRadius.circular(200.0),
|
||||||
|
|
|
@ -278,6 +278,7 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||||
|
|
||||||
if (state == AppLifecycleState.detached) {
|
if (state == AppLifecycleState.detached) {
|
||||||
await LocalizationService.processLocals(context);
|
await LocalizationService.processLocals(context);
|
||||||
FirebaseMessagingService().updateDeviceToken();
|
FirebaseMessagingService().updateDeviceToken();
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
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/flutter_flow/nav/nav.dart';
|
||||||
import 'package:hub/shared/helpers/base_storage.dart';
|
import 'package:hub/shared/helpers/base_storage.dart';
|
||||||
import 'package:hub/shared/helpers/storage_helper.dart';
|
import 'package:hub/shared/helpers/storage_helper.dart';
|
||||||
|
@ -27,12 +29,12 @@ class LocalizationService {
|
||||||
_handleError(context, response.jsonBody['error_msg']);
|
_handleError(context, response.jsonBody['error_msg']);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isError == null) {
|
if (response.jsonBody == null) {
|
||||||
final String errorMsg = FFLocalizations.of(context).getVariableText(
|
final String errorMsg = FFLocalizations.of(context).getVariableText(
|
||||||
enText: 'Verify your connection',
|
enText: 'Verify your connection',
|
||||||
ptText: 'Verifique sua conexão',
|
ptText: 'Verifique sua conexão',
|
||||||
);
|
);
|
||||||
DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context));
|
DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,13 +60,22 @@ class LocalizationService {
|
||||||
try {
|
try {
|
||||||
final GetLocalsCall callback = PhpGroup.getLocalsCall;
|
final GetLocalsCall callback = PhpGroup.getLocalsCall;
|
||||||
final ApiCallResponse response = await callback.call();
|
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'];
|
final String errorMsg = response.jsonBody['error_msg'];
|
||||||
_handleError(context, errorMsg);
|
_handleError(context, errorMsg);
|
||||||
return false;
|
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<dynamic> locals = response.jsonBody['locais'].toList() ?? [];
|
final List<dynamic> locals = response.jsonBody['locais'].toList() ?? [];
|
||||||
_logLocalsStatus(locals);
|
_logLocalsStatus(locals);
|
||||||
|
@ -90,7 +101,7 @@ class LocalizationService {
|
||||||
return await _handleEnabled(context, locals[0]);
|
return await _handleEnabled(context, locals[0]);
|
||||||
} else if (isUnselected) {
|
} else if (isUnselected) {
|
||||||
log('() => isUnselected');
|
log('() => isUnselected');
|
||||||
return await selectLocal(context);
|
return await selectLocal(context, response);
|
||||||
} else if (isSelected) {
|
} else if (isSelected) {
|
||||||
log('() => isSelected');
|
log('() => isSelected');
|
||||||
return await processData(context);
|
return await processData(context);
|
||||||
|
@ -103,7 +114,7 @@ class LocalizationService {
|
||||||
if (!isUnique && isPending) log('() => not unique and pending');
|
if (!isUnique && isPending) log('() => not unique and pending');
|
||||||
if (!isUnique && isBlocked) log('() => not unique and blocked');
|
if (!isUnique && isBlocked) log('() => not unique and blocked');
|
||||||
log('() => else');
|
log('() => else');
|
||||||
return await selectLocal(context);
|
return await selectLocal(context, response);
|
||||||
}
|
}
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
log('() => stack: $s');
|
log('() => stack: $s');
|
||||||
|
@ -113,7 +124,7 @@ class LocalizationService {
|
||||||
enText: 'Error getting locals, verify your connection',
|
enText: 'Error getting locals, verify your connection',
|
||||||
ptText: 'Erro ao obter locais, verifique sua conexão',
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,13 +133,22 @@ class LocalizationService {
|
||||||
try {
|
try {
|
||||||
final GetDadosCall callback = PhpGroup.getDadosCall;
|
final GetDadosCall callback = PhpGroup.getDadosCall;
|
||||||
var response = await callback.call();
|
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'];
|
final String errorMsg = response.jsonBody['error_msg'];
|
||||||
DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context));
|
DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response));
|
||||||
return false;
|
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);
|
await _updateStorageUtil(response.jsonBody);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -139,12 +159,12 @@ class LocalizationService {
|
||||||
enText: 'Error getting data, verify your connection',
|
enText: 'Error getting data, verify your connection',
|
||||||
ptText: 'Erro ao obter dados, verifique sua conexão',
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<bool> selectLocal(BuildContext context) async {
|
static Future<bool> selectLocal(BuildContext context, ApiCallResponse? response) async {
|
||||||
return await showModalBottomSheet(
|
return await showModalBottomSheet(
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
|
@ -157,7 +177,7 @@ class LocalizationService {
|
||||||
canPop: false,
|
canPop: false,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: MediaQuery.viewInsetsOf(context),
|
padding: MediaQuery.viewInsetsOf(context),
|
||||||
child: const BottomArrowLinkedLocalsComponentWidget(),
|
child: BottomArrowLinkedLocalsComponentWidget(response: response),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
).then((_) async => await processData(context));
|
).then((_) async => await processData(context));
|
||||||
|
@ -230,7 +250,7 @@ class LocalizationService {
|
||||||
await DialogUtil.warning(context, errorMsg);
|
await DialogUtil.warning(context, errorMsg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context));
|
await DialogUtil.error(context, errorMsg).whenComplete(() async => await selectLocal(context, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<bool> _handleUnavailable(BuildContext context, List<dynamic> locals) async {
|
static Future<bool> _handleUnavailable(BuildContext context, List<dynamic> locals) async {
|
||||||
|
|
Loading…
Reference in New Issue