tsacdop-podcast-app-android/lib/type/episodebrief.dart

88 lines
2.3 KiB
Dart
Raw Normal View History

2020-08-15 19:43:45 +02:00
import 'dart:io';
2020-08-14 14:13:10 +02:00
import 'package:equatable/equatable.dart';
import 'package:audio_service/audio_service.dart';
2020-08-15 19:43:45 +02:00
import 'package:flutter/material.dart';
import '../util/extension_helper.dart';
2020-08-14 14:13:10 +02:00
class EpisodeBrief extends Equatable {
2020-02-09 13:29:09 +01:00
final String title;
final String description;
final int pubDate;
2020-02-09 13:29:09 +01:00
final int enclosureLength;
final String enclosureUrl;
final String feedTitle;
final String primaryColor;
final int liked;
final String downloaded;
final int duration;
final int explicit;
final String imagePath;
final String mediaId;
2020-03-31 18:36:20 +02:00
final int isNew;
final int skipSecondsStart;
final int skipSecondsEnd;
final int downloadDate;
2020-02-09 13:29:09 +01:00
EpisodeBrief(
this.title,
this.enclosureUrl,
this.enclosureLength,
this.pubDate,
this.feedTitle,
this.primaryColor,
this.duration,
this.explicit,
this.imagePath,
2020-07-24 16:10:08 +02:00
this.isNew,
2020-07-23 20:42:25 +02:00
{this.mediaId,
this.liked,
this.downloaded,
this.skipSecondsStart,
this.skipSecondsEnd,
2020-07-23 20:42:25 +02:00
this.description = '',
this.downloadDate = 0})
: assert(enclosureUrl != null);
MediaItem toMediaItem() {
return MediaItem(
id: mediaId,
title: title,
artist: feedTitle,
album: feedTitle,
duration: Duration.zero,
artUri: 'file://$imagePath',
extras: {
'skipSecondsStart': skipSecondsStart,
'skipSecondsEnd': skipSecondsEnd
});
}
2020-08-15 19:43:45 +02:00
ImageProvider get avatarImage {
return File(imagePath).existsSync()
? FileImage(File(imagePath))
: const AssetImage('assets/avatar_backup.png');
}
Color backgroudColor(BuildContext context) {
return context.brightness == Brightness.light
? primaryColor.colorizedark()
: primaryColor.colorizeLight();
}
EpisodeBrief copyWith({
String mediaId,
}) =>
EpisodeBrief(title, enclosureUrl, enclosureLength, pubDate, feedTitle,
primaryColor, duration, explicit, imagePath, isNew,
mediaId: mediaId ?? this.mediaId,
downloaded: downloaded,
skipSecondsStart: skipSecondsStart,
skipSecondsEnd: skipSecondsEnd,
2020-08-15 19:43:45 +02:00
description: description,
downloadDate: downloadDate);
2020-06-05 20:33:47 +02:00
@override
2020-08-14 14:13:10 +02:00
List<Object> get props => [enclosureUrl, title];
2020-02-09 13:29:09 +01:00
}