feat: Bump dependencies + make AniList link work
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:anitrack/src/data/data_base.dart';
|
||||
import 'package:anitrack/src/data/source.dart';
|
||||
import 'package:anitrack/src/data/type.dart';
|
||||
import 'package:anitrack/src/service/database.dart';
|
||||
@@ -18,7 +19,9 @@ class BoolConverter implements JsonConverter<bool, int> {
|
||||
|
||||
/// Data about a tracked anime
|
||||
@freezed
|
||||
abstract class AnimeTrackingData with _$AnimeTrackingData, TrackingMedium {
|
||||
abstract class AnimeTrackingData
|
||||
with _$AnimeTrackingData, TrackingMedium
|
||||
implements TrackingDataBase {
|
||||
factory AnimeTrackingData(
|
||||
/// The ID of the anime
|
||||
String id,
|
||||
|
||||
5
lib/src/data/data_base.dart
Normal file
5
lib/src/data/data_base.dart
Normal file
@@ -0,0 +1,5 @@
|
||||
import 'package:anitrack/src/data/source.dart';
|
||||
|
||||
abstract class TrackingDataBase {
|
||||
TrackingDataSource get source;
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:anitrack/src/data/data_base.dart';
|
||||
import 'package:anitrack/src/data/source.dart';
|
||||
import 'package:anitrack/src/data/type.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
@@ -7,7 +8,9 @@ part 'manga.g.dart';
|
||||
|
||||
/// Data about a tracked anime
|
||||
@freezed
|
||||
abstract class MangaTrackingData with _$MangaTrackingData, TrackingMedium {
|
||||
abstract class MangaTrackingData
|
||||
with _$MangaTrackingData, TrackingMedium
|
||||
implements TrackingDataBase {
|
||||
factory MangaTrackingData(
|
||||
/// The ID of the manga
|
||||
String id,
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'package:anitrack/i18n/strings.g.dart';
|
||||
import 'package:anitrack/src/data/anime.dart';
|
||||
import 'package:anitrack/src/data/anime_watcher.dart';
|
||||
import 'package:anitrack/src/data/data_base.dart';
|
||||
import 'package:anitrack/src/data/manga.dart';
|
||||
import 'package:anitrack/src/data/source.dart';
|
||||
import 'package:anitrack/src/data/type.dart';
|
||||
import 'package:anitrack/src/ui/bloc/details_bloc.dart';
|
||||
import 'package:anitrack/src/ui/constants.dart';
|
||||
@@ -28,6 +30,31 @@ class DetailsPage extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
|
||||
String _mangaUrl(MangaTrackingData data) {
|
||||
switch (data.source) {
|
||||
case TrackingDataSource.mal:
|
||||
return 'https://myanimelist.net/manga/${data.id}';
|
||||
case TrackingDataSource.anilist:
|
||||
return 'https://anilist.co/manga/${data.id}';
|
||||
}
|
||||
}
|
||||
|
||||
String _animeUrl(AnimeTrackingData data) {
|
||||
switch (data.source) {
|
||||
case TrackingDataSource.mal:
|
||||
return 'https://myanimelist.net/anime/${data.id}';
|
||||
case TrackingDataSource.anilist:
|
||||
return 'https://anilist.co/anime/${data.id}';
|
||||
}
|
||||
}
|
||||
|
||||
String _sourceButtonName(TrackingDataBase data) {
|
||||
return switch (data.source) {
|
||||
TrackingDataSource.mal => t.details.mal,
|
||||
TrackingDataSource.anilist => t.details.anilist,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -246,20 +273,30 @@ class DetailsPage extends StatelessWidget {
|
||||
children: [
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
final url = switch (state
|
||||
.trackingType) {
|
||||
TrackingMediumType.anime =>
|
||||
'https://myanimelist.net/anime/${state.data!.id}',
|
||||
TrackingMediumType.manga =>
|
||||
'https://myanimelist.net/manga/${state.data!.id}',
|
||||
};
|
||||
final url =
|
||||
switch (state.trackingType) {
|
||||
TrackingMediumType.anime =>
|
||||
_animeUrl(
|
||||
state.data!
|
||||
as AnimeTrackingData,
|
||||
),
|
||||
TrackingMediumType.manga =>
|
||||
_mangaUrl(
|
||||
state.data!
|
||||
as MangaTrackingData,
|
||||
),
|
||||
};
|
||||
await launchUrl(
|
||||
Uri.parse(url),
|
||||
mode: LaunchMode
|
||||
.externalApplication,
|
||||
);
|
||||
},
|
||||
child: Text(t.details.mal),
|
||||
child: Text(
|
||||
_sourceButtonName(
|
||||
state.data! as TrackingDataBase,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user