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';
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> processData(BuildContext context);
Future<bool> selectLocal(BuildContext context, ApiCallResponse? response) ;
Future<void> detachLocal(BuildContext context) ;
Future<void> detachLocal(BuildContext context);
}
class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
@ -31,7 +32,7 @@ class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
LocalsRemoteDataSourceImpl._internal();
@override
Future<void> checkLocals(BuildContext context) async {
Future<void> linkLocal(BuildContext context) async {
try {
final GetLocalsCall callback = PhpGroup.getLocalsCall;
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
Future<bool> processData(BuildContext context) async {
try {

View File

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