Skip to content

Commit b191f84

Browse files
committed
fix(Swagger): Fixed bug with swagger parser url logic. Added empty URL logic
1 parent 5c59ec3 commit b191f84

File tree

6 files changed

+56
-61
lines changed

6 files changed

+56
-61
lines changed

Makefile

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@ build_macos:
77
@appdmg installers/dmg_creator/config.json release/Onix_Flutter_Project_Generator.dmg
88

99
build_runner:
10-
fvm dart run build_runner build --delete-conflicting-outputs
10+
fvm dart run build_runner build --delete-conflicting-outputs
11+
12+
codegen:
13+
dart run build_runner build --delete-conflicting-outputs

lib/core/di/bloc.dart

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ void registerBloc(GetIt getIt) {
5252
..registerFactory<SwaggerParserScreenBloc>(
5353
() => SwaggerParserScreenBloc(
5454
GetIt.I.get<FetchSwaggerDataUseCase>(),
55+
GetIt.I.get<ClearSwaggerComponentsUseCase>(),
5556
),
5657
)
5758
..registerFactory<ScreensScreenBloc>(ScreensScreenBloc.new)

lib/presentation/screen/swagger_parser_screen/bloc/swagger_parser_screen_bloc.dart

+16-13
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ import 'dart:async';
22

33
import 'package:flutter_bloc/flutter_bloc.dart';
44
import 'package:onix_flutter_bloc/onix_flutter_bloc.dart';
5-
import 'package:onix_flutter_bricks/domain/entity/config/config.dart';
5+
import 'package:onix_flutter_bricks/domain/usecase/swagger/empty_swagger_components_usecase.dart';
66
import 'package:onix_flutter_bricks/domain/usecase/swagger/fetch_swagger_data_usecase.dart';
77
import 'package:onix_flutter_bricks/presentation/screen/swagger_parser_screen/bloc/swagger_parser_screen_bloc_imports.dart';
88

99
class SwaggerParserScreenBloc extends BaseBloc<SwaggerParserScreenEvent,
1010
SwaggerParserScreenState, SwaggerParserScreenSR> {
1111
final FetchSwaggerDataUseCase _fetchSwaggerDataUseCase;
12+
final ClearSwaggerComponentsUseCase _clearSwaggerComponentsUseCase;
1213

13-
SwaggerParserScreenBloc(this._fetchSwaggerDataUseCase)
14-
: super(
15-
const SwaggerParserScreenStateData(config: Config()),
16-
) {
14+
SwaggerParserScreenBloc(
15+
this._fetchSwaggerDataUseCase,
16+
this._clearSwaggerComponentsUseCase,
17+
) : super(const SwaggerParserScreenStateData()) {
1718
on<SwaggerParserScreenEventInit>(_onInit);
1819
on<SwaggerParserScreenEventParse>(_onParse);
1920
}
@@ -30,23 +31,25 @@ class SwaggerParserScreenBloc extends BaseBloc<SwaggerParserScreenEvent,
3031
Emitter<SwaggerParserScreenState> emit,
3132
) async {
3233
if (event.url.isEmpty) {
34+
emit(state.copyWith(config: state.config.copyWith(swaggerUrl: '')));
35+
_clearSwaggerComponentsUseCase();
3336
addSr(const SwaggerParserScreenSR.onContinue());
37+
return;
3438
}
35-
emit(
36-
state.copyWith(
37-
config: state.config.copyWith(
38-
swaggerUrl: event.url,
39-
),
40-
),
41-
);
42-
4339
showProgress();
4440

4541
final swaggerComponentsResult =
4642
await _fetchSwaggerDataUseCase(url: event.url);
4743

4844
await hideProgress();
4945
if (swaggerComponentsResult.success) {
46+
emit(
47+
state.copyWith(
48+
config: state.config.copyWith(
49+
swaggerUrl: event.url,
50+
),
51+
),
52+
);
5053
addSr(const SwaggerParserScreenSR.onContinue());
5154
} else {
5255
addSr(const SwaggerParserScreenSR.onParseError());

lib/presentation/screen/swagger_parser_screen/bloc/swagger_parser_screen_models.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ class SwaggerParserScreenSR with _$SwaggerParserScreenSR {
2424
@freezed
2525
class SwaggerParserScreenState with _$SwaggerParserScreenState {
2626
const factory SwaggerParserScreenState.data({
27-
required Config config,
27+
@Default(Config()) Config config,
2828
}) = SwaggerParserScreenStateData;
2929
}

lib/presentation/screen/swagger_parser_screen/bloc/swagger_parser_screen_models.freezed.dart

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/presentation/screen/swagger_parser_screen/swagger_parser_screen.dart

+31-44
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,29 @@ class _SwaggerParserScreenState extends BaseState<SwaggerParserScreenState,
3535

3636
@override
3737
void onBlocCreated(BuildContext context, SwaggerParserScreenBloc bloc) {
38-
bloc.add(SwaggerParserScreenEventInit(config: widget.config));
38+
bloc.add(SwaggerParserScreenEvent.init(config: widget.config));
3939
_urlController.text = widget.config.swaggerUrl;
4040
super.onBlocCreated(context, bloc);
4141
}
4242

4343
@override
4444
Widget buildWidget(BuildContext context) {
45-
return srObserver(
46-
context: context,
47-
child: CupertinoPageScaffold(
48-
navigationBar: TitleBar(
49-
title: S.of(context).importApi,
50-
),
51-
child: SizedBox.expand(
52-
child: blocBuilder(
53-
builder: _buildMainContainer,
54-
),
45+
return CupertinoPageScaffold(
46+
navigationBar: TitleBar(
47+
title: S.of(context).importApi,
48+
),
49+
child: SizedBox.expand(
50+
child: blocBuilder(
51+
builder: _buildMainContainer,
5552
),
5653
),
57-
onSR: _onSingleResult,
5854
);
5955
}
6056

61-
void _onSingleResult(
62-
BuildContext context,
63-
SwaggerParserScreenSR singleResult,
64-
) {
65-
singleResult.when(
57+
@override
58+
void onSR(BuildContext context, SwaggerParserScreenSR sr) {
59+
super.onSR(context, sr);
60+
sr.when(
6661
onParseError: () => Dialogs.showOkDialog(
6762
context: context,
6863
isError: true,
@@ -105,45 +100,39 @@ class _SwaggerParserScreenState extends BaseState<SwaggerParserScreenState,
105100
textController: _urlController,
106101
onChanged: () {},
107102
autofocus: true,
108-
onEditingComplete: () => _onContinue(context, state),
103+
onEditingComplete: () => _processSwaggerParser(context),
109104
expanded: true,
110105
),
111106
),
112107
const Spacer(),
113108
NavigationButtonBar(
114109
nextText: S.of(context).continueLabel,
115110
prevText: S.of(context).goBack,
116-
onNextPressed: () {
117-
_onContinue(context, state);
118-
},
119-
onPrevPressed: () {
120-
_onBack(context, state);
121-
},
111+
onNextPressed: () => _processSwaggerParser(context),
112+
onPrevPressed: () => _onBack(context, state),
122113
),
123114
],
124115
),
125116
),
126117
);
127118
}
128119

120+
void _processSwaggerParser(BuildContext context) {
121+
blocOf(context)
122+
.add(SwaggerParserScreenEvent.parse(url: _urlController.text));
123+
}
124+
129125
void _onContinue(BuildContext context, SwaggerParserScreenState state) {
130-
if (_urlController.text.isNotEmpty) {
131-
blocOf(context)
132-
.add(SwaggerParserScreenEventParse(url: _urlController.text));
133-
} else {
134-
state.config.projectExists
135-
? context.pop(
136-
widget.config.copyWith(
137-
swaggerUrl: state.config.swaggerUrl,
138-
),
139-
)
140-
: context.go(
141-
AppRouter.dataComponentsScreen,
142-
extra: widget.config.copyWith(
143-
swaggerUrl: state.config.swaggerUrl,
144-
),
145-
);
146-
}
126+
state.config.projectExists
127+
? context.pop(
128+
widget.config.copyWith(
129+
swaggerUrl: state.config.swaggerUrl,
130+
),
131+
)
132+
: context.go(
133+
AppRouter.dataComponentsScreen,
134+
extra: state.config,
135+
);
147136
}
148137

149138
void _onBack(BuildContext context, SwaggerParserScreenState state) =>
@@ -155,8 +144,6 @@ class _SwaggerParserScreenState extends BaseState<SwaggerParserScreenState,
155144
)
156145
: context.go(
157146
AppRouter.stylesScreen,
158-
extra: widget.config.copyWith(
159-
swaggerUrl: state.config.swaggerUrl,
160-
),
147+
extra: state.config,
161148
);
162149
}

0 commit comments

Comments
 (0)