Skip to content
Snippets Groups Projects
Commit 88f5ae56 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Fix display while fetching data

parent 07a99c05
No related branches found
No related tags found
1 merge request!38Resolve "Display current data/chart while fetching new data"
Pipeline #4666 passed
Showing
with 23 additions and 57 deletions
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.36
app.versionCode=36
app.versionName=0.0.37
app.versionCode=37
Display data while fetching API.
Affichage des données pendant le chargement.
......@@ -18,7 +18,7 @@ class DataCountsByDayCubit extends HydratedCubit<DataCountsByDayState> {
}
void update(CountsByDayData? countsByDay) {
if (state.countsByDay.toString() != countsByDay.toString()) {
if ((countsByDay != null) && (state.countsByDay.toString() != countsByDay.toString())) {
setValue(countsByDay);
}
}
......
......@@ -18,7 +18,7 @@ class DataCountsByHourCubit extends HydratedCubit<DataCountsByHourState> {
}
void update(CountsByHourData? countsByHour) {
if (state.countsByHour.toString() != countsByHour.toString()) {
if ((countsByHour != null) && (state.countsByHour.toString() != countsByHour.toString())) {
setValue(countsByHour);
}
}
......
......@@ -18,7 +18,7 @@ class DataDiscoveriesCubit extends HydratedCubit<DataDiscoveriesState> {
}
void update(DiscoveriesData? discoveries) {
if (state.discoveries.toString() != discoveries.toString()) {
if ((discoveries != null) && (state.discoveries.toString() != discoveries.toString())) {
setValue(discoveries);
}
}
......
......@@ -18,7 +18,8 @@ class DataStatisticsGlobalCubit extends HydratedCubit<DataStatisticsGlobalState>
}
void update(StatisticsGlobalData? statisticsGlobal) {
if (state.statisticsGlobal.toString() != statisticsGlobal.toString()) {
if ((statisticsGlobal != null) &&
(state.statisticsGlobal.toString() != statisticsGlobal.toString())) {
setValue(statisticsGlobal);
}
}
......
......@@ -18,7 +18,8 @@ class DataStatisticsRecentCubit extends HydratedCubit<DataStatisticsRecentState>
}
void update(StatisticsRecentData? statisticsRecent) {
if (state.statisticsRecent.toString() != statisticsRecent.toString()) {
if ((statisticsRecent != null) &&
(state.statisticsRecent.toString() != statisticsRecent.toString())) {
setValue(statisticsRecent);
}
}
......
......@@ -18,7 +18,7 @@ class DataTimelineCubit extends HydratedCubit<DataTimelineState> {
}
void update(TimelineData? timeline) {
if (state.timeline.toString() != timeline.toString()) {
if ((timeline != null) && (state.timeline.toString() != timeline.toString())) {
setValue(timeline);
}
}
......
......@@ -18,7 +18,7 @@ class DataTopArtistsCubit extends HydratedCubit<DataTopArtistsState> {
}
void update(TopArtistsData? topArtists) {
if (state.topArtists.toString() != topArtists.toString()) {
if ((topArtists != null) && (state.topArtists.toString() != topArtists.toString())) {
setValue(topArtists);
}
}
......
......@@ -14,11 +14,9 @@ class ScrobblesApi {
static Future<StatisticsGlobalData> fetchGlobalStatistics() async {
final String url = baseUrl + '/stats';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return StatisticsGlobalData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -27,11 +25,9 @@ class ScrobblesApi {
static Future<StatisticsRecentData> fetchRecentStatistics(int daysCount) async {
final String url = baseUrl + '/' + daysCount.toString() + '/stats';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return StatisticsRecentData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -40,11 +36,9 @@ class ScrobblesApi {
static Future<TimelineData> fetchTimeline(int daysCount) async {
final String url = baseUrl + '/data/' + daysCount.toString() + '/timeline';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return TimelineData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -53,11 +47,9 @@ class ScrobblesApi {
static Future<CountsByDayData> fetchCountsByDay(int daysCount) async {
final String url = baseUrl + '/data/' + daysCount.toString() + '/counts-by-day';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return CountsByDayData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -66,11 +58,9 @@ class ScrobblesApi {
static Future<CountsByHourData> fetchCountsByHour(int daysCount) async {
final String url = baseUrl + '/data/' + daysCount.toString() + '/counts-by-hour';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return CountsByHourData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -79,11 +69,9 @@ class ScrobblesApi {
static Future<DiscoveriesData> fetchDiscoveries(int daysCount) async {
final String url = baseUrl + '/data/' + daysCount.toString() + '/news';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return DiscoveriesData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......@@ -92,11 +80,9 @@ class ScrobblesApi {
static Future<TopArtistsData> fetchTopArtists(int daysCount) async {
final String url = baseUrl + '/data/' + daysCount.toString() + '/top-artists';
print('fetching ' + url);
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
print('ok - fetched ' + url);
return TopArtistsData.fromJson(jsonDecode(response.body) as Map<String, dynamic>);
} else {
throw Exception('Failed to get data from API.');
......
......@@ -6,9 +6,8 @@ import 'package:scrobbles/config/app_colors.dart';
import 'package:scrobbles/utils/color_extensions.dart';
class CustomBarChart extends StatelessWidget {
CustomBarChart({super.key});
const CustomBarChart({super.key});
final Widget placeholder = Text('⏳');
final double chartHeight = 150.0;
final double verticalTicksInterval = 10;
final String verticalAxisTitleSuffix = '';
......
......@@ -4,9 +4,8 @@ import 'package:flutter/material.dart';
import 'package:scrobbles/config/app_colors.dart';
class CustomLineChart extends StatelessWidget {
CustomLineChart({super.key});
const CustomLineChart({super.key});
final Widget placeholder = Text('⏳');
final double chartHeight = 150.0;
final double titleFontSize = 10;
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -32,8 +30,7 @@ class CardCountsByDay extends StatelessWidget {
),
loader: updateCountsByDay(daysCount),
content: ChartCountsByDay(
chartData: CountsByDayData.fromJson(jsonDecode(state.countsByDay.toString())),
isLoading: false,
chartData: CountsByDayData.fromJson(state.countsByDay?.toJson()),
),
);
},
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -32,8 +30,7 @@ class CardCountsByHour extends StatelessWidget {
),
loader: updateCountsByHour(daysCount),
content: ChartCountsByHour(
chartData: CountsByHourData.fromJson(jsonDecode(state.countsByHour.toString())),
isLoading: false,
chartData: CountsByHourData.fromJson(state.countsByHour?.toJson()),
),
);
},
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -44,8 +42,7 @@ class CardDiscoveries extends StatelessWidget {
).tr(),
const SizedBox(height: 8),
ChartDiscoveriesArtists(
chartData: DiscoveriesData.fromJson(jsonDecode(state.discoveries.toString())),
isLoading: false,
chartData: DiscoveriesData.fromJson(state.discoveries?.toJson()),
),
const SizedBox(height: 8),
Text(
......@@ -54,8 +51,7 @@ class CardDiscoveries extends StatelessWidget {
).tr(),
const SizedBox(height: 8),
ChartDiscoveriesTracks(
chartData: DiscoveriesData.fromJson(jsonDecode(state.discoveries.toString())),
isLoading: false,
chartData: DiscoveriesData.fromJson(state.discoveries?.toJson()),
),
],
),
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -23,9 +21,7 @@ class CardStatisticsGlobal extends StatelessWidget {
title: 'global_statistics'.tr(),
loader: updateStatisticsGlobal(),
content: ContentStatisticsGlobal(
statistics:
StatisticsGlobalData.fromJson(jsonDecode(state.statisticsGlobal.toString())),
isLoading: false,
statistics: StatisticsGlobalData.fromJson(state.statisticsGlobal?.toJson()),
),
);
},
......
......@@ -34,7 +34,6 @@ class CardStatisticsRecent extends StatelessWidget {
content: ContentStatisticsRecent(
statistics: StatisticsRecentData.fromJson(
jsonDecode(dataState.statisticsRecent.toString())),
isLoading: false,
),
);
},
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -35,12 +33,10 @@ class CardTimeline extends StatelessWidget {
content: Stack(
children: [
ChartTimelineCounts(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
chartData: TimelineData.fromJson(state.timeline?.toJson()),
),
ChartTimelineEclecticism(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
chartData: TimelineData.fromJson(state.timeline?.toJson()),
),
],
),
......
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
......@@ -32,8 +30,7 @@ class CardTopArtists extends StatelessWidget {
),
loader: updateTopArtists(daysCount),
content: ChartTopArtists(
chartData: TopArtistsData.fromJson(jsonDecode(state.topArtists.toString())),
isLoading: false,
chartData: TopArtistsData.fromJson(state.topArtists?.toJson()),
),
);
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment