Skip to content

Commit 7e5704b

Browse files
authored
Merge pull request #106 from covid19cuba/develop
Release 0.4.0
2 parents 34cb86d + cf19514 commit 7e5704b

File tree

79 files changed

+1592
-1477
lines changed

Some content is hidden

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

79 files changed

+1592
-1477
lines changed

CHANGELOG.md

+18
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Covid19 Cuba Data Mobile Application Changelog
22

3+
## [0.4.0] - April 7, 2020
4+
5+
### Added
6+
7+
* Charts with deaths and recovered data.
8+
* Settings page
9+
* Option for mode of connection
10+
* Remember entity selected for comparison with Cuba
11+
12+
### Changed
13+
14+
* Change data of few charts
15+
16+
### Fixed
17+
18+
* Fix problem with encoding
19+
* Fix table of provinces and municipalities
20+
321
## [0.3.1] - April 4, 2020
422

523
### Changed

lib/main.dart

+9-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@ void main() async {
1616

1717
await NotificationManager.initialize();
1818

19-
await setUpTasks();
19+
/*int setUpTasksMinutes;
20+
try {
21+
setUpTasksMinutes = PrefService.getInt(Constants.prefSetUpTasksMinutes);
22+
} catch (e) {
23+
log(e.toString());
24+
setUpTasksMinutes = Constants.setUpTasksMinutesDefault;
25+
}
26+
await setUpTasks(setUpTasksMinutes);
2027
21-
await setUpClapsTime();
28+
await setUpClapsTime();*/
2229

2330
// TODO: Bug in advice notifications, meanwhile they should be disabled
2431
/*var notifications = getApplicationNotifications();

lib/src/blocs/home_bloc.dart

+3-10
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
3737
}
3838
}
3939
setCubaDataToCache(data);
40-
var countries = await getCountriesDataFromCache();
41-
if (countries == null) countries = await getCountriesData();
42-
setCountriesDataToCache(countries);
43-
yield LoadedHomeState(data: data, countries: countries);
40+
yield LoadedHomeState(data: data);
4441
} on BadRequestException catch (e) {
4542
log(e.toString());
4643
var data = await getCubaDataFromCache();
@@ -79,9 +76,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
7976
try {
8077
var data = await getCubaData();
8178
setCubaDataToCache(data);
82-
var countries = await getCountriesData();
83-
setCountriesDataToCache(countries);
84-
yield LoadedHomeState(data: data, countries: countries);
79+
yield LoadedHomeState(data: data);
8580
} on BadRequestException catch (e) {
8681
log(e.toString());
8782
var data = await getCubaDataFromCache();
@@ -119,9 +114,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
119114
try {
120115
var data = await getCubaData();
121116
setCubaDataToCache(data);
122-
var countries = await getCountriesData();
123-
setCountriesDataToCache(countries);
124-
yield LoadedHomeState(data: data, countries: countries);
117+
yield LoadedHomeState(data: data);
125118
} on BadRequestException catch (e) {
126119
log(e.toString());
127120
var data = await getCubaDataFromCache();

lib/src/blocs/states/home_states.dart

+1-4
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,8 @@ class LoadingHomeState extends HomeState {}
1616

1717
class LoadedHomeState extends HomeState {
1818
final DataModel data;
19-
final WorldTotalsModel countries;
2019

21-
const LoadedHomeState({@required this.data, @required this.countries})
22-
: assert(data != null),
23-
assert(countries != null);
20+
const LoadedHomeState({@required this.data}) : assert(data != null);
2421

2522
@override
2623
List<Object> get props => [data];

lib/src/data_providers/countries_data_provider.dart

-62
This file was deleted.

lib/src/data_providers/cuba_data_provider.dart

+37-15
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,73 @@ import 'dart:convert';
22
import 'dart:developer';
33

44
import 'package:http/http.dart';
5+
import 'package:package_info/package_info.dart';
56
import 'package:preferences/preferences.dart';
67

78
import 'package:covid19cuba/src/models/models.dart';
89
import 'package:covid19cuba/src/utils/utils.dart';
910

10-
const urlCubaDataCU = 'https://www.cusobu.nat.cu/covid/data/covid19-cuba.json';
11+
const urlCubaDataCU = 'https://cusobu.nat.cu/covid/api/v1/all.json';
1112
const urlCubaDataIO =
12-
'https://covid19cubadata.github.io/data/covid19-cuba.json';
13+
'https://covid19cuba.github.io/covid19cubadata.github.io/api/v1/all.json';
1314

1415
Future<DataModel> getCubaData() async {
15-
try {
16-
return await getCubaDataFrom(urlCubaDataCU);
17-
} catch (e) {
18-
log(e.toString());
19-
return await getCubaDataFrom(urlCubaDataIO);
16+
var mode = PrefService.getInt(Constants.prefConnectionMode) ??
17+
Constants.ConnectionModeMerge;
18+
switch (mode) {
19+
case Constants.ConnectionModeIntranet:
20+
return await getCubaDataFrom(urlCubaDataCU);
21+
case Constants.ConnectionModeInternet:
22+
return await getCubaDataFrom(urlCubaDataIO);
23+
case Constants.ConnectionModeMerge:
24+
default:
25+
try {
26+
return await getCubaDataFrom(urlCubaDataCU);
27+
} catch (e) {
28+
log(e.toString());
29+
return await getCubaDataFrom(urlCubaDataIO);
30+
}
2031
}
2132
}
2233

2334
Future<DataModel> getCubaDataFrom(String url) async {
24-
var resp = await get(url, headers: {'Accept-Encoding':'gzip, deflate, br'});
35+
var resp = await get(url, headers: {
36+
'Accept-Encoding': 'gzip, deflate, br',
37+
});
2538
if (resp.statusCode == 404) {
2639
throw InvalidSourceException('Source is invalid');
2740
} else if (resp.statusCode != 200) {
2841
throw BadRequestException('Bad request');
2942
}
3043
DataModel result;
3144
try {
32-
result = DataModel.fromJson(jsonDecode(resp.body));
45+
var json = jsonDecode(utf8.decode(resp.bodyBytes));
46+
result = DataModel.fromJson(json);
3347
} catch (e) {
3448
log(e.toString());
3549
throw ParseException('Parse error');
3650
}
37-
try{
51+
try {
3852
int time = (DateTime.now().millisecondsSinceEpoch / 1000).round() - 1;
39-
PrefService.setInt('last_data_update', time);
40-
}
41-
catch (e) {
53+
PrefService.setInt(Constants.prefLastDataUpdate, time);
54+
var packageInfo = await PackageInfo.fromPlatform();
55+
var versionCode = int.parse(packageInfo.buildNumber);
56+
PrefService.setInt(Constants.prefVersionCode, versionCode);
57+
} catch (e) {
4258
log(e.toString());
4359
}
4460
return result;
4561
}
4662

4763
Future<DataModel> getCubaDataFromCache() async {
4864
try {
49-
var data = PrefService.getString('data');
65+
var packageInfo = await PackageInfo.fromPlatform();
66+
var versionCodeNow = int.parse(packageInfo.buildNumber);
67+
var versionCodeOld = PrefService.getInt(Constants.prefVersionCode) ?? 0;
68+
if (versionCodeNow != versionCodeOld) {
69+
return null;
70+
}
71+
var data = PrefService.getString(Constants.prefData);
5072
if (data == null) {
5173
return null;
5274
}
@@ -60,7 +82,7 @@ Future<DataModel> getCubaDataFromCache() async {
6082
Future<void> setCubaDataToCache(DataModel data) async {
6183
try {
6284
String result = jsonEncode(data.toJson());
63-
PrefService.setString('data', result);
85+
PrefService.setString(Constants.prefData, result);
6486
} catch (e) {
6587
log(e.toString());
6688
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export 'cuba_data_provider.dart';
2-
export 'countries_data_provider.dart';
32
export 'info_update_provider.dart';
43
export 'news_provider.dart';
54
export 'notifications_data_provider.dart';

lib/src/data_providers/info_update_provider.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const is_info_updated_url = 'https://www.cusobu.nat.cu/covid/cubadata/status/';
1212
Future<InfoUpdate> isInfoUpdated() async {
1313
int time;
1414
try {
15-
time = PrefService.getInt('last_data_update');
15+
time = PrefService.getInt(Constants.prefLastDataUpdate);
1616
} catch (e) {
1717
log(e.toString());
1818
time = (DateTime.now().millisecondsSinceEpoch / 1000).round() - 1;

lib/src/data_providers/notifications_data_provider.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/*
12
import 'dart:math';
23
34
import 'package:covid19cuba/src/models/models.dart';
@@ -46,3 +47,4 @@ List<LocalNotification> getApplicationNotifications() {
4647
}
4748
return notifications;
4849
}
50+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
import 'package:covid19cuba/src/models/models.dart';
4+
5+
part 'cases_by_mode_of_contagion.g.dart';
6+
7+
@JsonSerializable()
8+
class CasesByModeOfContagion {
9+
Item imported;
10+
Item inserted;
11+
Item autochthonous;
12+
Item unknown;
13+
14+
CasesByModeOfContagion();
15+
16+
factory CasesByModeOfContagion.fromJson(Map<String, dynamic> json) =>
17+
_$CasesByModeOfContagionFromJson(json);
18+
19+
Map<String, dynamic> toJson() => _$CasesByModeOfContagionToJson(this);
20+
}

lib/src/models/cases_by_mode_of_contagion.g.dart

+33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
import 'package:covid19cuba/src/models/models.dart';
4+
5+
part 'cases_by_nationality.g.dart';
6+
7+
@JsonSerializable()
8+
class CasesByNationality {
9+
Item foreign;
10+
Item cubans;
11+
Item unknown;
12+
13+
CasesByNationality();
14+
15+
factory CasesByNationality.fromJson(Map<String, dynamic> json) =>
16+
_$CasesByNationalityFromJson(json);
17+
18+
Map<String, dynamic> toJson() => _$CasesByNationalityToJson(this);
19+
}

lib/src/models/cases_by_nationality.g.dart

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

lib/src/models/cases_by_sex.dart

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
import 'package:covid19cuba/src/models/models.dart';
4+
5+
part 'cases_by_sex.g.dart';
6+
7+
@JsonSerializable()
8+
class CasesBySex {
9+
Item men;
10+
Item women;
11+
Item unknown;
12+
13+
CasesBySex();
14+
15+
factory CasesBySex.fromJson(Map<String, dynamic> json) =>
16+
_$CasesBySexFromJson(json);
17+
18+
Map<String, dynamic> toJson() => _$CasesBySexToJson(this);
19+
}

0 commit comments

Comments
 (0)