Skip to content

Commit

Permalink
#83 - Refactor to use Dio instead of HTTP (#86)
Browse files Browse the repository at this point in the history
* Updates flutter_map, firebase_messaging and flutter_svg to fix build due to a SDK change

* Adds DIO refactor

* Rollsback flutter_map, flutter_messaging and flutter_svg versions
  • Loading branch information
miguelpruivo authored and guivazcabral committed Oct 15, 2019
1 parent d4b1730 commit 50b762c
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 47 deletions.
6 changes: 3 additions & 3 deletions lib/middleware/contributors_middleware.dart
@@ -1,7 +1,7 @@
import 'package:fogosmobile/actions/contributors_actions.dart';
import 'package:fogosmobile/models/contributor.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:fogosmobile/models/app_state.dart';
import 'package:fogosmobile/constants/endpoints.dart';
Expand All @@ -21,8 +21,8 @@ Middleware<AppState> _createLoadContributors() {

try {
String url = Endpoints.getMobileContributors;
final response = await http.get(url);
final responseData = json.decode(response.body);
final response = await get(url);
final responseData = json.decode(response.data);
List<Contributor> contributors = Contributor.fromList(responseData);
print("load contributors");
store.dispatch(new ContributorsLoadedAction(contributors));
Expand Down
15 changes: 8 additions & 7 deletions lib/middleware/fires_middleware.dart
@@ -1,6 +1,7 @@
import 'package:fogosmobile/middleware/shared_preferences_manager.dart';
import 'package:fogosmobile/models/fire_details.dart';
import 'package:fogosmobile/utils/model_utils.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:dio/dio.dart';
import 'dart:convert';
Expand Down Expand Up @@ -36,7 +37,7 @@ Middleware<AppState> _createLoadFires() {

try {
String url = Endpoints.getFires;
Response response = await Dio().get(url);
final response = await get(url);
final responseData = json.decode(response.data)["data"];
List<Fire> fires = responseData.map<Fire>((model) => Fire.fromJson(model)).toList();
fires = calculateFireImportance(fires);
Expand Down Expand Up @@ -64,7 +65,7 @@ Middleware<AppState> _createLoadFire() {
String url = '${Endpoints.getFire}${action.fireId}';

try {
Response response = await Dio().get(url);
final response = await get(url);
final responseData = json.decode(response.data)["data"];
if (responseData == null) {
throw new StateError('No fire data could be loaded: $url');
Expand Down Expand Up @@ -95,7 +96,7 @@ Middleware<AppState> _createLoadFireMeansHistory() {
String url = '${Endpoints.getFireMeansHistory}${action.fireId}';

try {
Response response = await Dio().get(url);
final response = await get(url);
final responseData = json.decode(response.data)["data"];
if (responseData == null) {
throw new StateError('No getFireMeansHistory could be loaded: $url');
Expand Down Expand Up @@ -126,7 +127,7 @@ Middleware<AppState> _createLoadFireDetailsHistory() {
String url = '${Endpoints.getFireDetailsHistory}${action.fireId}';

try {
Response response = await Dio().get(url);
final response = await get(url);
final responseData = json.decode(response.data)["data"];
if (responseData == null) {
throw new StateError('No getFireDetailsHistory could be loaded: $url');
Expand Down Expand Up @@ -154,11 +155,11 @@ Middleware<AppState> _createLoadFireDetailsHistory() {
Middleware<AppState> _createLoadFireRisk() {
return (Store store, action, NextDispatcher next) async {
next(action);

String url = '${Endpoints.getFireRisk}${action.fireId}';

try {
Response response = await Dio().get(url);
final response = await get(url);
final responseData = json.decode(response.data)["data"][0]['hoje'];

if (responseData == null) {
Expand Down Expand Up @@ -204,4 +205,4 @@ Middleware<AppState> _createSelectFireFilters() {
print(e);
}
};
}
}
6 changes: 3 additions & 3 deletions lib/middleware/preferences_middleware.dart
@@ -1,8 +1,8 @@
import 'dart:io';

import 'package:fogosmobile/middleware/shared_preferences_manager.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:firebase_messaging/firebase_messaging.dart';

Expand All @@ -29,8 +29,8 @@ Middleware<AppState> _createLoadPreferences() {

try {
String url = Endpoints.getLocations;
final response = await http.get(url);
final locations = json.decode(utf8.decode(response.bodyBytes))['rows'];
final response = await get(url);
final locations = response.data['rows'];

Map data = {};
final prefs = SharedPreferencesManager.preferences;
Expand Down
26 changes: 13 additions & 13 deletions lib/middleware/statistics_middleware.dart
@@ -1,7 +1,7 @@
import 'package:fogosmobile/actions/statistics_actions.dart';
import 'package:fogosmobile/models/statistics.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:fogosmobile/models/app_state.dart';
import 'package:fogosmobile/constants/endpoints.dart';
Expand Down Expand Up @@ -30,8 +30,8 @@ Middleware<AppState> _createLoadNowStats() {
next(action);
try {
String url = Endpoints.getNowStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
NowStats nowStats = NowStats.fromJson(responseData);
store.dispatch(new NowStatsLoadedAction(nowStats));
} catch (e) {
Expand All @@ -48,8 +48,8 @@ Middleware<AppState> _createTodayStats() {
next(action);
try {
String url = Endpoints.getTodayStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
TodayStats todayStats = TodayStats.fromJson(responseData);
store.dispatch(new TodayStatsLoadedAction(todayStats));
} catch (e) {
Expand All @@ -66,8 +66,8 @@ Middleware<AppState> _createYesterdayStats() {
next(action);
try {
String url = Endpoints.getYesterdayStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
YesterdayStats yesterdayStats = YesterdayStats.fromJson(responseData);
store.dispatch(new YesterdayStatsLoadedAction(yesterdayStats));
} catch (e) {
Expand All @@ -84,8 +84,8 @@ Middleware<AppState> _createLastNightStats() {
next(action);
try {
String url = Endpoints.getLastNightStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
LastNightStats lastNightStats = LastNightStats.fromJson(responseData);
store.dispatch(new LastNightStatsLoadedAction(lastNightStats));
} catch (e) {
Expand All @@ -102,8 +102,8 @@ Middleware<AppState> _createWeekStats() {
next(action);
try {
String url = Endpoints.getWeekStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
WeekStats weekStats = WeekStats.fromJson(responseData);
store.dispatch(new WeekStatsLoadedAction(weekStats));
} catch (e) {
Expand All @@ -120,8 +120,8 @@ Middleware<AppState> _createLastHoursStats() {
next(action);
try {
String url = Endpoints.getLastHoursStats;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
final response = await get(url);
final responseData = json.decode(response.data)['data'];
LastHoursStats lastHoursStats = LastHoursStats.fromJson(responseData);
store.dispatch(new LastHoursLoadedAction(lastHoursStats));
} catch (e) {
Expand Down
16 changes: 7 additions & 9 deletions lib/middleware/warnings_middleware.dart
@@ -1,5 +1,5 @@
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

import 'package:fogosmobile/models/warning.dart';
Expand All @@ -24,10 +24,9 @@ Middleware<AppState> _createLoadWarnings() {

try {
String url = Endpoints.getWarnings;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
List<Warning> warnings =
responseData.map<Warning>((model) => Warning.fromJson(model)).toList();
final response = await get(url);
final responseData = json.decode(response.data)['data'];
List<Warning> warnings = responseData.map<Warning>((model) => Warning.fromJson(model)).toList();
store.dispatch(new WarningsLoadedAction(warnings));
} catch (e) {
store.dispatch(new WarningsLoadedAction(null));
Expand All @@ -43,10 +42,9 @@ Middleware<AppState> _createLoadWarningsMadeira() {

try {
String url = Endpoints.getWarningsMadeira;
final response = await http.get(url);
final responseData = json.decode(response.body)['data'];
List<WarningMadeira> warnings =
responseData.map<WarningMadeira>((model) => WarningMadeira.fromJson(model)).toList();
final response = await get(url);
final responseData = json.decode(response.data)['data'];
List<WarningMadeira> warnings = responseData.map<WarningMadeira>((model) => WarningMadeira.fromJson(model)).toList();
store.dispatch(new WarningsMadeiraLoadedAction(warnings));
} catch (e) {
store.dispatch(new WarningsMadeiraLoadedAction(null));
Expand Down
9 changes: 3 additions & 6 deletions lib/screens/settings.dart
@@ -1,9 +1,7 @@
import 'dart:convert';
import 'dart:convert' show utf8;
import 'package:fogosmobile/localization/fogos_localizations.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:fogosmobile/constants/endpoints.dart';
import 'package:fogosmobile/models/app_state.dart';
Expand Down Expand Up @@ -35,9 +33,8 @@ class _SettingsState extends State<Settings> {

getLocations() async {
String url = Endpoints.getLocations;
final response = await http.get(url);
final data = json.decode(utf8.decode(response.bodyBytes));
return data['rows'];
final response = await get(url);
return response.data['rows'];
}

@override
Expand Down
9 changes: 3 additions & 6 deletions lib/screens/settings/notifications.dart
@@ -1,10 +1,8 @@
import 'dart:convert';
import 'dart:convert' show utf8;
import 'package:fogosmobile/localization/fogos_localizations.dart';
import 'package:fogosmobile/screens/utils/text_utils.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:fogosmobile/utils/network_utils.dart';
import 'package:redux/redux.dart';
import 'package:fogosmobile/constants/endpoints.dart';
import 'package:fogosmobile/models/app_state.dart';
Expand Down Expand Up @@ -34,9 +32,8 @@ class _NotificationsState extends State<Notifications> {

getLocations() async {
String url = Endpoints.getLocations;
final response = await http.get(url);
final data = json.decode(utf8.decode(response.bodyBytes));
return data['rows'];
final response = await get(url);
return response.data['rows'];
}

@override
Expand Down
16 changes: 16 additions & 0 deletions lib/utils/network_utils.dart
@@ -0,0 +1,16 @@
import 'package:dio/dio.dart';

final Dio _dio = Dio()
..options.connectTimeout = 10000
..options.receiveTimeout = 10000;

Future<Response> get(String path) async {
try {
final Response response = await _dio.get(path);
print('Resquest to $path performed with success (${response?.statusCode}).');
return response;
} on DioError catch (e) {
print('Request to [$path] failed with error $e and headers [${e?.response?.headers}].');
return e?.response;
}
}

0 comments on commit 50b762c

Please sign in to comment.