Skip to content

Commit b239eb0

Browse files
authored
feat: display fcc podcasts first (#1109)
* chore: remove unused file * feat: show fcc podcasts first * fix: episode duration
1 parent 61313e0 commit b239eb0

File tree

3 files changed

+19
-11
lines changed

3 files changed

+19
-11
lines changed

mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_viewmodel.dart

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ import 'package:freecodecamp/service/podcast/podcasts_service.dart';
88
import 'package:path_provider/path_provider.dart';
99
import 'package:stacked/stacked.dart';
1010

11+
const fccPodcastUrls = [
12+
'https://freecodecamp.libsyn.com/rss',
13+
'https://feeds.transistor.fm/freecodecamp-podcast-en-espanol',
14+
'https://feeds.transistor.fm/freecodecamp-podcast-in-chinese'
15+
];
16+
1117
class PodcastListViewModel extends BaseViewModel {
1218
final _databaseService = locator<PodcastsDatabaseService>();
1319
final _developerService = locator<DeveloperService>();
@@ -32,15 +38,23 @@ class PodcastListViewModel extends BaseViewModel {
3238

3339
Future<List<Podcasts>> fetchPodcasts(bool isDownloadView) async {
3440
String baseUrl = (await _developerService.developmentMode())
35-
? 'https://api.mobile.freecodecamp.dev/'
36-
: 'https://api.mobile.freecodecamp.org/';
41+
? 'https://api.mobile.freecodecamp.dev'
42+
: 'https://api.mobile.freecodecamp.org';
3743
await _databaseService.initialise();
3844
if (isDownloadView) {
3945
return await _databaseService.getPodcasts();
4046
} else {
41-
final res = await _dio.get('${baseUrl}podcasts');
47+
final res = await _dio.get('$baseUrl/podcasts');
4248
final List<dynamic> podcasts = res.data;
43-
return podcasts.map((podcast) => Podcasts.fromAPIJson(podcast)).toList();
49+
final podcastList =
50+
podcasts.map((podcast) => Podcasts.fromAPIJson(podcast)).toList();
51+
final fccPodcasts = podcastList
52+
.where((podcast) => fccPodcastUrls.contains(podcast.url))
53+
.toList();
54+
final otherPodcasts = podcastList
55+
.where((podcast) => !fccPodcastUrls.contains(podcast.url))
56+
.toList();
57+
return [...fccPodcasts, ...otherPodcasts];
4458
}
4559
}
4660
}

mobile-app/lib/ui/views/podcast/podcast_urls.dart

Lines changed: 0 additions & 6 deletions
This file was deleted.

mobile-app/lib/ui/widgets/podcast_widgets/podcast_tilte_widget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class PodcastTileState extends State<PodcastTile> {
212212

213213
String _parseDuration(Duration dur, BuildContext context) {
214214
String hours = (widget.episode.duration!.inMinutes ~/ 60).toString();
215-
String minutes = (widget.episode.duration!.inMinutes).toString();
215+
String minutes = (widget.episode.duration!.inMinutes % 60).toString();
216216

217217
if (dur.inMinutes > 59) {
218218
return context.t.podcast_duration_hours(

0 commit comments

Comments
 (0)