Skip to content

Commit c264719

Browse files
committed
Squashed commit of the following:
commit 8cbb46c Merge: ddc27f4 2985260 Author: hamed-deriv <[email protected]> Date: Thu Aug 3 12:04:21 2023 +0800 Merge branch 'dev' into flutter-version-3 commit 2985260 Author: Osama Ghazal <[email protected]> Date: Thu Aug 3 12:03:32 2023 +0800 osama/cancel_old_timer_to_avoid_redundant api_calls_from_old_timers (deriv-com#272) - cancel old timer to avoid redundant api calls from old timers commit 213c704 Author: Ahrar <[email protected]> Date: Wed Jul 5 17:22:12 2023 +0800 ahrar/fix_reconnect_recovery (deriv-com#263) - fix reconnect recovery commit 3eba7ed Author: Ali Akbar <[email protected]> Date: Wed Jul 5 13:20:38 2023 +0400 aliakbar/added_p2p_ping_api_call (deriv-com#267) - added p2p ping api call commit ddc27f4 Merge: 11a07ac 6deb910 Author: hamed-deriv <[email protected]> Date: Fri Jun 23 11:20:44 2023 +0800 Merge branch 'dev' into flutter-version-3 commit 6deb910 Author: Hamed Rezaee <[email protected]> Date: Fri Jun 16 11:15:28 2023 +0800 hamed/update_readme_file commit 11a07ac Author: Hamed Rezaee <[email protected]> Date: Thu Jun 15 11:35:08 2023 +0800 hamed/improve_test_coverage (deriv-com#265) - improve test coverage commit 198ac7c Author: sahani-deriv <[email protected]> Date: Mon Jun 12 09:50:21 2023 +0800 sahani/ upgrade_kotlin_version (deriv-com#266) - upgrade kotlin version commit 3db0b4a Author: Hamed Rezaee <[email protected]> Date: Thu Jun 1 15:03:25 2023 +0800 hamed/update_dependencies (deriv-com#264) - update dependencies commit 665e9a7 Merge: d0facdf f24bf41 Author: hamed-deriv <[email protected]> Date: Thu Jun 1 14:58:07 2023 +0800 Merge branch 'dev' into flutter-version-3 commit d0facdf Author: Bassam El Obeid <[email protected]> Date: Thu Jun 1 10:44:32 2023 +0400 bassam/migrate_flutter_version_to_3_10 (deriv-com#261) - migrate flutter version to 3.10.0 commit 8ba6902 Author: Bassam El Obeid <[email protected]> Date: Thu May 25 06:30:40 2023 +0400 bassam/upgrade_to_flutter_3.10.0 (deriv-com#254) - upgrade to flutter 3.10.0 commit e1544fd Merge: 9d6e570 987703e Author: hamed-deriv <[email protected]> Date: Thu May 25 10:29:30 2023 +0800 Merge branch 'dev' into flutter-version-3 commit 9d6e570 Author: sahani-deriv <[email protected]> Date: Wed Apr 19 10:10:27 2023 +0800 sahani/upgrade_deriv_api_to_flutter_version_3 (deriv-com#251) - upgrade deriv api to flutter version 3 commit fbf0ffe Merge: 8c01473 bf57f53 Author: hamed-deriv <[email protected]> Date: Thu Mar 30 11:50:42 2023 +0800 Merge branch 'dev' into flutter-version-3 commit 8c01473 Merge: ba31043 9d77e36 Author: hamed-deriv <[email protected]> Date: Mon Mar 27 17:03:08 2023 +0800 Merge branch 'dev' into flutter-version-3 commit ba31043 Merge: 6d12981 756411a Author: hamed-deriv <[email protected]> Date: Mon Mar 27 16:24:12 2023 +0800 Merge branch 'dev' into flutter-version-3 commit 6d12981 Author: naif-deriv <[email protected]> Date: Tue Feb 21 11:14:36 2023 +0400 naif/add_dart_new_features_to_code_generator (deriv-com#244) - add dart new features to the code generator
1 parent bef1387 commit c264719

File tree

283 files changed

+1428
-1178
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

283 files changed

+1428
-1178
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ dependencies:
141141
```
142142
$ git submodule init
143143
$ git submodule update --remote
144+
$ ./setup.sh
145+
$ flutter pub run build_runner build --delete-conflicting-outputs
144146
```
145147

146148
### Run the tests

analysis_options.yaml

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ analyzer:
22
exclude:
33
- lib/basic_api/generated/api.dart
44

5-
strong-mode:
6-
implicit-dynamic: false
7-
5+
language:
6+
strict-raw-types: true
7+
88
errors:
99
todo: ignore
1010
missing_required_param: warning
@@ -92,7 +92,6 @@ linter:
9292
- prefer_const_literals_to_create_immutables
9393
- prefer_constructors_over_static_methods
9494
- prefer_contains
95-
- prefer_equal_for_default_values
9695
- prefer_expression_function_bodies # https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
9796
- prefer_final_fields
9897
- prefer_final_in_for_each

android/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ group 'com.deriv.flutter_deriv_api'
22
version '1.0-SNAPSHOT'
33

44
buildscript {
5-
ext.kotlin_version = '1.3.50'
5+
ext.kotlin_version = '1.7.10'
66
repositories {
77
google()
88
jcenter()
99
}
1010

1111
dependencies {
12-
classpath 'com.android.tools.build:gradle:3.5.0'
12+
classpath 'com.android.tools.build:gradle:7.3.0'
1313
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1414
}
1515
}

android/gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
33
zipStoreBase=GRADLE_USER_HOME
44
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip

api_builder.dart

+25-18
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ class APIBuilder extends Builder {
122122
/// Initialize $classFullName.
123123
const $classFullName({
124124
${_getConstructorParameters(methodName, schema, schemaType, properties)}
125-
${_getSuperClassParameters(schemaType)},
126-
}): super(${_getSuperClassCallParameters(schemaType, methodName)},);
125+
${_getSuperClassConstructorParameters(schemaType, methodName)},
126+
});
127127
128128
${_getFromJsonMethod(classFullName, schema, schemaType, properties)}
129129
@@ -169,6 +169,7 @@ class APIBuilder extends Builder {
169169
return '${_isFieldRequired(key, schemaType, property) ? 'required ' : ''} this.${ReCase(key).camelCase}';
170170
},
171171
).join(', ');
172+
172173
return fields.isEmpty ? result : '$result , ';
173174
}
174175

@@ -380,6 +381,7 @@ class APIBuilder extends Builder {
380381
fields.map(
381382
(String key) {
382383
final String name = ReCase(key).camelCase;
384+
383385
return '$name: $name ?? this.$name';
384386
},
385387
).join(', '),
@@ -388,40 +390,45 @@ class APIBuilder extends Builder {
388390
..write('${_getSupperClassAssignments(schemaType)},);');
389391
}
390392

391-
static String _getSuperClassParameters(String? schemaType) {
393+
static String _getSuperClassParameters(String schemaType) {
392394
final Map<String, String> superClassFields =
393395
_getSuperClassFields(schemaType);
394396

395-
return superClassFields.keys
396-
.map((String key) =>
397-
'${typeMap[superClassFields[key]!]} ${ReCase(key).camelCase}')
398-
.join(', ');
397+
final Iterable<String> parameters = superClassFields.keys.map((String key) {
398+
final String type = typeMap[superClassFields[key]!] ?? 'dynamic';
399+
final String parameterName = ReCase(key).camelCase;
400+
401+
return '$type $parameterName';
402+
});
403+
404+
return parameters.join(', ');
399405
}
400406

401-
static String _getSuperClassCallParameters(
407+
static String _getSuperClassConstructorParameters(
402408
String schemaType,
403409
String methodName,
404410
) {
405-
final StringBuffer superCallParameters = StringBuffer();
411+
final Map<String, String> superClassFields =
412+
_getSuperClassFields(schemaType);
413+
final StringBuffer superClassParameters = StringBuffer();
406414

407415
if (schemaType == 'send') {
408-
superCallParameters.write('msgType: \'$methodName\',');
416+
superClassParameters.write('super.msgType = \'$methodName\', ');
409417
}
410418

411-
superCallParameters.write(_getSuperClassFields(schemaType).keys.map(
412-
(String key) {
413-
final String parameterName = ReCase(key).camelCase;
414-
return '$parameterName: $parameterName';
415-
},
416-
).join(', '));
419+
final Iterable<String> parameters = superClassFields.keys
420+
.map((String key) => 'super.${ReCase(key).camelCase}');
417421

418-
return superCallParameters.toString();
422+
superClassParameters.write(parameters.join(', '));
423+
424+
return superClassParameters.toString();
419425
}
420426

421427
static String _getSupperClassAssignments(String schemaType) =>
422428
_getSuperClassFields(schemaType).keys.map(
423429
(String key) {
424430
final String propertyName = ReCase(key).camelCase;
431+
425432
return '$propertyName: $propertyName ?? this.$propertyName';
426433
},
427434
).join(', ');
@@ -458,7 +465,7 @@ class APIBuilder extends Builder {
458465
}
459466
}
460467

461-
class GeneratedResponseJson extends Comparable<GeneratedResponseJson> {
468+
class GeneratedResponseJson implements Comparable<GeneratedResponseJson> {
462469
GeneratedResponseJson({
463470
this.msgType,
464471
this.fileName,

example/android/app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
2626
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
2727

2828
android {
29-
compileSdkVersion 28
29+
compileSdkVersion 33
3030

3131
sourceSets {
3232
main.java.srcDirs += 'src/main/kotlin'

example/android/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
buildscript {
2-
ext.kotlin_version = '1.3.50'
2+
ext.kotlin_version = '1.7.10'
33
repositories {
44
google()
55
jcenter()
66
}
77

88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.5.0'
9+
classpath 'com.android.tools.build:gradle:7.3.0'
1010
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1111
}
1212
}
@@ -26,6 +26,6 @@ subprojects {
2626
project.evaluationDependsOn(':app')
2727
}
2828

29-
task clean(type: Delete) {
29+
tasks.register("clean", Delete) {
3030
delete rootProject.buildDir
3131
}

example/android/gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip

example/lib/blocs/active_symbols/active_symbols_bloc.dart

+34-25
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,40 @@ part 'active_symbols_state.dart';
1111
/// ActiveSymbolsBloc
1212
class ActiveSymbolsBloc extends Bloc<ActiveSymbolsEvent, ActiveSymbolsState> {
1313
/// ActiveSymbolsBloc initializer
14-
ActiveSymbolsBloc() : super(ActiveSymbolsLoading());
15-
16-
@override
17-
Stream<ActiveSymbolsState> mapEventToState(ActiveSymbolsEvent event) async* {
18-
if (event is FetchActiveSymbols) {
19-
yield ActiveSymbolsLoading();
20-
21-
try {
22-
final ActiveSymbolsResponse symbols = await _fetchActiveSymbols();
23-
yield ActiveSymbolsLoaded(activeSymbols: symbols.activeSymbols!);
24-
} on ActiveSymbolsException catch (error) {
25-
yield ActiveSymbolsError(error.message);
26-
}
27-
} else if (event is SelectActiveSymbol) {
28-
if (state is ActiveSymbolsLoaded) {
29-
final ActiveSymbolsLoaded loadedState = state as ActiveSymbolsLoaded;
30-
31-
yield ActiveSymbolsLoaded(
32-
activeSymbols: loadedState.activeSymbols,
33-
selectedSymbol: loadedState.activeSymbols[event.index],
34-
);
35-
} else {
36-
yield ActiveSymbolsLoading();
37-
add(FetchActiveSymbols());
38-
}
14+
ActiveSymbolsBloc() : super(ActiveSymbolsLoading()) {
15+
on<FetchActiveSymbols>(
16+
(FetchActiveSymbols event, Emitter<ActiveSymbolsState> emit) =>
17+
_handleFetchActiveSymbols(event, emit));
18+
19+
on<SelectActiveSymbol>(
20+
(SelectActiveSymbol event, Emitter<ActiveSymbolsState> emit) =>
21+
_handleSelectActiveSymbol(event, emit));
22+
}
23+
24+
Future<void> _handleFetchActiveSymbols(
25+
FetchActiveSymbols event, Emitter<ActiveSymbolsState> emit) async {
26+
emit(ActiveSymbolsLoading());
27+
28+
try {
29+
final ActiveSymbolsResponse symbols = await _fetchActiveSymbols();
30+
emit(ActiveSymbolsLoaded(activeSymbols: symbols.activeSymbols!));
31+
} on BaseAPIException catch (error) {
32+
emit(ActiveSymbolsError(error.message));
33+
}
34+
}
35+
36+
Future<void> _handleSelectActiveSymbol(
37+
SelectActiveSymbol event, Emitter<ActiveSymbolsState> emit) async {
38+
if (state is ActiveSymbolsLoaded) {
39+
final ActiveSymbolsLoaded loadedState = state as ActiveSymbolsLoaded;
40+
41+
emit(ActiveSymbolsLoaded(
42+
activeSymbols: loadedState.activeSymbols,
43+
selectedSymbol: loadedState.activeSymbols[event.index],
44+
));
45+
} else {
46+
emit(ActiveSymbolsLoading());
47+
add(FetchActiveSymbols());
3948
}
4049
}
4150

example/lib/blocs/available_contracts/available_contracts_bloc.dart

+36-25
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,47 @@ class AvailableContractsBloc
2626
);
2727
}
2828
});
29+
30+
on<FetchAvailableContracts>((FetchAvailableContracts event,
31+
Emitter<AvailableContractsState> emit) =>
32+
_handleFetchAvailableContracts(event, emit));
33+
34+
on<SelectContract>(
35+
(SelectContract event, Emitter<AvailableContractsState> emit) =>
36+
_handleSelectContract(event, emit));
2937
}
3038

31-
@override
32-
Stream<AvailableContractsState> mapEventToState(
33-
AvailableContractsEvent event,
34-
) async* {
35-
if (event is FetchAvailableContracts) {
36-
yield AvailableContractsLoading();
39+
Future<void> _handleFetchAvailableContracts(
40+
FetchAvailableContracts event,
41+
Emitter<AvailableContractsState> emit,
42+
) async {
43+
emit(AvailableContractsLoading());
3744

38-
try {
39-
final ContractsForResponse contracts =
40-
await _fetchAvailableContracts(event.activeSymbol);
45+
try {
46+
final ContractsForResponse contracts =
47+
await _fetchAvailableContracts(event.activeSymbol);
4148

42-
yield AvailableContractsLoaded(contracts: contracts.contractsFor!);
43-
} on ContractsForSymbolException catch (error) {
44-
yield AvailableContractsError(error.message);
45-
}
46-
} else if (event is SelectContract) {
47-
if (state is AvailableContractsLoaded) {
48-
final AvailableContractsLoaded loadedState =
49-
state as AvailableContractsLoaded;
49+
emit(AvailableContractsLoaded(contracts: contracts.contractsFor!));
50+
} on BaseAPIException catch (error) {
51+
emit(AvailableContractsError(error.message));
52+
}
53+
}
5054

51-
yield AvailableContractsLoaded(
52-
contracts: loadedState.contracts,
53-
selectedContract: loadedState.contracts.available[event.index],
54-
);
55-
} else {
56-
yield AvailableContractsLoading();
57-
add(FetchAvailableContracts());
58-
}
55+
void _handleSelectContract(
56+
SelectContract event,
57+
Emitter<AvailableContractsState> emit,
58+
) {
59+
if (state is AvailableContractsLoaded) {
60+
final AvailableContractsLoaded loadedState =
61+
state as AvailableContractsLoaded;
62+
63+
emit(AvailableContractsLoaded(
64+
contracts: loadedState.contracts,
65+
selectedContract: loadedState.contracts.available[event.index],
66+
));
67+
} else {
68+
emit(AvailableContractsLoading());
69+
add(FetchAvailableContracts());
5970
}
6071
}
6172

example/lib/blocs/price_proposal/price_proposal_bloc.dart

+23-18
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,33 @@ class PriceProposalBloc extends Bloc<PriceProposalEvent, PriceProposalState> {
2222
add(SubscribeProposal(state.selectedContract));
2323
}
2424
});
25+
26+
on<SubscribeProposal>(
27+
(SubscribeProposal event, Emitter<PriceProposalState> emit) =>
28+
_handleSubscribeProposal(event, emit));
29+
30+
on<YieldProposalLoaded>(
31+
(YieldProposalLoaded event, Emitter<PriceProposalState> emit) =>
32+
emit(PriceProposalLoaded(event.proposal.proposal)));
33+
34+
on<YieldError>((YieldError event, Emitter<PriceProposalState> emit) =>
35+
emit(PriceProposalError(event.message)));
2536
}
2637

27-
@override
28-
Stream<PriceProposalState> mapEventToState(
29-
PriceProposalEvent event,
30-
) async* {
31-
if (event is SubscribeProposal) {
32-
yield PriceProposalLoading();
38+
Future<void> _handleSubscribeProposal(
39+
SubscribeProposal event,
40+
Emitter<PriceProposalState> emit,
41+
) async {
42+
emit(PriceProposalLoading());
3343

34-
await _unsubscribeProposal();
44+
await _unsubscribeProposal();
3545

36-
_subscribeProposal(event)
37-
.handleError((dynamic error) => error is ContractOperationException
38-
? add(YieldError(error.message))
39-
: add(YieldError(error.toString())))
40-
.listen((ProposalResponse? proposal) =>
41-
add(YieldProposalLoaded(proposal!)));
42-
} else if (event is YieldProposalLoaded) {
43-
yield PriceProposalLoaded(event.proposal.proposal);
44-
} else if (event is YieldError) {
45-
yield PriceProposalError(event.message);
46-
}
46+
_subscribeProposal(event)
47+
.handleError((dynamic error) => error is BaseAPIException
48+
? add(YieldError(error.message))
49+
: add(YieldError(error.toString())))
50+
.listen((ProposalResponse? proposal) =>
51+
add(YieldProposalLoaded(proposal!)));
4752
}
4853

4954
Stream<ProposalResponse?> _subscribeProposal(SubscribeProposal event) =>

0 commit comments

Comments
 (0)