diff --git a/lib/shared/components/molecules/locals/data/data_sources/locals_remote_data_source.dart b/lib/shared/components/molecules/locals/data/data_sources/locals_remote_data_source.dart index 2b43583e..2520b990 100644 --- a/lib/shared/components/molecules/locals/data/data_sources/locals_remote_data_source.dart +++ b/lib/shared/components/molecules/locals/data/data_sources/locals_remote_data_source.dart @@ -18,11 +18,12 @@ import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/snackbar_util.dart'; abstract class LocalsRemoteDataSource { - Future checkLocals(BuildContext context); + Future linkLocal(BuildContext context); + Future checkLocals(BuildContext context); Future processLocals(BuildContext context) ; Future processData(BuildContext context); Future selectLocal(BuildContext context, ApiCallResponse? response) ; - Future detachLocal(BuildContext context) ; + Future detachLocal(BuildContext context); } class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource { @@ -31,7 +32,7 @@ class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource { LocalsRemoteDataSourceImpl._internal(); @override - Future checkLocals(BuildContext context) async { + Future 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 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 processData(BuildContext context) async { try { diff --git a/lib/shared/components/molecules/locals/data/repositories/locals_repository_impl.dart b/lib/shared/components/molecules/locals/data/repositories/locals_repository_impl.dart index 93a8aa27..51c48596 100644 --- a/lib/shared/components/molecules/locals/data/repositories/locals_repository_impl.dart +++ b/lib/shared/components/molecules/locals/data/repositories/locals_repository_impl.dart @@ -20,7 +20,7 @@ class LocalsRepositoryImpl implements LocalsRepository { @override Future validateLocal(BuildContext context) async { - return await remoteDataSource.checkLocals(context); + return await remoteDataSource.linkLocal(context); } @override @@ -49,17 +49,22 @@ class LocalsRepositoryImpl implements LocalsRepository { Future _handleReponse(BuildContext context) async { bool response = false; - while (!response) { - try { - response = await remoteDataSource.processLocals(context); - if (!response) { - await _handleUpdateError(context); - } - } catch (e , s) { + 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) { log('Error updating locals: $e', stackTrace: s); await _handleUpdateError(context); } - } + } + } else { + return true; + } return response; }