Skip to content

Commit 4ed4607

Browse files
committed
allow null value in requests
1 parent e23f263 commit 4ed4607

File tree

7 files changed

+20
-13
lines changed

7 files changed

+20
-13
lines changed

lib/services/connection/api_manager/base_api.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ abstract class BaseAPI {
3333
void addToChannel(Map<String, dynamic> request);
3434

3535
/// Calls a API method by [request].
36-
Future<T> call<T>({required Request request});
36+
Future<T> call<T>({required Request request, bool acceptNullValue = false});
3737

3838
/// Subscribe to a [request].
3939
/// [comparePredicate] indicates compare condition for current [request] and [pendingRequest]s

lib/services/connection/api_manager/binary_api.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ class BinaryAPI extends BaseAPI {
139139
}
140140

141141
@override
142-
Future<T> call<T>({required Request request}) async {
142+
Future<T> call<T>(
143+
{required Request request, bool acceptNullValue = false}) async {
143144
final Response response = await (_callManager ??= CallManager(this))(
144145
request: request,
145146
);

lib/services/connection/api_manager/mock_api.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class MockAPI extends BaseAPI {
130130
void addToChannel(Map<String, dynamic> request) {}
131131

132132
@override
133-
Future<T> call<T>({required Request request}) =>
133+
Future<T> call<T>({required Request request, bool acceptNullValue = false}) =>
134134
_getFutureResponse<T>(request);
135135

136136
@override

lib/services/connection/call_manager/base_call_manager.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ abstract class BaseCallManager<T> {
4343
bool contains(int? requestId) => _pendingRequests.containsKey(requestId);
4444

4545
/// Calls a API method by [request]
46-
T call({required Request request});
46+
T call({required Request request, bool acceptNullValue = false});
4747

4848
/// Handle call [response] that comes from server
4949
void handleResponse({
@@ -62,12 +62,14 @@ abstract class BaseCallManager<T> {
6262
Future<Response> addToChannel({
6363
required Request request,
6464
SubscriptionStream<Response>? subscriptionStream,
65+
bool acceptNullValue = false,
6566
}) {
6667
final Completer<Response> responseCompleter = Completer<Response>();
6768
final Request requestWithId = request.copyWith(reqId: _getRequestId());
6869
final Map<String, dynamic> prepareRequest = _prepareRequest(
6970
request: requestWithId,
7071
isSubscription: subscriptionStream != null,
72+
acceptNullValue: acceptNullValue,
7173
);
7274

7375
_addPendingRequest(
@@ -104,6 +106,7 @@ abstract class BaseCallManager<T> {
104106
Map<String, dynamic> _prepareRequest({
105107
required Request request,
106108
required bool isSubscription,
109+
bool acceptNullValue = false,
107110
}) {
108111
final Map<String, dynamic> result = request.toJson()
109112
..removeWhere((String key, dynamic value) => value == null);

lib/services/connection/call_manager/call_manager.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class CallManager extends BaseCallManager<Future<Response>> {
2929
}
3030

3131
@override
32-
Future<Response> call({required Request request}) async =>
33-
addToChannel(request: request);
32+
Future<Response> call(
33+
{required Request request, bool acceptNullValue = false}) async =>
34+
addToChannel(request: request, acceptNullValue: acceptNullValue);
3435
}

lib/services/connection/call_manager/subscription_manager.dart

+6-5
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ class SubscriptionManager extends BaseCallManager<Stream<Response>> {
5151
}
5252

5353
@override
54-
Stream<Response> call({
55-
required Request request,
56-
int cacheSize = 0,
57-
RequestCompareFunction? comparePredicate,
58-
}) {
54+
Stream<Response> call(
55+
{required Request request,
56+
int cacheSize = 0,
57+
RequestCompareFunction? comparePredicate,
58+
bool acceptNullValue = false}) {
5959
assert(cacheSize >= 0);
6060

6161
final PendingRequest<Response>? pendingRequest = _getPendingRequest(
@@ -78,6 +78,7 @@ class SubscriptionManager extends BaseCallManager<Stream<Response>> {
7878
addToChannel(
7979
request: request,
8080
subscriptionStream: subscriptionStream,
81+
acceptNullValue: acceptNullValue,
8182
);
8283

8384
return subscriptionStream.stream;

test/services/call_manager/base_call_manager_test.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class MockCallManager extends BaseCallManager<MockResponse> {
5050
MockCallManager(BaseAPI api) : super(api);
5151

5252
@override
53-
MockResponse call({required Request request}) {
53+
MockResponse call({required Request request, bool acceptNullValue = false}) {
5454
throw UnimplementedError();
5555
}
5656
}
@@ -60,7 +60,8 @@ class MockAPI implements BaseAPI {
6060
void addToChannel(Map<String, dynamic> request) {}
6161

6262
@override
63-
Future<T> call<T>({required Request request}) => throw UnimplementedError();
63+
Future<T> call<T>({required Request request, bool acceptNullValue = false}) =>
64+
throw UnimplementedError();
6465

6566
@override
6667
Future<void> connect(

0 commit comments

Comments
 (0)