diff --git a/lib/core/network/api/services/dao_service.dart b/lib/core/network/api/services/dao_service.dart index a98b91b5..37af5af5 100644 --- a/lib/core/network/api/services/dao_service.dart +++ b/lib/core/network/api/services/dao_service.dart @@ -1,8 +1,11 @@ +import 'dart:convert'; + import 'package:dio/dio.dart'; import 'package:hypha_wallet/core/error_handler/model/hypha_error.dart'; import 'package:hypha_wallet/core/logging/log_helper.dart'; import 'package:hypha_wallet/core/network/api/services/remote_config_service.dart'; import 'package:hypha_wallet/core/network/models/dao_data_model.dart'; +import 'package:hypha_wallet/core/network/models/network.dart'; import 'package:hypha_wallet/core/network/models/user_profile_data.dart'; import 'package:hypha_wallet/core/network/networking_manager.dart'; import 'package:hypha_wallet/ui/architecture/result/result.dart'; @@ -45,4 +48,36 @@ class DaoService { return Result.error(HyphaError.fromError(error)); } } + + Future> getDaoById({ + required Network network, + required String daoId, + }) async { + final String query = + '{"query":"query getDaoById(\$docId: String!) { queryDao(filter: {docId: {eq: \$docId}}) {docId details_daoName_n settings { settings_daoTitle_s, settings_daoDescription_s, settings_logo_s, settings_daoUrl_s } } }", "variables": {"docId": "$daoId"} } '; + + final url = _remoteConfigService.graphQLEndpoint(network: network); + try { + final res = await _networkingManager.post(url, data: query); + final Map response = res.data; + + print("response: ${response}"); + + final List daos = response['data']['queryDao']; + return Result.value(daos.isNotEmpty ? DaoData.fromJson(daos[0]) : null); + } catch (error, stackTrace) { + LogHelper.e('Error accessing graphQL', stacktrace: stackTrace, error: error); + if (error is DioException) { + final dioError = error; + LogHelper.d('message: ${dioError.message}'); + LogHelper.d('status code: ${dioError.response?.statusCode}'); + LogHelper.d('message: ${dioError.response?.statusMessage}'); + LogHelper.d('dioError: $dioError'); + } + + LogHelper.e('Error accessing graphQL'); + LogHelper.e(error.toString()); + return Result.error(HyphaError.fromError(error)); + } + } }