Skip to content

Commit fa03a02

Browse files
authored
Reza/accept_null_request_json (#314)
1 parent 9c4c80f commit fa03a02

File tree

14 files changed

+52
-12
lines changed

14 files changed

+52
-12
lines changed

example/lib/blocs/active_symbols/active_symbols_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ class ActiveSymbolsBloc extends Bloc<ActiveSymbolsEvent, ActiveSymbolsState> {
5151
Future<ActiveSymbolsResponse> _fetchActiveSymbols() async =>
5252
ActiveSymbolsResponse.fetchActiveSymbols(const ActiveSymbolsRequest(
5353
activeSymbols: 'brief',
54-
productType: 'basic',
54+
productType: 'basic', landingCompany: '',
5555
));
5656
}

example/lib/blocs/available_contracts/available_contracts_bloc.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:flutter_deriv_api/basic_api/generated/api.dart';
99
import '../active_symbols/active_symbols_bloc.dart';
1010

1111
part 'available_contracts_event.dart';
12+
1213
part 'available_contracts_state.dart';
1314

1415
/// AvailableContractsBloc
@@ -75,5 +76,6 @@ class AvailableContractsBloc
7576
) async =>
7677
ContractsForResponse.fetchContractsForSymbol(ContractsForRequest(
7778
contractsFor: selectedSymbol?.symbol,
79+
landingCompany: '',
7880
));
7981
}

lib/api/response/p2p_advert_create_response_result.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// ignore_for_file: prefer_single_quotes, unnecessary_import, unused_import
22

33
import 'package:equatable/equatable.dart';
4+
import 'package:flutter_deriv_api/api/exceptions/base_api_exception.dart';
45

5-
import 'package:flutter_deriv_api/api/exceptions/p2p_advert_exception.dart';
66
import 'package:flutter_deriv_api/api/models/base_exception_model.dart';
77
import 'package:flutter_deriv_api/basic_api/generated/p2p_advert_create_receive.dart';
88
import 'package:flutter_deriv_api/basic_api/generated/p2p_advert_create_send.dart';
@@ -221,6 +221,7 @@ enum VisibilityStatusItemEnum {
221221
/// advertiser_temp_ban.
222222
advertiserTempBan,
223223
}
224+
224225
/// P2p advert create model class.
225226
abstract class P2pAdvertCreateModel {
226227
/// Initializes P2p advert create model class .
@@ -720,6 +721,7 @@ class P2pAdvertCreate extends P2pAdvertCreateModel {
720721
visibilityStatus: visibilityStatus ?? this.visibilityStatus,
721722
);
722723
}
724+
723725
/// Advertiser details model class.
724726
abstract class AdvertiserDetailsModel {
725727
/// Initializes Advertiser details model class .
@@ -861,6 +863,7 @@ class AdvertiserDetails extends AdvertiserDetailsModel {
861863
totalCompletionRate: totalCompletionRate ?? this.totalCompletionRate,
862864
);
863865
}
866+
864867
/// Payment method details property model class.
865868
abstract class PaymentMethodDetailsPropertyModel {
866869
/// Initializes Payment method details property model class .
@@ -989,6 +992,7 @@ class PaymentMethodDetailsProperty extends PaymentMethodDetailsPropertyModel {
989992
usedByOrders: usedByOrders ?? this.usedByOrders,
990993
);
991994
}
995+
992996
/// Fields property model class.
993997
abstract class FieldsPropertyModel {
994998
/// Initializes Fields property model class .

lib/api/response/p2p_advert_list_response_result.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// ignore_for_file: prefer_single_quotes, unnecessary_import, unused_import
22

33
import 'package:equatable/equatable.dart';
4+
import 'package:flutter_deriv_api/api/exceptions/base_api_exception.dart';
45

5-
import 'package:flutter_deriv_api/api/exceptions/p2p_advert_exception.dart';
66
import 'package:flutter_deriv_api/api/models/base_exception_model.dart';
77
import 'package:flutter_deriv_api/basic_api/generated/p2p_advert_list_receive.dart';
88
import 'package:flutter_deriv_api/basic_api/generated/p2p_advert_list_send.dart';

lib/services/connection/api_manager/base_api.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ 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>({
37+
required Request request,
38+
List<String> nullableKeys = const <String>[],
39+
});
3740

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

lib/services/connection/api_manager/binary_api.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,11 @@ 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, List<String> nullableKeys = const <String>[],}) async {
143144
final Response response = await (_callManager ??= CallManager(this))(
144145
request: request,
146+
nullableKeys: nullableKeys,
145147
);
146148

147149
if (response is T) {

lib/services/connection/api_manager/mock_api.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,10 @@ 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>({
134+
required Request request,
135+
List<String> nullableKeys = const <String>[],
136+
}) =>
134137
_getFutureResponse<T>(request);
135138

136139
@override

lib/services/connection/call_manager/base_call_manager.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ 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({
47+
required Request request,
48+
List<String> nullableKeys = const <String>[],
49+
});
4750

4851
/// Handle call [response] that comes from server
4952
void handleResponse({
@@ -62,12 +65,14 @@ abstract class BaseCallManager<T> {
6265
Future<Response> addToChannel({
6366
required Request request,
6467
SubscriptionStream<Response>? subscriptionStream,
68+
List<String> nullableKeys = const <String>[],
6569
}) {
6670
final Completer<Response> responseCompleter = Completer<Response>();
6771
final Request requestWithId = request.copyWith(reqId: _getRequestId());
6872
final Map<String, dynamic> prepareRequest = _prepareRequest(
6973
request: requestWithId,
7074
isSubscription: subscriptionStream != null,
75+
nullableKeys: nullableKeys,
7176
);
7277

7378
_addPendingRequest(
@@ -104,9 +109,11 @@ abstract class BaseCallManager<T> {
104109
Map<String, dynamic> _prepareRequest({
105110
required Request request,
106111
required bool isSubscription,
112+
List<String> nullableKeys = const <String>[],
107113
}) {
108114
final Map<String, dynamic> result = request.toJson()
109-
..removeWhere((String key, dynamic value) => value == null);
115+
..removeWhere((String key, dynamic value) =>
116+
value == null && !(nullableKeys.contains(key)));
110117

111118
if (isSubscription) {
112119
result.putIfAbsent('subscribe', () => 1);

lib/services/connection/call_manager/call_manager.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ 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,
34+
List<String> nullableKeys = const <String>[],
35+
}) async =>
36+
addToChannel(request: request, nullableKeys: nullableKeys);
3437
}

lib/services/connection/call_manager/subscription_manager.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class SubscriptionManager extends BaseCallManager<Stream<Response>> {
5555
required Request request,
5656
int cacheSize = 0,
5757
RequestCompareFunction? comparePredicate,
58+
List<String> nullableKeys = const <String>[],
5859
}) {
5960
assert(cacheSize >= 0);
6061

@@ -78,6 +79,7 @@ class SubscriptionManager extends BaseCallManager<Stream<Response>> {
7879
addToChannel(
7980
request: request,
8081
subscriptionStream: subscriptionStream,
82+
nullableKeys: nullableKeys,
8183
);
8284

8385
return subscriptionStream.stream;

test/api/account/authorize/authorize_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ void main() {
2020
const AuthorizeRequest(
2121
authorize: 'sample_token_334da73d',
2222
addToLoginHistory: true,
23+
tokens: [],
2324
),
2425
);
2526

test/api/account/new_account_wallet/new_account_wallet_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ void main() {
1717
request: const NewAccountWalletRequest(
1818
accountType: 'crypto',
1919
currency: 'BTC',
20+
acceptRisk: null,
21+
financialAssessment: {},
22+
salutation: '',
23+
taxIdentificationNumber: '',
24+
taxResidence: '',
2025
),
2126
);
2227

test/api/common/active_symbols/active_symbols_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ void main() {
1616
const ActiveSymbolsRequest(
1717
activeSymbols: 'brief',
1818
productType: 'basic',
19+
landingCompany: '',
1920
),
2021
);
2122

test/services/call_manager/base_call_manager_test.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ class MockCallManager extends BaseCallManager<MockResponse> {
5050
MockCallManager(BaseAPI api) : super(api);
5151

5252
@override
53-
MockResponse call({required Request request}) {
53+
MockResponse call({
54+
required Request request,
55+
List<String> nullableKeys = const <String>[],
56+
}) {
5457
throw UnimplementedError();
5558
}
5659
}
@@ -60,7 +63,11 @@ class MockAPI implements BaseAPI {
6063
void addToChannel(Map<String, dynamic> request) {}
6164

6265
@override
63-
Future<T> call<T>({required Request request}) => throw UnimplementedError();
66+
Future<T> call<T>({
67+
required Request request,
68+
List<String> nullableKeys = const <String>[],
69+
}) =>
70+
throw UnimplementedError();
6471

6572
@override
6673
Future<void> connect(

0 commit comments

Comments
 (0)