Skip to content

Commit efccf7b

Browse files
authored
feat(BaseGenerationService): Replace runtime type checker with generic (#101)
* feat(BaseGenerationService): Updated BaseGenerationService * feat(Improvements): Replaced dynamic with int
1 parent 5c6f3d3 commit efccf7b

20 files changed

+79
-126
lines changed
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
22

3-
abstract interface class BaseGenerationService<T> {
4-
Future<T> generate(BaseGenerationParams params);
3+
abstract interface class BaseGenerationService<R,
4+
T extends BaseGenerationParams> {
5+
Future<R> generate(T params);
56
}

lib/domain/service/component_generator/component_generator_service.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,13 @@ import 'package:onix_flutter_bricks/domain/entity/component/enum_param_component
1313
import 'package:onix_flutter_bricks/domain/entity/component/request_component.dart';
1414
import 'package:onix_flutter_bricks/domain/entity/component/source_component.dart';
1515
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
16-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
1716
import 'package:onix_flutter_bricks/domain/service/component_generator/params/component_generator_params.dart';
1817
import 'package:recase/recase.dart';
1918

20-
class ComponentGeneratorService implements BaseGenerationService<String> {
19+
class ComponentGeneratorService
20+
implements BaseGenerationService<String, ComponentGeneratorParams> {
2121
@override
22-
Future<String> generate(BaseGenerationParams params) async {
23-
if (params is! ComponentGeneratorParams) {
24-
return 'Incorrect params';
25-
}
26-
22+
Future<String> generate(ComponentGeneratorParams params) async {
2723
try {
2824
final projectLibFolder =
2925
'${params.projectPath}/${params.projectName}/lib';

lib/domain/service/docs_service/docs_service.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import 'dart:io';
33
import 'package:flutter/services.dart' show rootBundle;
44
import 'package:onix_flutter_bricks/core/di/app.dart';
55
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
6-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
76
import 'package:onix_flutter_bricks/domain/service/docs_service/enum/document_type.dart';
87
import 'package:onix_flutter_bricks/domain/service/docs_service/params/docs_generation_params.dart';
98
import 'package:onix_flutter_bricks/util/extension/codelines_extension.dart';
109
import 'package:onix_flutter_bricks/util/extension/flavor_extension.dart';
1110
import 'package:recase/recase.dart';
1211

13-
class DocsService implements BaseGenerationService<String> {
12+
class DocsService
13+
implements BaseGenerationService<String, DocsGenerationParams> {
1414
final flavorsTitle =
1515
'* **Flavor** - type of application configuration. Flavored 2 supports following flavors:';
1616
final _appNamePattern = '{app_name}';
@@ -25,10 +25,7 @@ class DocsService implements BaseGenerationService<String> {
2525
final _flavorizrInstructions = '{flavorizr_instructions}';
2626

2727
@override
28-
Future<String> generate(BaseGenerationParams params) async {
29-
if (params is! DocsGenerationParams) {
30-
return 'Incorrect params';
31-
}
28+
Future<String> generate(DocsGenerationParams params) async {
3229
try {
3330
final projectPath = '${params.projectPath}/${params.projectName}';
3431
//remove existing readme.md

lib/domain/service/fastlane_service/fastlane_service.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import 'dart:io';
33
import 'package:flutter/services.dart';
44
import 'package:onix_flutter_bricks/core/di/app.dart';
55
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
6-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
76
import 'package:onix_flutter_bricks/domain/service/fastlane_service/enums/fastlane_assets.dart';
87
import 'package:onix_flutter_bricks/domain/service/fastlane_service/enums/fastlane_env_vars.dart';
98
import 'package:onix_flutter_bricks/domain/service/fastlane_service/params/fastlane_generation_params.dart';
@@ -18,13 +17,12 @@ const _ios = 'ios';
1817
const _androidFastlane = '/android/fastlane/';
1918
const _iosFastlane = '/ios/fastlane/';
2019

21-
class FastlaneService implements BaseGenerationService<String> {
20+
class FastlaneService
21+
implements BaseGenerationService<String, FastlaneGenerationParams> {
2222
const FastlaneService();
2323

2424
@override
25-
Future<String> generate(BaseGenerationParams params) async {
26-
if (params is! FastlaneGenerationParams) return 'Incorrect params';
27-
25+
Future<String> generate(FastlaneGenerationParams params) async {
2826
final platforms = params.platforms
2927
.where((element) => element == _android || element == _ios);
3028

lib/domain/service/file_generator_service/file_generator_service.dart

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,44 @@ import 'dart:io';
22

33
import 'package:onix_flutter_bricks/core/arch/domain/entity/result/result.dart';
44
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
5-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
65
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/default_screen_route_generator.dart';
6+
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/params/default_screen_route_generator_params.dart';
7+
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/params/screen_generator_params.dart';
78
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/screen_generator.dart';
9+
import 'package:onix_flutter_bricks/domain/service/file_generator_service/signing_generator/params/signing_generator_params.dart';
810
import 'package:onix_flutter_bricks/domain/service/file_generator_service/signing_generator/signing_generator.dart';
11+
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/params/styles_generator_params.dart';
912
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/styles_generator.dart';
1013
import 'package:onix_flutter_bricks/domain/service/output_service/output_service.dart';
1114
import 'package:recase/recase.dart';
1215

1316
class FileGeneratorService {
1417
final OutputService _outputService;
1518

16-
final BaseGenerationService<bool> _screenGenerator = ScreenGenerator();
17-
18-
final BaseGenerationService<bool> _defaultScreenRouteGenerator =
19-
DefaultScreenRouteGenerator();
20-
21-
final BaseGenerationService<bool> _stylesGenerator = StylesGenerator();
22-
late BaseGenerationService<Result<dynamic>> _signingGenerator;
19+
final BaseGenerationService<bool, ScreenGeneratorParams> _screenGenerator =
20+
ScreenGenerator();
21+
final BaseGenerationService<bool, DefaultScreenRouteGeneratorParams>
22+
_defaultScreenRouteGenerator = DefaultScreenRouteGenerator();
23+
final BaseGenerationService<bool, StylesGeneratorParams> _stylesGenerator =
24+
StylesGenerator();
25+
late final BaseGenerationService<Result<int>, SingingGeneratorParams>
26+
_signingGenerator;
2327

2428
FileGeneratorService(
2529
this._outputService,
2630
) {
2731
_signingGenerator = SigningGenerator(_outputService);
2832
}
2933

30-
Future<bool> generateScreen(BaseGenerationParams params) =>
34+
Future<bool> generateScreen(ScreenGeneratorParams params) =>
3135
_screenGenerator.generate(params);
3236

33-
Future<bool> generateDefaultScreenRoute(BaseGenerationParams params) =>
37+
Future<bool> generateDefaultScreenRoute(
38+
DefaultScreenRouteGeneratorParams params,
39+
) =>
3440
_defaultScreenRouteGenerator.generate(params);
3541

36-
Future<bool> generateStyles(BaseGenerationParams params) =>
42+
Future<bool> generateStyles(StylesGeneratorParams params) =>
3743
_stylesGenerator.generate(params);
3844

3945
Future<void> generateEmptySourceComponentFolders({
@@ -52,6 +58,6 @@ class FileGeneratorService {
5258
.create(recursive: true);
5359
}
5460

55-
Future<Result<dynamic>> generateSigning(BaseGenerationParams params) =>
61+
Future<Result<int>> generateSigning(SingingGeneratorParams params) =>
5662
_signingGenerator.generate(params);
5763
}

lib/domain/service/file_generator_service/screen_generators/default_screen_route_generator.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import 'dart:io';
22

33
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
4-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
54
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/params/default_screen_route_generator_params.dart';
65
import 'package:onix_flutter_bricks/util/enum/project_router.dart';
76

8-
class DefaultScreenRouteGenerator implements BaseGenerationService<bool> {
7+
class DefaultScreenRouteGenerator
8+
implements BaseGenerationService<bool, DefaultScreenRouteGeneratorParams> {
99
@override
10-
Future<bool> generate(BaseGenerationParams params) async {
11-
if (params is! DefaultScreenRouteGeneratorParams) {
12-
return false;
13-
}
14-
10+
Future<bool> generate(DefaultScreenRouteGeneratorParams params) async {
1511
///Add default configuration to Navigation Router file
1612
await _createDefaultRoute(params);
1713

lib/domain/service/file_generator_service/screen_generators/screen_generator.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,17 @@ import 'dart:io';
22

33
import 'package:onix_flutter_bricks/domain/entity/screen/screen.dart';
44
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
5-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
65
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/gen/screen_code_content.dart';
76
import 'package:onix_flutter_bricks/domain/service/file_generator_service/screen_generators/params/screen_generator_params.dart';
87
import 'package:onix_flutter_bricks/util/enum/project_router.dart';
98
import 'package:recase/recase.dart';
109

11-
class ScreenGenerator implements BaseGenerationService<bool> {
10+
class ScreenGenerator
11+
implements BaseGenerationService<bool, ScreenGeneratorParams> {
1212
final _screenCodeContent = ScreenCodeContent();
1313

1414
@override
15-
Future<bool> generate(BaseGenerationParams params) async {
16-
if (params is! ScreenGeneratorParams) {
17-
return false;
18-
}
19-
15+
Future<bool> generate(ScreenGeneratorParams params) async {
2016
String screenName = params.screen.name.snakeCase;
2117

2218
if (screenName.endsWith('_screen')) {

lib/domain/service/file_generator_service/signing_generator/signing_generator.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,20 @@ import 'package:onix_flutter_bricks/core/arch/domain/entity/result/result.dart';
55
import 'package:onix_flutter_bricks/core/di/app.dart';
66
import 'package:onix_flutter_bricks/domain/entity/failure/signing_failure.dart';
77
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
8-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
98
import 'package:onix_flutter_bricks/domain/service/file_generator_service/signing_generator/params/signing_generator_params.dart';
109
import 'package:onix_flutter_bricks/domain/service/output_service/output_service.dart';
1110
import 'package:onix_flutter_bricks/util/extension/output/output_message_extension.dart';
1211
import 'package:onix_flutter_bricks/util/process_runner.dart';
1312

1413
///This class Generates Android keystore with given credentials and fix Gradle signing configuration
15-
class SigningGenerator implements BaseGenerationService<Result<dynamic>> {
14+
class SigningGenerator
15+
implements BaseGenerationService<Result<int>, SingingGeneratorParams> {
1616
final OutputService _outputService;
1717

1818
SigningGenerator(this._outputService);
1919

2020
@override
21-
Future<Result<dynamic>> generate(BaseGenerationParams params) async {
22-
if (params is! SingingGeneratorParams) {
23-
return Result.error(
24-
failure: SigningFailure(SigningFailureType.invalidParams),
25-
);
26-
}
21+
Future<Result<int>> generate(SingingGeneratorParams params) async {
2722
try {
2823
_outputService
2924
.add('Keystore password: ${params.signingPassword}'.toInfoMessage());

lib/domain/service/file_generator_service/style_generator/colors_generator.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
import 'dart:io';
22

33
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
4-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
54
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/gen/app_colors_file_content.dart';
65
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/params/colors_generation_params.dart';
76
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/params/colors_generator_params.dart';
87
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/parser/colors_parser.dart';
98

10-
class ColorsGenerator implements BaseGenerationService<bool> {
9+
class ColorsGenerator
10+
implements BaseGenerationService<bool, ColorsGeneratorParams> {
1111
final _colorParser = ColorsParser();
1212
final _appColorsGenerator = AppColorsFileContent();
1313

1414
@override
15-
Future<bool> generate(BaseGenerationParams params) async {
16-
if (params is! ColorsGeneratorParams) {
17-
return false;
18-
}
15+
Future<bool> generate(ColorsGeneratorParams params) async {
1916
var themeColorsFile = await File(
2017
'${params.projectPath}/${params.projectName}/lib/presentation/style/app_colors.dart')
2118
.create(recursive: true);

lib/domain/service/file_generator_service/style_generator/gen/app_colors_file_content.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import 'package:onix_flutter_bricks/domain/entity/app_styles/app_color_style.dart';
22
import 'package:onix_flutter_bricks/domain/service/base/base_generation_service.dart';
3-
import 'package:onix_flutter_bricks/domain/service/base/params/base_generation_params.dart';
43
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/params/colors_generation_params.dart';
54
import 'package:onix_flutter_bricks/domain/service/file_generator_service/style_generator/style_generator_const.dart';
65
import 'package:onix_flutter_bricks/util/extension/codelines_extension.dart';
76

8-
class AppColorsFileContent implements BaseGenerationService<String> {
7+
class AppColorsFileContent
8+
implements BaseGenerationService<String, ColorsGenerationParams> {
99
@override
10-
Future<String> generate(BaseGenerationParams params) async {
11-
if (params is! ColorsGenerationParams) {
12-
return '';
13-
}
10+
Future<String> generate(ColorsGenerationParams params) async {
1411
return _generateInternal(params.colors);
1512
}
1613

0 commit comments

Comments
 (0)