From 81b3873c1b078f9dee78df3d5d35f9a89af12019 Mon Sep 17 00:00:00 2001 From: basemosama Date: Tue, 1 Jul 2025 17:56:38 +0300 Subject: [PATCH] refactor: Code cleanupp --- example/lib/home.dart | 14 +- lib/src/dio/dio_client.dart | 34 ++-- lib/src/handler/api_handler.dart | 24 +-- .../models/exceptions/network_exception.dart | 3 +- lib/src/models/logger/logger_settings.dart | 184 +++++++++--------- lib/src/models/network_result.dart | 21 +- lib/src/playx_network_client.dart | 11 +- 7 files changed, 141 insertions(+), 150 deletions(-) diff --git a/example/lib/home.dart b/example/lib/home.dart index 148e4b2..f2a190f 100644 --- a/example/lib/home.dart +++ b/example/lib/home.dart @@ -79,7 +79,7 @@ class _MyHomePageState extends State { }, onUnauthorizedRequestReceived: (response) { final code = response?.statusCode; - debugPrint('onUnauthorizedRequestReceived code :$code'); + debugPrint('onUnauthorizedRequestReceived code :$code'); }); super.initState(); @@ -191,20 +191,22 @@ class _MyHomePageState extends State { fromJson: Cat.fromJson, settings: settings.copyWith( logSettings: const PlayxNetworkLoggerSettings( - printResponseData: false, ), + printResponseData: false, + ), )); - debugPrint('Result isError : ${result.isError} isSuccess => ${result.isSuccess}'); + debugPrint( + 'Result isError : ${result.isError} isSuccess => ${result.isSuccess}'); - result.when(success: (cats) { + result.when(success: (cats) { setState(() { _isLoading = false; _cats = cats; }); - debugPrint('Cats are : ${cats.length}'); + debugPrint('Cats are : ${cats.length}'); }, error: (error) { - debugPrint('Error is : ${error.message}'); + debugPrint('Error is : ${error.message}'); //handle error here _weatherMsg = "Error is : ${error.message}"; setState(() { diff --git a/lib/src/dio/dio_client.dart b/lib/src/dio/dio_client.dart index 9c6ac9e..229033b 100644 --- a/lib/src/dio/dio_client.dart +++ b/lib/src/dio/dio_client.dart @@ -20,7 +20,7 @@ class DioClient { this.customHeaders, this.customQuery, required this.settings}) { - if(settings.logSettings.enabled) { + if (settings.logSettings.enabled) { dio.interceptors.add( settings.logSettings.buildTalkerDioLogger(), ); @@ -78,22 +78,20 @@ class DioClient { } /// Download file from the given [url] - Future download( - String path, { - required dynamic savePath, - Map headers = const {}, - Map query = const {}, - Options? options, - bool attachCustomHeaders = true, - bool attachCustomQuery = true, - CancelToken? cancelToken, - ProgressCallback? onReceiveProgress, - bool deleteOnError = true, - String lengthHeader = Headers.contentLengthHeader, - Object? data, - PlayxNetworkLoggerSettings? logSettings, - FileAccessMode fileAccessMode =FileAccessMode.write - }) async { + Future download(String path, + {required dynamic savePath, + Map headers = const {}, + Map query = const {}, + Options? options, + bool attachCustomHeaders = true, + bool attachCustomQuery = true, + CancelToken? cancelToken, + ProgressCallback? onReceiveProgress, + bool deleteOnError = true, + String lengthHeader = Headers.contentLengthHeader, + Object? data, + PlayxNetworkLoggerSettings? logSettings, + FileAccessMode fileAccessMode = FileAccessMode.write}) async { return _getDioInstance(logSettings: logSettings).download( path, savePath, @@ -110,7 +108,7 @@ class DioClient { ...headers, }, ), - fileAccessMode:fileAccessMode, + fileAccessMode: fileAccessMode, cancelToken: cancelToken, onReceiveProgress: onReceiveProgress, deleteOnError: deleteOnError, diff --git a/lib/src/handler/api_handler.dart b/lib/src/handler/api_handler.dart index f0d9885..39f0a78 100644 --- a/lib/src/handler/api_handler.dart +++ b/lib/src/handler/api_handler.dart @@ -28,7 +28,8 @@ class ApiHandler { bool buildShouldShowApiErrors(PlayxNetworkClientSettings? settings) => (settings ?? this.settings).shouldShowApiErrors; - bool attachLogSettings(PlayxNetworkClientSettings? settings) => (settings ?? this.settings).logSettings.enabled ; + bool attachLogSettings(PlayxNetworkClientSettings? settings) => + (settings ?? this.settings).logSettings.enabled; List buildUnauthorizedRequestCodes( PlayxNetworkClientSettings? settings) => @@ -144,10 +145,9 @@ class ApiHandler { response: response, shouldHandleUnauthorizedRequest: shouldHandleUnauthorizedRequest); _printError( - header: 'Playx Network Error :', - text: exception.errorMessage, - error: exception - ); + header: 'Playx Network Error :', + text: exception.errorMessage, + error: exception); return NetworkResult.error(exception); } else { if (isResponseBlank(response) ?? true) { @@ -226,7 +226,7 @@ class ApiHandler { } catch (e, s) { _printError( header: 'Playx Network Error :', - error: e, + error: e, stackTrace: s, ); return NetworkResult.error(UnexpectedErrorException( @@ -427,23 +427,23 @@ class ApiHandler { void _printError( {String? header, String? text, - Object? error, - dynamic stackTrace, + Object? error, + dynamic stackTrace, PlayxNetworkClientSettings? settings}) { final bool attachLogs = attachLogSettings(settings); - if(attachLogs){ - logger.e(text,error: error,stackTrace: stackTrace ); + if (attachLogs) { + logger.e(text, error: error, stackTrace: stackTrace); } } - static NetworkResult unableToProcessException({ dynamic e, dynamic s, required String exceptionMessage, bool shouldShowApiErrors = false, }) { - PlayxLogger.getLogger('Playx Network')?.e(exceptionMessage,error: e,stackTrace: s ); + PlayxLogger.getLogger('Playx Network') + ?.e(exceptionMessage, error: e, stackTrace: s); return NetworkResult.error( UnableToProcessException( errorMessage: exceptionMessage, diff --git a/lib/src/models/exceptions/network_exception.dart b/lib/src/models/exceptions/network_exception.dart index 4346aea..f140303 100644 --- a/lib/src/models/exceptions/network_exception.dart +++ b/lib/src/models/exceptions/network_exception.dart @@ -1,8 +1,7 @@ - import 'package:playx_network/playx_network.dart'; /// Base class for handling API errors and providing suitable error messages. -sealed class NetworkException implements Exception{ +sealed class NetworkException implements Exception { /// General error message. final String errorMessage; diff --git a/lib/src/models/logger/logger_settings.dart b/lib/src/models/logger/logger_settings.dart index afce82d..fcd2550 100644 --- a/lib/src/models/logger/logger_settings.dart +++ b/lib/src/models/logger/logger_settings.dart @@ -4,8 +4,7 @@ import 'package:playx_core/playx_core.dart'; import 'package:talker_dio_logger/talker_dio_logger.dart'; /// Logger settings used to customize what should be logged by the application when performing a request. -class PlayxNetworkLoggerSettings extends Equatable{ - +class PlayxNetworkLoggerSettings extends Equatable { // Print Dio logger if true final bool enabled; @@ -42,7 +41,6 @@ class PlayxNetworkLoggerSettings extends Equatable{ /// Print [request.extra] if true final bool printRequestExtra; - /// For request filtering. /// You can add your custom logic to log only specific HTTP requests [RequestOptions]. final bool Function(RequestOptions requestOptions)? requestFilter; @@ -59,110 +57,104 @@ class PlayxNetworkLoggerSettings extends Equatable{ /// Case insensitive final Set hiddenHeaders; - const PlayxNetworkLoggerSettings( - { - this.enabled = kDebugMode, - this.printResponseData = true, - this.printResponseHeaders = false, - this.printResponseMessage = true, - this.printResponseRedirects = false, - this.printResponseTime = false, - this.printErrorData = true, - this.printErrorHeaders = true, - this.printErrorMessage = true, - this.printRequestData = true, - this.printRequestHeaders = true, - this.printRequestExtra = false, - this.hiddenHeaders = const {}, - this.requestFilter, - this.responseFilter, - this.errorFilter, - }); + const PlayxNetworkLoggerSettings({ + this.enabled = kDebugMode, + this.printResponseData = true, + this.printResponseHeaders = false, + this.printResponseMessage = true, + this.printResponseRedirects = false, + this.printResponseTime = false, + this.printErrorData = true, + this.printErrorHeaders = true, + this.printErrorMessage = true, + this.printRequestData = true, + this.printRequestHeaders = true, + this.printRequestExtra = false, + this.hiddenHeaders = const {}, + this.requestFilter, + this.responseFilter, + this.errorFilter, + }); TalkerDioLogger buildTalkerDioLogger() { return TalkerDioLogger( - settings: TalkerDioLoggerSettings( - enabled: enabled, - printResponseData: printResponseData, - printResponseHeaders: printResponseHeaders, - printResponseMessage: printResponseMessage, - printResponseRedirects: printResponseRedirects, - printResponseTime: printResponseTime, - printErrorData: printErrorData, - printErrorHeaders: printErrorHeaders, - printErrorMessage: printErrorMessage, - printRequestData: printRequestData, - printRequestHeaders: printRequestHeaders, - printRequestExtra: printRequestExtra, - requestFilter: requestFilter, - responseFilter: responseFilter, - errorFilter: errorFilter, - hiddenHeaders: hiddenHeaders, - ) - ); + settings: TalkerDioLoggerSettings( + enabled: enabled, + printResponseData: printResponseData, + printResponseHeaders: printResponseHeaders, + printResponseMessage: printResponseMessage, + printResponseRedirects: printResponseRedirects, + printResponseTime: printResponseTime, + printErrorData: printErrorData, + printErrorHeaders: printErrorHeaders, + printErrorMessage: printErrorMessage, + printRequestData: printRequestData, + printRequestHeaders: printRequestHeaders, + printRequestExtra: printRequestExtra, + requestFilter: requestFilter, + responseFilter: responseFilter, + errorFilter: errorFilter, + hiddenHeaders: hiddenHeaders, + )); } - PlayxNetworkLoggerSettings copyWith({ - bool? enabled, - bool? printResponseData, - bool? printResponseHeaders, - bool? printResponseMessage, - bool? printResponseRedirects, - bool? printResponseTime, - bool? printErrorData, - bool? printErrorHeaders, - bool? printErrorMessage, - bool? printRequestData, - bool? printRequestHeaders, - bool? printRequestExtra, - bool Function(RequestOptions requestOptions)? requestFilter, - bool Function(Response response)? responseFilter, - bool Function(DioException response)? errorFilter, - Set? hiddenHeaders - }) { + PlayxNetworkLoggerSettings copyWith( + {bool? enabled, + bool? printResponseData, + bool? printResponseHeaders, + bool? printResponseMessage, + bool? printResponseRedirects, + bool? printResponseTime, + bool? printErrorData, + bool? printErrorHeaders, + bool? printErrorMessage, + bool? printRequestData, + bool? printRequestHeaders, + bool? printRequestExtra, + bool Function(RequestOptions requestOptions)? requestFilter, + bool Function(Response response)? responseFilter, + bool Function(DioException response)? errorFilter, + Set? hiddenHeaders}) { return PlayxNetworkLoggerSettings( - enabled: enabled ?? this.enabled, - printResponseData: printResponseData ?? this.printResponseData, - printResponseHeaders: printResponseHeaders ?? this.printResponseHeaders, - printResponseMessage: printResponseMessage ?? this.printResponseMessage, - printResponseRedirects: printResponseRedirects ?? this.printResponseRedirects, - printResponseTime: printResponseTime ?? this.printResponseTime, - printErrorData: printErrorData ?? this.printErrorData, - printErrorHeaders: printErrorHeaders ?? this.printErrorHeaders, - printErrorMessage: printErrorMessage ?? this.printErrorMessage, - printRequestData: printRequestData ?? this.printRequestData, - printRequestHeaders: printRequestHeaders ?? this.printRequestHeaders, - printRequestExtra: printRequestExtra ?? this.printRequestExtra, - requestFilter: requestFilter ?? this.requestFilter, - responseFilter: responseFilter ?? this.responseFilter, - errorFilter: errorFilter ?? this.errorFilter, - hiddenHeaders: hiddenHeaders ?? this.hiddenHeaders - ); + enabled: enabled ?? this.enabled, + printResponseData: printResponseData ?? this.printResponseData, + printResponseHeaders: printResponseHeaders ?? this.printResponseHeaders, + printResponseMessage: printResponseMessage ?? this.printResponseMessage, + printResponseRedirects: + printResponseRedirects ?? this.printResponseRedirects, + printResponseTime: printResponseTime ?? this.printResponseTime, + printErrorData: printErrorData ?? this.printErrorData, + printErrorHeaders: printErrorHeaders ?? this.printErrorHeaders, + printErrorMessage: printErrorMessage ?? this.printErrorMessage, + printRequestData: printRequestData ?? this.printRequestData, + printRequestHeaders: printRequestHeaders ?? this.printRequestHeaders, + printRequestExtra: printRequestExtra ?? this.printRequestExtra, + requestFilter: requestFilter ?? this.requestFilter, + responseFilter: responseFilter ?? this.responseFilter, + errorFilter: errorFilter ?? this.errorFilter, + hiddenHeaders: hiddenHeaders ?? this.hiddenHeaders); } - - @override List get props => [ - enabled, - printResponseData, - printResponseHeaders, - printResponseMessage, - printResponseRedirects, - printResponseTime, - printErrorData, - printErrorHeaders, - printErrorMessage, - printRequestData, - printRequestHeaders, - printRequestExtra, - requestFilter, - responseFilter, - errorFilter, - hiddenHeaders - ]; + enabled, + printResponseData, + printResponseHeaders, + printResponseMessage, + printResponseRedirects, + printResponseTime, + printErrorData, + printErrorHeaders, + printErrorMessage, + printRequestData, + printRequestHeaders, + printRequestExtra, + requestFilter, + responseFilter, + errorFilter, + hiddenHeaders + ]; @override bool get stringify => true; - } diff --git a/lib/src/models/network_result.dart b/lib/src/models/network_result.dart index 51b847a..6a168b4 100644 --- a/lib/src/models/network_result.dart +++ b/lib/src/models/network_result.dart @@ -42,11 +42,12 @@ sealed class NetworkResult { bool get isError => this is NetworkError; /// Retrieves the success data if available, otherwise `null`. - T? get data => (this is NetworkSuccess) ? (this as NetworkSuccess).data : null; + T? get data => + (this is NetworkSuccess) ? (this as NetworkSuccess).data : null; /// Retrieves the error if the request failed, otherwise `null`. - NetworkException? get error => (this is NetworkError) ? (this as NetworkError).error : null; - + NetworkException? get error => + (this is NetworkError) ? (this as NetworkError).error : null; /// Performs an action based on whether the network call was successful or not. NetworkResult when({ @@ -86,7 +87,6 @@ sealed class NetworkResult { }; } - /// Maps the success case to another type asynchronously, preserving the error case. FutureOr> mapDataAsync({ required Mapper> mapper, @@ -108,7 +108,6 @@ sealed class NetworkResult { }; } - /// Maps the network request whether it's success or error to your desired model asynchronously in an isolate. /// /// [mapper] is the function that maps the data to your desired model. @@ -129,7 +128,9 @@ sealed class NetworkResult { return ApiHandler.unableToProcessException( e: e, s: s, - exceptionMessage: exceptionMessage ?? _exceptionMessages?.unableToProcess ?? 'unableToProcess', + exceptionMessage: exceptionMessage ?? + _exceptionMessages?.unableToProcess ?? + 'unableToProcess', ); } } @@ -156,8 +157,8 @@ sealed class NetworkResult { ); } - ExceptionMessage? get _exceptionMessages => - GetIt.instance.isRegistered(instanceName: 'exception_messages') - ? GetIt.instance.get(instanceName: 'exception_messages') - : null; + ExceptionMessage? get _exceptionMessages => GetIt.instance + .isRegistered(instanceName: 'exception_messages') + ? GetIt.instance.get(instanceName: 'exception_messages') + : null; } diff --git a/lib/src/playx_network_client.dart b/lib/src/playx_network_client.dart index 82e5866..388f9b4 100644 --- a/lib/src/playx_network_client.dart +++ b/lib/src/playx_network_client.dart @@ -1,8 +1,6 @@ import 'dart:async'; -import 'dart:developer'; import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart'; import 'package:playx_core/playx_core.dart'; import 'dio/dio_client.dart'; @@ -50,10 +48,11 @@ class PlayxNetworkClient { customQuery: customQuery, settings: settings, ); - final logger= PlayxLogger.hasLogger('Playx Network') ? - PlayxLogger.getLogger('Playx Network')! : - PlayxLogger.initLogger(name: 'Playx Network',); - + final logger = PlayxLogger.hasLogger('Playx Network') + ? PlayxLogger.getLogger('Playx Network')! + : PlayxLogger.initLogger( + name: 'Playx Network', + ); _apiHandler = ApiHandler( errorMapper: errorMapper ?? ApiHandler.getErrorMessageFromResponse,