Skip to content

Commit e0e2efb

Browse files
committed
support authorize call in Isolate
1 parent c63da9b commit e0e2efb

File tree

4 files changed

+44
-14
lines changed

4 files changed

+44
-14
lines changed

lib/api/response/authorize_response_result.dart

+5-14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:flutter_deriv_api/basic_api/generated/authorize_send.dart';
99
import 'package:flutter_deriv_api/helpers/helpers.dart';
1010
import 'package:flutter_deriv_api/services/connection/api_manager/base_api.dart';
1111
import 'package:deriv_dependency_injector/dependency_injector.dart';
12+
import 'package:flutter_deriv_api/services/connection/api_manager/binary_api.dart';
1213

1314
/// Authorize response model class.
1415
abstract class AuthorizeResponseModel {
@@ -48,27 +49,17 @@ class AuthorizeResponse extends AuthorizeResponseModel {
4849
return resultMap;
4950
}
5051

51-
static final BaseAPI _api = Injector()<BaseAPI>();
52+
static final IsolateWrappingAPI _api =
53+
Injector()<BaseAPI>() as IsolateWrappingAPI;
5254

5355
/// Authorizes current WebSocket session to act on behalf of the owner of a given token.
5456
///
5557
/// For parameters information refer to [AuthorizeRequest].
5658
/// Throws an [BaseAPIException] if API response contains an error.
5759
static Future<AuthorizeReceive> authorizeMethodRaw(
5860
AuthorizeRequest request,
59-
) async {
60-
final AuthorizeReceive response = await _api.call(
61-
request: request,
62-
);
63-
64-
checkException(
65-
response: response,
66-
exceptionCreator: ({BaseExceptionModel? baseExceptionModel}) =>
67-
BaseAPIException(baseExceptionModel: baseExceptionModel),
68-
);
69-
70-
return response;
71-
}
61+
) async =>
62+
_api.authorize(request);
7263

7364
/// Authorizes current WebSocket session to act on behalf of the owner of a given token.
7465
///

lib/services/connection/api_manager/binary_api.dart

+20
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:flutter_deriv_api/api/exceptions/base_api_exception.dart';
1111
import 'package:flutter_deriv_api/api/manually/tick.dart';
1212
import 'package:flutter_deriv_api/api/models/base_exception_model.dart';
1313
import 'package:flutter_deriv_api/api/response/active_symbols_response_result.dart';
14+
import 'package:flutter_deriv_api/api/response/authorize_response_result.dart';
1415
import 'package:flutter_deriv_api/api/response/ticks_response_result.dart';
1516
import 'package:flutter_deriv_api/basic_api/generated/active_symbols_receive.dart';
1617
import 'package:flutter_deriv_api/basic_api/generated/active_symbols_send.dart';
@@ -320,6 +321,8 @@ class IsolateWrappingAPI extends BaseAPI {
320321
if (message.isSubscription) {
321322
_pendingSubscriptions[message.eventId]?.add(message.response);
322323
} else {
324+
print(
325+
'#### Retrieved response ${(message.response as Response).msgType}');
323326
final Completer<dynamic>? completer = _pendingEvents[message.eventId];
324327
if (completer != null) {
325328
completer.complete(message.response);
@@ -362,6 +365,13 @@ class IsolateWrappingAPI extends BaseAPI {
362365
case CustomEvent.ticks:
363366
_pendingSubscriptions[message.eventId]?.add(message.data);
364367
case CustomEvent.proposalOpenContract:
368+
case CustomEvent.authorize:
369+
final AuthorizeReceive authorizeReceive =
370+
message.data as AuthorizeReceive;
371+
_pendingEvents[message.eventId]?.complete(authorizeReceive);
372+
case CustomEvent.landingCompany:
373+
case CustomEvent.statesList:
374+
case CustomEvent.residenceList:
365375
}
366376
}
367377

@@ -510,4 +520,14 @@ class IsolateWrappingAPI extends BaseAPI {
510520
Future<void> disconnect() async {
511521
_isolateSendPort?.send(_DisconnectEvent(eventId: _getEventId));
512522
}
523+
524+
Future<AuthorizeReceive> authorize(AuthorizeRequest request) {
525+
final event = CustomIsolateEvent<AuthorizeReceive>(
526+
request: request,
527+
eventId: _getEventId,
528+
event: CustomEvent.authorize,
529+
);
530+
531+
return _callEvent(event);
532+
}
513533
}

lib/services/connection/api_manager/isolate_events.dart

+4
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ class CustomIsolateEvent<T> extends _IsolateEvent {
120120

121121
enum CustomEvent {
122122
ping,
123+
authorize,
124+
landingCompany,
123125
activeSymbols,
126+
statesList,
127+
residenceList,
124128
assetIndex,
125129
balance,
126130
buy,

lib/services/connection/api_manager/isolate_task.dart

+15
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,21 @@ void _handleCustomEvent(
144144
});
145145

146146
case CustomEvent.proposalOpenContract:
147+
case CustomEvent.authorize:
148+
final AuthorizeReceive response = await api.call(
149+
request: message.request,
150+
);
151+
152+
checkException(
153+
response: response,
154+
exceptionCreator: ({BaseExceptionModel? baseExceptionModel}) =>
155+
BaseAPIException(baseExceptionModel: baseExceptionModel),
156+
);
157+
158+
sendPort.send(message.copyWith(data: response));
159+
case CustomEvent.landingCompany:
160+
case CustomEvent.statesList:
161+
case CustomEvent.residenceList:
147162
}
148163
}
149164

0 commit comments

Comments
 (0)