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

Clean/move/rename/refactor code

parent 7de05453
No related branches found
No related tags found
1 merge request!31Resolve "Clean / move some code"
Pipeline #4582 passed
This commit is part of merge request !31. Comments created here will be created in the context of that merge request.
Showing
with 121 additions and 80 deletions
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.27
app.versionCode=27
app.versionName=0.0.28
app.versionCode=28
......@@ -9,16 +9,16 @@
"statistics_total_scrobbles_count": "Total scrobbles count: {count}",
"statistics_last_scrobble": "Last scrobble: {datetime}",
"recent_statistics": "Recent statistics",
"statistics_selected_period": "On last {daysCount} days:",
"recent_statistics": "Recent statistics ({daysCount} days)",
"statistics_recent_scrobbles_count_and_discoveries": "{count} scrobbles and {artistsCount} artists / {tracksCount} tracks discovered.",
"timeline_title": "Recent scrobbles ({daysCount} days)",
"counts_by_day": "Counts by day ({daysCount} days)",
"counts_by_hour": "Counts by hour ({daysCount} days)",
"discoveries_artists_title": "Artists discoveries ({daysCount} days)",
"discoveries_tracks_title": "Tracks discoveries ({daysCount} days)",
"discoveries_title": "Discoveries ({daysCount} days)",
"discoveries_artists_title": "Artists",
"discoveries_tracks_title": "Tracks",
"top_artists_title": "Top artists ({daysCount} days)",
......
......@@ -9,16 +9,16 @@
"statistics_total_scrobbles_count": "Nombre total d'écoutes : {count}",
"statistics_last_scrobble": "Dernière écoute : {datetime}",
"recent_statistics": "Statistiques récentes",
"statistics_selected_period": "Sur les {daysCount} derniers jours :",
"recent_statistics": "Statistiques récentes ({daysCount} jours)",
"statistics_recent_scrobbles_count_and_discoveries": "{count} écoutes et {artistsCount} artistes / {tracksCount} morceaux découverts.",
"timeline_title": "Écoutes récentes ({daysCount} jours)",
"counts_by_day": "Écoutes par jour ({daysCount} jours)",
"counts_by_hour": "Écoutes par heure ({daysCount} jours)",
"discoveries_artists_title": "Artistes découverts ({daysCount} jours)",
"discoveries_tracks_title": "Morceaux découverts ({daysCount} jours)",
"discoveries_title": "Découvertes ({daysCount} jours)",
"discoveries_artists_title": "Artistes",
"discoveries_tracks_title": "Morceaux",
"top_artists_title": "Top artistes ({daysCount} jours)",
......
Clean/improve/refactor code.
Nettoyage/améliorations/refactorisations de code.
......@@ -6,9 +6,8 @@ import 'package:hive/hive.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:path_provider/path_provider.dart';
import 'config/theme.dart';
import 'ui/screens/skeleton_screen.dart';
import 'package:scrobbles/config/theme.dart';
import 'package:scrobbles/ui/skeleton.dart';
void main() async {
/// Initialize packages
......
......@@ -7,11 +7,11 @@ class CountsByDayData {
required this.data,
});
factory CountsByDayData.fromJson(Map<String, dynamic> json) {
factory CountsByDayData.fromJson(Map<String, dynamic>? json) {
Map<int, double> data = {};
if (json['counts-by-day'] != null) {
json['counts-by-day'].keys.forEach((day) {
if (json?['counts-by-day'] != null) {
json?['counts-by-day'].keys.forEach((day) {
data[int.parse(day)] = double.parse(json['counts-by-day'][day].toString());
});
}
......@@ -20,7 +20,7 @@ class CountsByDayData {
}
factory CountsByDayData.createEmpty() {
return CountsByDayData.fromJson({});
return CountsByDayData.fromJson({'counts-by-day': {}});
}
String toString() {
......
......@@ -7,11 +7,11 @@ class CountsByHourData {
required this.data,
});
factory CountsByHourData.fromJson(Map<String, dynamic> json) {
factory CountsByHourData.fromJson(Map<String, dynamic>? json) {
Map<int, double> data = {};
if (json['counts-by-hour'] != null) {
json['counts-by-hour'].keys.forEach((day) {
if (json?['counts-by-hour'] != null) {
json?['counts-by-hour'].keys.forEach((day) {
if (int.parse(day) != 24) {
data[int.parse(day)] = double.parse(json['counts-by-hour'][day].toString());
}
......
......@@ -6,10 +6,10 @@ class DiscoveriesDataValue {
const DiscoveriesDataValue({required this.newArtistsCount, required this.newTracksCount});
factory DiscoveriesDataValue.fromJson(Map<String, dynamic> json) {
factory DiscoveriesDataValue.fromJson(Map<String, dynamic>? json) {
return DiscoveriesDataValue(
newArtistsCount: json['new-artists'] as int,
newTracksCount: json['new-tracks'] as int,
newArtistsCount: json?['new-artists'] as int,
newTracksCount: json?['new-tracks'] as int,
);
}
}
......@@ -21,10 +21,10 @@ class DiscoveriesData {
required this.data,
});
factory DiscoveriesData.fromJson(Map<String, dynamic> json) {
factory DiscoveriesData.fromJson(Map<String, dynamic>? json) {
Map<String, DiscoveriesDataValue> data = {};
json.keys.forEach((date) {
json?.keys.forEach((date) {
DiscoveriesDataValue value = DiscoveriesDataValue(
newArtistsCount: json[date]['new-artists'] as int,
newTracksCount: json[date]['new-tracks'] as int,
......
......@@ -9,12 +9,12 @@ class StatisticsGlobalData {
required this.lastScrobble,
});
factory StatisticsGlobalData.fromJson(Map<String, dynamic> json) {
factory StatisticsGlobalData.fromJson(Map<String, dynamic>? json) {
return StatisticsGlobalData(
totalCount: json['totalCount'] != null ? json['totalCount'] as int : 0,
lastScrobble: (json['lastScrobble'] != null && json['lastScrobble']['date'] != null)
totalCount: (json?['totalCount'] != null) ? (json?['totalCount'] as int) : 0,
lastScrobble: (json?['lastScrobble'] != null && json?['lastScrobble']['date'] != null)
? DateTime.parse(
json['lastScrobble']['date'],
json?['lastScrobble']['date'],
)
: DateTime.now(),
);
......
......@@ -13,14 +13,16 @@ class StatisticsRecentData {
required this.selectedPeriod,
});
factory StatisticsRecentData.fromJson(Map<String, dynamic> json) {
factory StatisticsRecentData.fromJson(Map<String, dynamic>? json) {
return StatisticsRecentData(
recentCount: json['recentCount'] != null ? json['recentCount'] as int : 0,
firstPlayedArtistsCount:
json['firstPlayedArtistsCount'] != null ? json['firstPlayedArtistsCount'] as int : 0,
firstPlayedTracksCount:
json['firstPlayedTracksCount'] != null ? json['firstPlayedTracksCount'] as int : 0,
selectedPeriod: json['selectedPeriod'] != null ? json['selectedPeriod'] as int : 0,
recentCount: (json?['recentCount'] != null) ? (json?['recentCount'] as int) : 0,
firstPlayedArtistsCount: (json?['firstPlayedArtistsCount'] != null)
? (json?['firstPlayedArtistsCount'] as int)
: 0,
firstPlayedTracksCount: (json?['firstPlayedTracksCount'] != null)
? (json?['firstPlayedTracksCount'] as int)
: 0,
selectedPeriod: (json?['selectedPeriod'] != null) ? (json?['selectedPeriod'] as int) : 0,
);
}
......
......@@ -6,10 +6,10 @@ class TimelineDataValue {
const TimelineDataValue({required this.counts, required this.eclecticism});
factory TimelineDataValue.fromJson(Map<String, dynamic> json) {
factory TimelineDataValue.fromJson(Map<String, dynamic>? json) {
return TimelineDataValue(
counts: json['counts'] as int,
eclecticism: json['eclecticism'] as int,
counts: json?['counts'] as int,
eclecticism: json?['eclecticism'] as int,
);
}
}
......@@ -21,10 +21,10 @@ class TimelineData {
required this.data,
});
factory TimelineData.fromJson(Map<String, dynamic> json) {
factory TimelineData.fromJson(Map<String, dynamic>? json) {
Map<String, TimelineDataValue> data = {};
json.keys.forEach((date) {
json?.keys.forEach((date) {
TimelineDataValue value = TimelineDataValue(
counts: json[date]['counts'] as int,
eclecticism: json[date]['eclecticism'] as int,
......
......@@ -6,10 +6,10 @@ class TopArtistsDataValue {
const TopArtistsDataValue({required this.artistName, required this.count});
factory TopArtistsDataValue.fromJson(Map<String, dynamic> json) {
factory TopArtistsDataValue.fromJson(Map<String, dynamic>? json) {
return TopArtistsDataValue(
artistName: json['artistName'] as String,
count: json['count'] as int,
artistName: json?['artistName'] as String,
count: json?['count'] as int,
);
}
}
......@@ -21,10 +21,10 @@ class TopArtistsData {
required this.topArtists,
});
factory TopArtistsData.fromJson(Map<String, dynamic> json) {
factory TopArtistsData.fromJson(Map<String, dynamic>? json) {
List<TopArtistsDataValue> topArtists = [];
json['top-artists'].forEach((element) {
json?['top-artists'].forEach((element) {
TopArtistsDataValue value = TopArtistsDataValue(
artistName: element['artistName'] as String,
count: element['count'] as int,
......
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../models/counts_by_day.dart';
import '../models/counts_by_hour.dart';
import '../models/discoveries.dart';
import '../models/statistics_global.dart';
import '../models/statistics_recent.dart';
import '../models/timeline.dart';
import '../models/topartists.dart';
import 'package:scrobbles/models/counts_by_day.dart';
import 'package:scrobbles/models/counts_by_hour.dart';
import 'package:scrobbles/models/discoveries.dart';
import 'package:scrobbles/models/statistics_global.dart';
import 'package:scrobbles/models/statistics_recent.dart';
import 'package:scrobbles/models/timeline.dart';
import 'package:scrobbles/models/topartists.dart';
class ScrobblesApi {
static String baseUrl = 'https://scrobble.harrault.fr';
......
import 'package:flutter/material.dart';
import '../widgets/main_screen/discoveries_card.dart';
import 'package:scrobbles/ui/widgets/cards/discoveries.dart';
class DiscoveriesScreen extends StatefulWidget {
const DiscoveriesScreen({super.key});
class ScreenDiscoveries extends StatefulWidget {
const ScreenDiscoveries({super.key});
@override
State<DiscoveriesScreen> createState() => _DiscoveriesScreenState();
State<ScreenDiscoveries> createState() => _ScreenDiscoveriesState();
}
class _DiscoveriesScreenState extends State<DiscoveriesScreen> {
class _ScreenDiscoveriesState extends State<ScreenDiscoveries> {
@override
Widget build(BuildContext context) {
return Material(
......@@ -19,7 +19,7 @@ class _DiscoveriesScreenState extends State<DiscoveriesScreen> {
physics: const BouncingScrollPhysics(),
children: <Widget>[
const SizedBox(height: 8),
const ChartDiscoveriesCard(),
const CardDiscoveries(),
const SizedBox(height: 36),
],
),
......
import 'package:flutter/material.dart';
import '../widgets/main_screen/statistics_global_card.dart';
import '../widgets/main_screen/statistics_recent_card.dart';
import '../widgets/main_screen/timeline_card.dart';
import '../widgets/main_screen/topartists_card.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';
import 'package:scrobbles/ui/widgets/cards/top_artists.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
class ScreenHome extends StatefulWidget {
const ScreenHome({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
State<ScreenHome> createState() => _ScreenHomeState();
}
class _HomeScreenState extends State<HomeScreen> {
class _ScreenHomeState extends State<ScreenHome> {
@override
Widget build(BuildContext context) {
return Material(
......@@ -22,13 +22,13 @@ class _HomeScreenState extends State<HomeScreen> {
physics: const BouncingScrollPhysics(),
children: <Widget>[
const SizedBox(height: 8),
const StatisticsGlobalCard(),
const CardStatisticsGlobal(),
const SizedBox(height: 6),
const StatisticsRecentCard(),
const CardStatisticsRecent(),
const SizedBox(height: 6),
const ChartTimelineCard(),
const CardTimeline(),
const SizedBox(height: 6),
const ChartTopArtistsCard(),
const CardTopArtists(),
const SizedBox(height: 36),
],
),
......
import 'package:flutter/material.dart';
import '../widgets/main_screen/counts_by_day_card.dart';
import '../widgets/main_screen/counts_by_hour_card.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_day.dart';
import 'package:scrobbles/ui/widgets/cards/counts_by_hour.dart';
class StatisticsScreen extends StatefulWidget {
const StatisticsScreen({super.key});
class ScreenStatistics extends StatefulWidget {
const ScreenStatistics({super.key});
@override
State<StatisticsScreen> createState() => _StatisticsScreenState();
State<ScreenStatistics> createState() => _ScreenStatisticsState();
}
class _StatisticsScreenState extends State<StatisticsScreen> {
class _ScreenStatisticsState extends State<ScreenStatistics> {
@override
Widget build(BuildContext context) {
return Material(
......@@ -20,9 +20,9 @@ class _StatisticsScreenState extends State<StatisticsScreen> {
physics: const BouncingScrollPhysics(),
children: <Widget>[
const SizedBox(height: 8),
const ChartCountsByDayCard(),
const CardCountsByDay(),
const SizedBox(height: 6),
const ChartCountsByHourCard(),
const CardCountsByHour(),
const SizedBox(height: 36),
],
),
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../cubit/bottom_nav_cubit.dart';
import '../widgets/app_bar.dart';
import '../widgets/bottom_nav_bar.dart';
import 'discoveries_screen.dart';
import 'home_screen.dart';
import 'statistics_screen.dart';
import 'package:scrobbles/cubit/bottom_nav_cubit.dart';
import 'package:scrobbles/ui/screens/discoveries.dart';
import 'package:scrobbles/ui/screens/home.dart';
import 'package:scrobbles/ui/screens/statistics.dart';
import 'package:scrobbles/ui/widgets/app_bar.dart';
import 'package:scrobbles/ui/widgets/bottom_nav_bar.dart';
class SkeletonScreen extends StatefulWidget {
const SkeletonScreen({super.key});
......@@ -20,9 +19,9 @@ class _SkeletonScreenState extends State<SkeletonScreen> {
@override
Widget build(BuildContext context) {
const List<Widget> pageNavigation = <Widget>[
const HomeScreen(),
const DiscoveriesScreen(),
const StatisticsScreen(),
const ScreenHome(),
const ScreenDiscoveries(),
const ScreenStatistics(),
];
return BlocProvider<BottomNavCubit>(
......
......@@ -2,12 +2,13 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import '../../../config/app_colors.dart';
import '../../../utils/color_extensions.dart';
import 'package:scrobbles/config/app_colors.dart';
import 'package:scrobbles/utils/color_extensions.dart';
class CustomBarChart extends StatelessWidget {
CustomBarChart({super.key});
final Widget placeholder = Text('⏳');
final double chartHeight = 150.0;
final double verticalTicksInterval = 10;
final String verticalAxisTitleSuffix = '';
......
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import '../../../config/app_colors.dart';
import 'package:scrobbles/config/app_colors.dart';
class CustomLineChart extends StatelessWidget {
CustomLineChart({super.key});
final Widget placeholder = Text('⏳');
final double chartHeight = 150.0;
final double titleFontSize = 10;
......
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