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

Fix/improve refresh data

parent f5c3be9e
No related branches found
No related tags found
1 merge request!62Resolve "Fix "pull down to refresh" on repartition page"
Pipeline #5749 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.1.0
app.versionCode=58
app.versionName=0.1.1
app.versionCode=59
Fix/improve refresh data.
Correction/amélioration de la mise à jour des données.
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/models/activity/activity.dart';
part 'activity_state.dart';
class ActivityCubit extends HydratedCubit<ActivityState> {
ActivityCubit()
: super(ActivityState(
currentActivity: Activity.createNull(),
));
void updateState(Activity activity) {
emit(ActivityState(
currentActivity: activity,
));
}
void refresh(BuildContext context) {
BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
}
@override
ActivityState? fromJson(Map<String, dynamic> json) {
final Activity currentActivity = json['currentActivity'] as Activity;
return ActivityState(
currentActivity: currentActivity,
);
}
@override
Map<String, dynamic>? toJson(ActivityState state) {
return <String, dynamic>{
'currentActivity': state.currentActivity.toJson(),
};
}
}
part of 'activity_cubit.dart';
@immutable
class ActivityState extends Equatable {
const ActivityState({
required this.currentActivity,
});
final Activity currentActivity;
@override
List<dynamic> get props => <dynamic>[
currentActivity,
];
}
......@@ -9,7 +9,6 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:path_provider/path_provider.dart';
import 'package:scrobbles/config/theme.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:scrobbles/cubit/nav_cubit_pages.dart';
import 'package:scrobbles/cubit/nav_cubit_screens.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
......@@ -59,7 +58,6 @@ class MyApp extends StatelessWidget {
BlocProvider<NavCubitPage>(create: (context) => NavCubitPage()),
BlocProvider<NavCubitScreen>(create: (context) => NavCubitScreen()),
BlocProvider<ThemeCubit>(create: (context) => ThemeCubit()),
BlocProvider<ActivityCubit>(create: (context) => ActivityCubit()),
BlocProvider<GlobalSettingsCubit>(create: (context) => GlobalSettingsCubit()),
BlocProvider<DataCountsByDayCubit>(create: (context) => DataCountsByDayCubit()),
BlocProvider<DataCountsByHourCubit>(create: (context) => DataCountsByHourCubit()),
......
import 'package:scrobbles/utils/tools.dart';
class Activity {
const Activity();
factory Activity.createNull() {
return const Activity();
}
void dump() {
printlog('');
printlog('## Current activity dump:');
printlog('');
printlog('$Activity:');
printlog('');
}
@override
String toString() {
return '$Activity(${toJson()})';
}
Map<String, dynamic>? toJson() {
return <String, dynamic>{};
}
}
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:unicons/unicons.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/cubit/nav_cubit_pages.dart';
import 'package:scrobbles/config/screen.dart';
import 'package:scrobbles/cubit/nav_cubit_screens.dart';
......@@ -37,7 +46,16 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
// refresh data
menuActions.add(IconButton(
onPressed: () {
BlocProvider.of<ActivityCubit>(context).refresh(context);
BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
},
icon: const Icon(UniconsSolid.refresh),
));
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:scrobbles/cubit/data_discoveries_cubit.dart';
import 'package:scrobbles/cubit/data_new_artists_cubit.dart';
import 'package:scrobbles/cubit/data_new_tracks_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/discoveries.dart';
import 'package:scrobbles/ui/widgets/cards/new_artists.dart';
import 'package:scrobbles/ui/widgets/cards/new_tracks.dart';
......@@ -13,7 +15,9 @@ class PageDiscoveries extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context);
BlocProvider.of<DataDiscoveriesCubit>(context).refresh(context);
BlocProvider.of<DataNewArtistsCubit>(context).refresh(context);
BlocProvider.of<DataNewTracksCubit>(context).refresh(context);
},
child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4),
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
import 'package:scrobbles/cubit/data_statistics_recent_cubit.dart';
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/cubit/data_top_artists_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/statistics_global.dart';
import 'package:scrobbles/ui/widgets/cards/statistics_recent.dart';
import 'package:scrobbles/ui/widgets/cards/timeline.dart';
......@@ -14,7 +17,10 @@ class PageHome extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsGlobalCubit>(context).refresh(context);
BlocProvider.of<DataStatisticsRecentCubit>(context).refresh(context);
BlocProvider.of<DataTimelineCubit>(context).refresh(context);
BlocProvider.of<DataTopArtistsCubit>(context).refresh(context);
},
child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4),
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrobbles/cubit/activity_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_day_cubit.dart';
import 'package:scrobbles/cubit/data_counts_by_hour_cubit.dart';
import 'package:scrobbles/cubit/data_heatmap_cubit.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_day.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_hour.dart';
import 'package:scrobbles/ui/widgets/cards/heatmap.dart';
......@@ -13,7 +15,9 @@ class PageStatistics extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: () async {
BlocProvider.of<ActivityCubit>(context).refresh(context);
BlocProvider.of<DataCountsByDayCubit>(context).refresh(context);
BlocProvider.of<DataCountsByHourCubit>(context).refresh(context);
BlocProvider.of<DataHeatmapCubit>(context).refresh(context);
},
child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 4),
......
......@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
publish_to: "none"
version: 0.1.0+58
version: 0.1.1+59
environment:
sdk: "^3.0.0"
......
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