mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-31 12:42:34 +00:00
fix(sonarr): support Sonarr v4 API changes
This commit is contained in:
@@ -621,10 +621,10 @@ class SonarrAPIController {
|
||||
required SonarrSeriesType seriesType,
|
||||
required bool seasonFolder,
|
||||
required SonarrQualityProfile qualityProfile,
|
||||
required SonarrLanguageProfile languageProfile,
|
||||
required SonarrRootFolder rootFolder,
|
||||
required SonarrSeriesMonitorType monitorType,
|
||||
required List<SonarrTag> tags,
|
||||
SonarrLanguageProfile? languageProfile,
|
||||
bool showSnackbar = true,
|
||||
}) async {
|
||||
if (context.read<SonarrState>().enabled) {
|
||||
|
||||
@@ -139,10 +139,11 @@ extension SonarrEventTypeLunaExtension on SonarrEventType {
|
||||
title: 'sonarr.Quality'.tr(),
|
||||
body: history.quality?.quality?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Languages'.tr(),
|
||||
body: history.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
if (history.language != null)
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Languages'.tr(),
|
||||
body: history.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Client'.tr(),
|
||||
body: history.data!['downloadClient'] ?? LunaUI.TEXT_EMDASH,
|
||||
@@ -242,10 +243,11 @@ extension SonarrEventTypeLunaExtension on SonarrEventType {
|
||||
title: 'sonarr.Quality'.tr(),
|
||||
body: history.quality?.quality?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Languages'.tr(),
|
||||
body: history.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
if (history.language != null)
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Languages'.tr(),
|
||||
body: history.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Indexer'.tr(),
|
||||
body: history.data!['indexer'],
|
||||
|
||||
@@ -142,10 +142,13 @@ extension SonarrSeriesExtension on SonarrSeries {
|
||||
series.seasonFolder = edits.useSeasonFolders;
|
||||
series.path = edits.seriesPath;
|
||||
series.qualityProfileId = edits.qualityProfile?.id ?? this.qualityProfileId;
|
||||
series.languageProfileId =
|
||||
edits.languageProfile.id ?? this.languageProfileId;
|
||||
series.seriesType = edits.seriesType ?? this.seriesType;
|
||||
series.tags = edits.tags?.map((t) => t.id!).toList() ?? [];
|
||||
if (edits.languageProfile != null) {
|
||||
series.languageProfileId =
|
||||
edits.languageProfile!.id ?? this.languageProfileId;
|
||||
}
|
||||
|
||||
return series;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,8 +221,24 @@ class SonarrState extends LunaModuleState {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<List<SonarrLanguageProfile>> _fetchLanguageProfiles() async {
|
||||
try {
|
||||
final profiles = await _api!.profile.getLanguageProfiles();
|
||||
return profiles;
|
||||
} catch (error, stack) {
|
||||
LunaLogger().error(
|
||||
'Failed to fetch language profiles, assuming v4',
|
||||
error,
|
||||
stack,
|
||||
);
|
||||
return const [];
|
||||
}
|
||||
}
|
||||
|
||||
void fetchLanguageProfiles() {
|
||||
if (_api != null) _languageProfiles = _api!.profile.getLanguageProfiles();
|
||||
if (_api != null) {
|
||||
_languageProfiles = _fetchLanguageProfiles();
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,8 @@ class _State extends State<AddSeriesDetailsRoute>
|
||||
const SonarrSeriesAddDetailsRootFolderTile(),
|
||||
const SonarrSeriesAddDetailsMonitorTile(),
|
||||
const SonarrSeriesAddDetailsQualityProfileTile(),
|
||||
const SonarrSeriesAddDetailsLanguageProfileTile(),
|
||||
if (languageProfiles.isNotEmpty)
|
||||
const SonarrSeriesAddDetailsLanguageProfileTile(),
|
||||
const SonarrSeriesAddDetailsSeriesTypeTile(),
|
||||
const SonarrSeriesAddDetailsUseSeasonFoldersTile(),
|
||||
const SonarrSeriesAddDetailsTagsTile(),
|
||||
|
||||
@@ -121,7 +121,8 @@ class _State extends State<SeriesEditRoute>
|
||||
const SonarrSeriesEditMonitoredTile(),
|
||||
const SonarrSeriesEditSeasonFoldersTile(),
|
||||
SonarrSeriesEditQualityProfileTile(profiles: qualityProfiles),
|
||||
SonarrSeriesEditLanguageProfileTile(profiles: languageProfiles),
|
||||
if (languageProfiles.isNotEmpty)
|
||||
SonarrSeriesEditLanguageProfileTile(profiles: languageProfiles),
|
||||
const SonarrSeriesEditSeriesTypeTile(),
|
||||
const SonarrSeriesEditSeriesPathTile(),
|
||||
const SonarrSeriesEditTagsTile(),
|
||||
|
||||
@@ -80,14 +80,15 @@ class SonarrSeriesEditState extends ChangeNotifier {
|
||||
);
|
||||
}
|
||||
|
||||
late SonarrLanguageProfile _languageProfile;
|
||||
SonarrLanguageProfile get languageProfile => _languageProfile;
|
||||
set languageProfile(SonarrLanguageProfile languageProfile) {
|
||||
SonarrLanguageProfile? _languageProfile;
|
||||
SonarrLanguageProfile? get languageProfile => _languageProfile;
|
||||
set languageProfile(SonarrLanguageProfile? languageProfile) {
|
||||
_languageProfile = languageProfile;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void initializeLanguageProfile(List<SonarrLanguageProfile> languageProfiles) {
|
||||
if (languageProfiles.isEmpty) return;
|
||||
_languageProfile = languageProfiles.firstWhere(
|
||||
(p) => p.id == series!.languageProfileId,
|
||||
);
|
||||
|
||||
@@ -16,7 +16,8 @@ class SonarrSeriesEditLanguageProfileTile extends StatelessWidget {
|
||||
title: 'sonarr.LanguageProfile'.tr(),
|
||||
body: [
|
||||
TextSpan(
|
||||
text: context.watch<SonarrSeriesEditState>().languageProfile.name,
|
||||
text: context.watch<SonarrSeriesEditState>().languageProfile?.name ??
|
||||
LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
],
|
||||
trailing: const LunaIconButton.arrow(),
|
||||
|
||||
@@ -92,10 +92,12 @@ class _State extends State<SonarrQueueTile> {
|
||||
text: widget.queueRecord.quality?.quality?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
TextSpan(
|
||||
text: widget.queueRecord.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
if (widget.queueRecord.language != null)
|
||||
TextSpan(
|
||||
text: widget.queueRecord.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
if (widget.queueRecord.language != null)
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
TextSpan(
|
||||
text: widget.queueRecord.lunaTimeLeft(),
|
||||
),
|
||||
@@ -162,10 +164,11 @@ class _State extends State<SonarrQueueTile> {
|
||||
title: 'sonarr.Quality'.tr(),
|
||||
body: widget.queueRecord.quality?.quality?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Language'.tr(),
|
||||
body: widget.queueRecord.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
if (widget.queueRecord.language != null)
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Language'.tr(),
|
||||
body: widget.queueRecord.language?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Client'.tr(),
|
||||
body: widget.queueRecord.downloadClient ?? LunaUI.TEXT_EMDASH,
|
||||
|
||||
@@ -80,8 +80,10 @@ class _State extends State<SonarrReleasesTile> {
|
||||
if (_preferredWordScore != null)
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
TextSpan(text: widget.release.lunaQuality),
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
TextSpan(text: widget.release.lunaLanguage),
|
||||
if (widget.release.language != null)
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
if (widget.release.language != null)
|
||||
TextSpan(text: widget.release.lunaLanguage),
|
||||
TextSpan(text: LunaUI.TEXT_BULLET.pad()),
|
||||
TextSpan(text: widget.release.lunaSize),
|
||||
],
|
||||
@@ -118,10 +120,11 @@ class _State extends State<SonarrReleasesTile> {
|
||||
title: 'sonarr.Size'.tr(),
|
||||
body: widget.release.lunaSize,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Language'.tr(),
|
||||
body: widget.release.lunaLanguage,
|
||||
),
|
||||
if (widget.release.language != null)
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Language'.tr(),
|
||||
body: widget.release.lunaLanguage,
|
||||
),
|
||||
LunaTableContent(
|
||||
title: 'sonarr.Quality'.tr(),
|
||||
body: widget.release.lunaQuality,
|
||||
|
||||
@@ -47,7 +47,9 @@ class SonarrEpisodeDetailsSheet extends LunaBottomModalSheet {
|
||||
: LunaColours.accent,
|
||||
text: episodeFile!.quality?.quality?.name ?? LunaUI.TEXT_EMDASH,
|
||||
),
|
||||
if (episode!.hasFile! && episodeFile != null)
|
||||
if (episode!.hasFile! &&
|
||||
episodeFile != null &&
|
||||
episodeFile!.languageCutoffNotMet != null)
|
||||
LunaHighlightedNode(
|
||||
backgroundColor: episodeFile!.languageCutoffNotMet!
|
||||
? LunaColours.orange
|
||||
|
||||
Reference in New Issue
Block a user