check cache locals in update locals

This commit is contained in:
J. A. Messias 2024-12-09 09:26:00 -03:00
parent bc0ef37a60
commit ab19c7f231
2 changed files with 25 additions and 12 deletions

View File

@ -18,11 +18,12 @@ import 'package:hub/shared/utils/dialog_util.dart';
import 'package:hub/shared/utils/snackbar_util.dart'; import 'package:hub/shared/utils/snackbar_util.dart';
abstract class LocalsRemoteDataSource { abstract class LocalsRemoteDataSource {
Future<void> checkLocals(BuildContext context); Future<void> linkLocal(BuildContext context);
Future<bool> checkLocals(BuildContext context);
Future<bool> processLocals(BuildContext context) ; Future<bool> processLocals(BuildContext context) ;
Future<bool> processData(BuildContext context); Future<bool> processData(BuildContext context);
Future<bool> selectLocal(BuildContext context, ApiCallResponse? response) ; Future<bool> selectLocal(BuildContext context, ApiCallResponse? response) ;
Future<void> detachLocal(BuildContext context) ; Future<void> detachLocal(BuildContext context);
} }
class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource { class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
@ -31,7 +32,7 @@ class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
LocalsRemoteDataSourceImpl._internal(); LocalsRemoteDataSourceImpl._internal();
@override @override
Future<void> checkLocals(BuildContext context) async { Future<void> linkLocal(BuildContext context) async {
try { try {
final GetLocalsCall callback = PhpGroup.getLocalsCall; final GetLocalsCall callback = PhpGroup.getLocalsCall;
var response = await callback.call(); var response = await callback.call();
@ -142,6 +143,13 @@ class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
} }
} }
@override
Future<bool> checkLocals(BuildContext context) async {
String cliUUID = (await StorageHelper().get(KeychainStorageKey.clientUUID.value)) ?? '';
String cliName = (await StorageHelper().get(KeychainStorageKey.clientName.value)) ?? '';
return cliUUID.isEmpty && cliName.isEmpty;
}
@override @override
Future<bool> processData(BuildContext context) async { Future<bool> processData(BuildContext context) async {
try { try {

View File

@ -20,7 +20,7 @@ class LocalsRepositoryImpl implements LocalsRepository {
@override @override
Future<void> validateLocal(BuildContext context) async { Future<void> validateLocal(BuildContext context) async {
return await remoteDataSource.checkLocals(context); return await remoteDataSource.linkLocal(context);
} }
@override @override
@ -49,17 +49,22 @@ class LocalsRepositoryImpl implements LocalsRepository {
Future<bool> _handleReponse(BuildContext context) async { Future<bool> _handleReponse(BuildContext context) async {
bool response = false; bool response = false;
while (!response) { final bool isUnselected = await remoteDataSource.checkLocals(context);
try { if (isUnselected) {
response = await remoteDataSource.processLocals(context); while (!response) {
if (!response) { try {
await _handleUpdateError(context); response = await remoteDataSource.processLocals(context);
} if (!response) {
} catch (e , s) { await _handleUpdateError(context);
}
} catch (e, s) {
log('Error updating locals: $e', stackTrace: s); log('Error updating locals: $e', stackTrace: s);
await _handleUpdateError(context); await _handleUpdateError(context);
} }
} }
} else {
return true;
}
return response; return response;
} }