From b239eb0a11b023fa01b2b813508945b89dbb1173 Mon Sep 17 00:00:00 2001 From: Niraj Nandish <nirajnandish@icloud.com> Date: Wed, 6 Sep 2023 13:47:45 +0400 Subject: [PATCH] feat: display fcc podcasts first (#1109) * chore: remove unused file * feat: show fcc podcasts first * fix: episode duration --- .../podcast-list/podcast_list_viewmodel.dart | 22 +++++++++++++++---- .../lib/ui/views/podcast/podcast_urls.dart | 6 ----- .../podcast_widgets/podcast_tilte_widget.dart | 2 +- 3 files changed, 19 insertions(+), 11 deletions(-) delete mode 100644 mobile-app/lib/ui/views/podcast/podcast_urls.dart diff --git a/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_viewmodel.dart b/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_viewmodel.dart index 407debbb6..cc226a1c6 100644 --- a/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_viewmodel.dart +++ b/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_viewmodel.dart @@ -8,6 +8,12 @@ import 'package:freecodecamp/service/podcast/podcasts_service.dart'; import 'package:path_provider/path_provider.dart'; import 'package:stacked/stacked.dart'; +const fccPodcastUrls = [ + 'https://freecodecamp.libsyn.com/rss', + 'https://feeds.transistor.fm/freecodecamp-podcast-en-espanol', + 'https://feeds.transistor.fm/freecodecamp-podcast-in-chinese' +]; + class PodcastListViewModel extends BaseViewModel { final _databaseService = locator<PodcastsDatabaseService>(); final _developerService = locator<DeveloperService>(); @@ -32,15 +38,23 @@ class PodcastListViewModel extends BaseViewModel { Future<List<Podcasts>> fetchPodcasts(bool isDownloadView) async { String baseUrl = (await _developerService.developmentMode()) - ? 'https://api.mobile.freecodecamp.dev/' - : 'https://api.mobile.freecodecamp.org/'; + ? 'https://api.mobile.freecodecamp.dev' + : 'https://api.mobile.freecodecamp.org'; await _databaseService.initialise(); if (isDownloadView) { return await _databaseService.getPodcasts(); } else { - final res = await _dio.get('${baseUrl}podcasts'); + final res = await _dio.get('$baseUrl/podcasts'); final List<dynamic> podcasts = res.data; - return podcasts.map((podcast) => Podcasts.fromAPIJson(podcast)).toList(); + final podcastList = + podcasts.map((podcast) => Podcasts.fromAPIJson(podcast)).toList(); + final fccPodcasts = podcastList + .where((podcast) => fccPodcastUrls.contains(podcast.url)) + .toList(); + final otherPodcasts = podcastList + .where((podcast) => !fccPodcastUrls.contains(podcast.url)) + .toList(); + return [...fccPodcasts, ...otherPodcasts]; } } } diff --git a/mobile-app/lib/ui/views/podcast/podcast_urls.dart b/mobile-app/lib/ui/views/podcast/podcast_urls.dart deleted file mode 100644 index 46a122d2b..000000000 --- a/mobile-app/lib/ui/views/podcast/podcast_urls.dart +++ /dev/null @@ -1,6 +0,0 @@ -const podcastUrls = [ - 'https://feed.syntax.fm/rss', - 'https://changelog.com/podcast/feed', - 'https://pinecast.com/feed/ladybug-podcast', - 'https://freecodecamp.libsyn.com/rss' -]; diff --git a/mobile-app/lib/ui/widgets/podcast_widgets/podcast_tilte_widget.dart b/mobile-app/lib/ui/widgets/podcast_widgets/podcast_tilte_widget.dart index fa2a8bff5..3369b8207 100644 --- a/mobile-app/lib/ui/widgets/podcast_widgets/podcast_tilte_widget.dart +++ b/mobile-app/lib/ui/widgets/podcast_widgets/podcast_tilte_widget.dart @@ -212,7 +212,7 @@ class PodcastTileState extends State<PodcastTile> { String _parseDuration(Duration dur, BuildContext context) { String hours = (widget.episode.duration!.inMinutes ~/ 60).toString(); - String minutes = (widget.episode.duration!.inMinutes).toString(); + String minutes = (widget.episode.duration!.inMinutes % 60).toString(); if (dur.inMinutes > 59) { return context.t.podcast_duration_hours(