Skip to content

Commit 82ebc96

Browse files
authored
Merge pull request #242 from amitamrutiya2210/bloc-migration
Bloc Migration, Improved Testing, and Code Refactoring
2 parents 7640fe5 + 9c120e7 commit 82ebc96

File tree

175 files changed

+9938
-8833
lines changed

Some content is hidden

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

175 files changed

+9938
-8833
lines changed

.github/workflows/dart.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ jobs:
1717
java-version: '12.x'
1818
- uses: subosito/flutter-action@v1
1919
with:
20-
flutter-version: '3.7.11'
20+
flutter-version: '3.10.5'
2121
- run: flutter pub get
2222
- run: flutter analyze
23-
- run: flutter format -n --set-exit-if-changed .
23+
- run: dart format --output=none --set-exit-if-changed .
2424
- run: flutter test
2525
- run: flutter build apk
2626

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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
}

lib/Api/auth_api.dart

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
import 'dart:convert';
2-
32
import 'package:dio/dio.dart';
3+
import 'package:flood_mobile/Constants/api_endpoints.dart';
44
import 'package:flood_mobile/Model/register_user_model.dart';
5-
import 'package:flood_mobile/Provider/user_detail_provider.dart';
65
import 'package:flood_mobile/Model/current_user_detail_model.dart';
6+
import 'package:flood_mobile/Blocs/api_bloc/api_bloc.dart';
7+
import 'package:flood_mobile/Blocs/user_detail_bloc/user_detail_bloc.dart';
78
import 'package:flutter/cupertino.dart';
8-
import 'package:provider/provider.dart';
9+
import 'package:flutter_bloc/flutter_bloc.dart';
910
import 'package:shared_preferences/shared_preferences.dart';
1011

11-
import '../Provider/api_provider.dart';
12-
1312
class AuthApi {
1413
static Future<bool> loginUser(
1514
{required String username,
1615
required String password,
1716
required BuildContext context}) async {
1817
try {
19-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
20-
ApiProvider.authenticateUrl;
18+
String url = BlocProvider.of<ApiBloc>(context).state.baseUrl +
19+
ApiEndpoints.authenticateUrl;
2120
print('---LOGIN USER---');
2221
print(url);
2322
Response response;
@@ -46,17 +45,17 @@ class AuthApi {
4645
SharedPreferences prefs = await SharedPreferences.getInstance();
4746
await prefs.setString('floodToken', token);
4847
await prefs.setString('floodUsername', username);
49-
Provider.of<UserDetailProvider>(context, listen: false)
50-
.setUserDetails(token, username);
48+
BlocProvider.of<UserDetailBloc>(context, listen: false)
49+
.add(SetUserDetailsEvent(token: token, username: username));
5150
return true;
5251
}
5352
return false;
5453
} else {
5554
return false;
5655
}
57-
} catch (e) {
58-
print('--ERROR--');
59-
print(e.toString());
56+
} catch (error) {
57+
print('--ERROR IN LOGIN USER--');
58+
print(error.toString());
6059
return false;
6160
}
6261
}
@@ -66,8 +65,9 @@ class AuthApi {
6665
required BuildContext context,
6766
}) async {
6867
try {
69-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
70-
ApiProvider.registerUser;
68+
String url =
69+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
70+
ApiEndpoints.registerUser;
7171
print('---REGISTER USER---');
7272
print(url);
7373
Response response;
@@ -77,7 +77,7 @@ class AuthApi {
7777
dio.options.headers['Content-Type'] = "application/json";
7878
dio.options.headers['Connection'] = "keep-alive";
7979
dio.options.headers['Cookie'] =
80-
Provider.of<UserDetailProvider>(context, listen: false).token;
80+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
8181
Map<String, dynamic> mp = model.toJson();
8282
String rawBody = json.encode(mp);
8383
print(rawBody);
@@ -86,17 +86,18 @@ class AuthApi {
8686
if (response.statusCode == 200) {
8787
print(response);
8888
getUsersList(context);
89-
} else {}
90-
} catch (e) {
91-
print('--ERROR--');
92-
print(e.toString());
89+
}
90+
} catch (error) {
91+
print('--ERROR IN REGISTER USER--');
92+
print(error.toString());
9393
}
9494
}
9595

9696
static getUsersList(BuildContext context) async {
9797
try {
98-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
99-
ApiProvider.getUsersList;
98+
String url =
99+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
100+
ApiEndpoints.getUsersList;
100101
print('---GET USERS LIST---');
101102
print(url);
102103
Response response;
@@ -106,7 +107,7 @@ class AuthApi {
106107
dio.options.headers['Content-Type'] = "application/json";
107108
dio.options.headers['Connection'] = "keep-alive";
108109
dio.options.headers['Cookie'] =
109-
Provider.of<UserDetailProvider>(context, listen: false).token;
110+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
110111
response = await dio.get(
111112
url,
112113
);
@@ -115,23 +116,24 @@ class AuthApi {
115116
for (final user in response.data) {
116117
usersList.add(CurrentUserDetailModel.fromJson(user));
117118
}
118-
Provider.of<UserDetailProvider>(context, listen: false)
119-
.setUsersList(usersList);
119+
BlocProvider.of<UserDetailBloc>(context, listen: false)
120+
.add(SetUsersListEvent(usersList: usersList));
120121
print('---USERS LIST---');
121122
print(response);
122-
} else {}
123-
} catch (e) {
124-
print('--ERROR--');
125-
print(e.toString());
123+
}
124+
} catch (error) {
125+
print('--ERROR IN GET USER LIST--');
126+
print(error.toString());
126127
}
127128
}
128129

129130
static deleteUser(BuildContext context, String username) async {
130131
try {
131-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
132-
ApiProvider.deleteUser +
133-
"/" +
134-
username;
132+
String url =
133+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
134+
ApiEndpoints.deleteUser +
135+
"/" +
136+
username;
135137
print('---DELETE USER---');
136138
print(url);
137139
Response response;
@@ -141,7 +143,7 @@ class AuthApi {
141143
dio.options.headers['Content-Type'] = "application/json";
142144
dio.options.headers['Connection'] = "keep-alive";
143145
dio.options.headers['Cookie'] =
144-
Provider.of<UserDetailProvider>(context, listen: false).token;
146+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
145147
response = await dio.delete(
146148
url,
147149
);
@@ -150,10 +152,10 @@ class AuthApi {
150152
print('---USER DELETED---');
151153
// *Getting the users list again
152154
getUsersList(context);
153-
} else {}
154-
} catch (e) {
155-
print('--ERROR--');
156-
print(e.toString());
155+
}
156+
} catch (error) {
157+
print('--ERROR IN DELETE USER--');
158+
print(error.toString());
157159
}
158160
}
159161
}

lib/Api/client_api.dart

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
import 'dart:convert';
2-
32
import 'package:dio/dio.dart';
3+
import 'package:flood_mobile/Constants/api_endpoints.dart';
4+
import 'package:flood_mobile/Blocs/client_settings_bloc/client_settings_bloc.dart';
45
import 'package:flood_mobile/Model/client_settings_model.dart';
5-
import 'package:flood_mobile/Provider/api_provider.dart';
6-
import 'package:flood_mobile/Provider/client_provider.dart';
7-
import 'package:flood_mobile/Provider/user_detail_provider.dart';
86
import 'package:flood_mobile/Services/transfer_speed_manager.dart';
7+
import 'package:flood_mobile/Blocs/api_bloc/api_bloc.dart';
8+
import 'package:flood_mobile/Blocs/user_detail_bloc/user_detail_bloc.dart';
99
import 'package:flutter/cupertino.dart';
10-
import 'package:provider/provider.dart';
10+
import 'package:flutter_bloc/flutter_bloc.dart';
1111

1212
class ClientApi {
1313
static getClientSettings(BuildContext context) async {
1414
try {
15-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
16-
ApiProvider.getClientSettingsUrl;
15+
String url =
16+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
17+
ApiEndpoints.getClientSettingsUrl;
1718
print('---GET CLIENT SETTINGS---');
1819
print(url);
1920
Response response;
@@ -23,30 +24,31 @@ class ClientApi {
2324
dio.options.headers['Content-Type'] = "application/json";
2425
dio.options.headers['Connection'] = "keep-alive";
2526
dio.options.headers['Cookie'] =
26-
Provider.of<UserDetailProvider>(context, listen: false).token;
27+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
2728
response = await dio.get(
2829
url,
2930
);
3031
if (response.statusCode == 200) {
3132
ClientSettingsModel clientSetting =
3233
ClientSettingsModel.fromJson(response.data);
33-
Provider.of<ClientSettingsProvider>(context, listen: false)
34-
.setClientSettings(clientSetting);
34+
BlocProvider.of<ClientSettingsBloc>(context, listen: false)
35+
.add(SetClientSettingsEvent(clientSettings: clientSetting));
3536
print('---CLIENT SETTINGS---');
3637
print(response);
37-
} else {}
38-
} catch (e) {
39-
print('--ERROR--');
40-
print(e.toString());
38+
}
39+
} catch (error) {
40+
print('--ERROR IN GET CLIENT SETTINGS--');
41+
print(error.toString());
4142
}
4243
}
4344

4445
static Future<void> setClientSettings(
4546
{required BuildContext context,
4647
required ClientSettingsModel model}) async {
4748
try {
48-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
49-
ApiProvider.setClientSettingsUrl;
49+
String url =
50+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
51+
ApiEndpoints.setClientSettingsUrl;
5052
print('---SET TORRENT SETTINGS---');
5153
print(url);
5254
Response response;
@@ -56,7 +58,7 @@ class ClientApi {
5658
dio.options.headers['Content-Type'] = "application/json";
5759
dio.options.headers['Connection'] = "keep-alive";
5860
dio.options.headers['Cookie'] =
59-
Provider.of<UserDetailProvider>(context, listen: false).token;
61+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
6062
Map<String, dynamic> mp = model.toJson();
6163
String rawBody = json.encode(mp);
6264
print(rawBody);
@@ -72,9 +74,9 @@ class ClientApi {
7274
} else {
7375
print('Error');
7476
}
75-
} catch (e) {
76-
print('--ERROR--');
77-
print(e.toString());
77+
} catch (error) {
78+
print('--ERROR IN SET CLIENT SETTINGS--');
79+
print(error.toString());
7880
}
7981
}
8082

@@ -83,8 +85,9 @@ class ClientApi {
8385
required String downSpeed,
8486
required String upSpeed}) async {
8587
try {
86-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
87-
ApiProvider.setClientSettingsUrl;
88+
String url =
89+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
90+
ApiEndpoints.setClientSettingsUrl;
8891
print('---SET SPEED LIMIT SETTINGS---');
8992
print(url);
9093
Response response;
@@ -94,7 +97,7 @@ class ClientApi {
9497
dio.options.headers['Content-Type'] = "application/json";
9598
dio.options.headers['Connection'] = "keep-alive";
9699
dio.options.headers['Cookie'] =
97-
Provider.of<UserDetailProvider>(context, listen: false).token;
100+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
98101
Map<String, dynamic> mp = Map();
99102
mp['throttleGlobalDownSpeed'] =
100103
TransferSpeedManager.speedToValMap[downSpeed];
@@ -113,16 +116,17 @@ class ClientApi {
113116
} else {
114117
print('Error');
115118
}
116-
} catch (e) {
117-
print('--ERROR--');
118-
print(e.toString());
119+
} catch (error) {
120+
print('--ERROR IN SPEED LIMIT CHANGED--');
121+
print(error.toString());
119122
}
120123
}
121124

122125
static Future<bool> checkClientOnline(BuildContext context) async {
123126
try {
124-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
125-
ApiProvider.getClientSettingsUrl;
127+
String url =
128+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
129+
ApiEndpoints.getClientSettingsUrl;
126130
print('---CHECK CLIENT ONLINE---');
127131
print(url);
128132
Response response;
@@ -132,7 +136,7 @@ class ClientApi {
132136
dio.options.headers['Content-Type'] = "application/json";
133137
dio.options.headers['Connection'] = "keep-alive";
134138
dio.options.headers['Cookie'] =
135-
Provider.of<UserDetailProvider>(context, listen: false).token;
139+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
136140
response = await dio.get(
137141
url,
138142
);
@@ -141,9 +145,9 @@ class ClientApi {
141145
} else {
142146
return false;
143147
}
144-
} catch (e) {
145-
print('--ERROR--');
146-
print(e.toString());
148+
} catch (error) {
149+
print('--ERROR IN CHECK CLIENT ONLINE--');
150+
print(error.toString());
147151
return false;
148152
}
149153
}
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
import 'dart:convert';
2-
32
import 'package:dio/dio.dart';
3+
import 'package:flood_mobile/Constants/api_endpoints.dart';
4+
import 'package:flood_mobile/Blocs/api_bloc/api_bloc.dart';
5+
import 'package:flood_mobile/Blocs/user_detail_bloc/user_detail_bloc.dart';
46
import 'package:flutter/material.dart';
5-
import 'package:provider/provider.dart';
6-
import '../Provider/api_provider.dart';
7-
import '../Provider/user_detail_provider.dart';
7+
import 'package:flutter_bloc/flutter_bloc.dart';
88

99
class DeleteFeedOrRulesApi {
1010
static Future<void> deleteFeedsOrRules(
1111
{required BuildContext context, required String id}) async {
1212
try {
1313
Response response;
1414
Dio dio = new Dio();
15-
String url = Provider.of<ApiProvider>(context, listen: false).baseUrl +
16-
ApiProvider.listAllFeedsAndRules +
17-
"/" +
18-
id;
15+
String url =
16+
BlocProvider.of<ApiBloc>(context, listen: false).state.baseUrl +
17+
ApiEndpoints.listAllFeedsAndRules +
18+
"/" +
19+
id;
1920
dio.options.headers['Accept'] = "application/json";
2021
dio.options.headers['Content-Type'] = "application/json";
2122
dio.options.headers['Connection'] = "keep-alive";
2223
dio.options.headers['Cookie'] =
23-
Provider.of<UserDetailProvider>(context, listen: false).token;
24+
BlocProvider.of<UserDetailBloc>(context, listen: false).token;
2425
Map<String, dynamic> mp = Map();
2526
mp['id'] = id;
2627
String rawBody = json.encode(mp);
@@ -33,8 +34,8 @@ class DeleteFeedOrRulesApi {
3334
} else {
3435
print("There is some problem status code not 200");
3536
}
36-
} catch (e) {
37-
print('Exception caught in Api Request ' + e.toString());
37+
} catch (error) {
38+
print('--ERROR IN DELETE FEEDS AND RULES--' + error.toString());
3839
}
3940
}
4041
}

0 commit comments

Comments
 (0)