From fb3e8e53255c457d0922505ad6c2d91f5c0fcf03 Mon Sep 17 00:00:00 2001 From: Jagandeep Brar Date: Sat, 18 Jun 2022 12:58:58 -0400 Subject: [PATCH] fix(database): fallback to defaults on null values in profile --- lib/database/models/profile.dart | 138 +++++------------- lib/modules/dashboard/core/api/api.dart | 52 +++---- .../dashboard/core/api/data/lidarr.dart | 29 ++-- .../dashboard/core/api/data/radarr.dart | 2 - .../dashboard/core/api/data/sonarr.dart | 2 - lib/modules/dashboard/core/state.dart | 4 +- .../dashboard/widgets/content_block.dart | 6 +- lib/modules/lidarr/core/api/api.dart | 25 +--- lib/modules/lidarr/core/api/data/album.dart | 13 +- .../lidarr/core/api/data/catalogue.dart | 27 ++-- lib/modules/lidarr/core/api/data/missing.dart | 37 +++-- lib/modules/lidarr/routes/add_details.dart | 2 +- lib/modules/lidarr/routes/lidarr.dart | 6 +- .../widgets/add_search_result_tile.dart | 2 +- .../lidarr/widgets/catalogue_tile.dart | 4 +- .../lidarr/widgets/details_album_tile.dart | 2 +- .../lidarr/widgets/details_overview.dart | 2 +- lib/modules/lidarr/widgets/missing_tile.dart | 4 +- lib/modules/nzbget/core/api/api.dart | 26 +--- lib/modules/nzbget/routes/nzbget.dart | 7 +- lib/modules/sabnzbd/core/api/api.dart | 24 +-- lib/modules/sabnzbd/routes/sabnzbd.dart | 6 +- 22 files changed, 161 insertions(+), 259 deletions(-) diff --git a/lib/database/models/profile.dart b/lib/database/models/profile.dart index b1bd35b5..7cebc6df 100644 --- a/lib/database/models/profile.dart +++ b/lib/database/models/profile.dart @@ -22,205 +22,133 @@ class LunaProfile extends HiveObject { } @JsonKey() - @HiveField(0) + @HiveField(0, defaultValue: false) bool lidarrEnabled; @JsonKey() - @HiveField(1) + @HiveField(1, defaultValue: '') String lidarrHost; @JsonKey() - @HiveField(2) + @HiveField(2, defaultValue: '') String lidarrKey; @JsonKey() - @HiveField(26) + @HiveField(26, defaultValue: {}) Map lidarrHeaders; - Map getLidarr() { - return { - 'enabled': lidarrEnabled, - 'host': lidarrHost, - 'key': lidarrKey, - 'headers': lidarrHeaders, - }; - } - @JsonKey() - @HiveField(3) + @HiveField(3, defaultValue: false) bool radarrEnabled; @JsonKey() - @HiveField(4) + @HiveField(4, defaultValue: '') String radarrHost; @JsonKey() - @HiveField(5) + @HiveField(5, defaultValue: '') String radarrKey; - @HiveField(27) + @JsonKey() + @HiveField(27, defaultValue: {}) Map radarrHeaders; - Map getRadarr() { - return { - 'enabled': radarrEnabled, - 'host': radarrHost, - 'key': radarrKey, - 'headers': radarrHeaders, - }; - } - @JsonKey() - @HiveField(6) + @HiveField(6, defaultValue: false) bool sonarrEnabled; @JsonKey() - @HiveField(7) + @HiveField(7, defaultValue: '') String sonarrHost; @JsonKey() - @HiveField(8) + @HiveField(8, defaultValue: '') String sonarrKey; @JsonKey() - @HiveField(28) + @HiveField(28, defaultValue: {}) Map sonarrHeaders; - Map getSonarr() { - return { - 'enabled': sonarrEnabled, - 'host': sonarrHost, - 'key': sonarrKey, - 'headers': sonarrHeaders, - }; - } - @JsonKey() - @HiveField(9) + @HiveField(9, defaultValue: false) bool sabnzbdEnabled; @JsonKey() - @HiveField(10) + @HiveField(10, defaultValue: '') String sabnzbdHost; @JsonKey() - @HiveField(11) + @HiveField(11, defaultValue: '') String sabnzbdKey; @JsonKey() - @JsonKey() - @HiveField(29) + @HiveField(29, defaultValue: {}) Map sabnzbdHeaders; - Map getSABnzbd() { - return { - 'enabled': sabnzbdEnabled, - 'host': sabnzbdHost, - 'key': sabnzbdKey, - 'headers': sabnzbdHeaders, - }; - } - @JsonKey() - @HiveField(12) + @HiveField(12, defaultValue: false) bool nzbgetEnabled; @JsonKey() - @HiveField(13) + @HiveField(13, defaultValue: '') String nzbgetHost; @JsonKey() - @HiveField(14) + @HiveField(14, defaultValue: '') String nzbgetUser; @JsonKey() - @HiveField(15) + @HiveField(15, defaultValue: '') String nzbgetPass; @JsonKey() - @HiveField(30) + @HiveField(30, defaultValue: {}) Map nzbgetHeaders; - Map getNZBGet() { - return { - 'enabled': nzbgetEnabled, - 'host': nzbgetHost, - 'user': nzbgetUser, - 'pass': nzbgetPass, - 'headers': nzbgetHeaders, - }; - } - @JsonKey() - @HiveField(23) + @HiveField(23, defaultValue: false) bool wakeOnLANEnabled; @JsonKey() - @HiveField(24) + @HiveField(24, defaultValue: '') String wakeOnLANBroadcastAddress; @JsonKey() - @HiveField(25) + @HiveField(25, defaultValue: '') String wakeOnLANMACAddress; - Map getWakeOnLAN() { - return { - 'enabled': wakeOnLANEnabled, - 'broadcastAddress': wakeOnLANBroadcastAddress, - 'MACAddress': wakeOnLANMACAddress, - }; - } - @JsonKey() - @HiveField(31) + @HiveField(31, defaultValue: false) bool tautulliEnabled; @JsonKey() - @HiveField(32) + @HiveField(32, defaultValue: '') String tautulliHost; @JsonKey() - @HiveField(33) + @HiveField(33, defaultValue: '') String tautulliKey; @JsonKey() - @HiveField(35) + @HiveField(35, defaultValue: {}) Map tautulliHeaders; - Map getTautulli() { - return { - 'enabled': tautulliEnabled, - 'host': tautulliHost, - 'key': tautulliKey, - 'headers': tautulliHeaders, - }; - } - @JsonKey() - @HiveField(40) + @HiveField(40, defaultValue: false) bool overseerrEnabled; @JsonKey() - @HiveField(41) + @HiveField(41, defaultValue: '') String overseerrHost; @JsonKey() - @HiveField(42) + @HiveField(42, defaultValue: '') String overseerrKey; @JsonKey() - @HiveField(43) + @HiveField(43, defaultValue: {}) Map overseerrHeaders; - Map getOverseerr() { - return { - 'enabled': overseerrEnabled, - 'host': overseerrHost, - 'key': overseerrKey, - 'headers': overseerrHeaders, - }; - } - LunaProfile({ //Lidarr this.lidarrEnabled = false, diff --git a/lib/modules/dashboard/core/api/api.dart b/lib/modules/dashboard/core/api/api.dart index 102b75d6..08562b75 100644 --- a/lib/modules/dashboard/core/api/api.dart +++ b/lib/modules/dashboard/core/api/api.dart @@ -9,32 +9,30 @@ import 'package:lunasea/widgets/ui.dart'; import 'package:lunasea/vendor.dart'; class API { - final Map? lidarr; - final Map? radarr; - final Map? sonarr; + final LunaProfile profile; API._internal({ - required this.lidarr, - required this.radarr, - required this.sonarr, + required this.profile, }); - factory API.from(LunaProfile? profile) { - return API._internal( - lidarr: profile?.getLidarr(), - radarr: profile?.getRadarr(), - sonarr: profile?.getSonarr(), - ); + factory API() { + return API._internal(profile: LunaProfile.current); } Future>> getUpcoming(DateTime today) async { Map> _upcoming = {}; - if (lidarr!['enabled'] && DashboardDatabase.CALENDAR_ENABLE_LIDARR.read()) + if (profile.lidarrEnabled && + DashboardDatabase.CALENDAR_ENABLE_LIDARR.read()) { await _getLidarrUpcoming(_upcoming, today); - if (radarr!['enabled'] && DashboardDatabase.CALENDAR_ENABLE_RADARR.read()) + } + if (profile.radarrEnabled && + DashboardDatabase.CALENDAR_ENABLE_RADARR.read()) { await _getRadarrUpcoming(_upcoming, today); - if (sonarr!['enabled'] && DashboardDatabase.CALENDAR_ENABLE_SONARR.read()) + } + if (profile.sonarrEnabled && + DashboardDatabase.CALENDAR_ENABLE_SONARR.read()) { await _getSonarrUpcoming(_upcoming, today); + } return _upcoming; } @@ -42,17 +40,15 @@ class API { Map> map, DateTime today, ) async { - Map _headers = - Map.from(lidarr!['headers']); Dio _client = Dio( BaseOptions( - baseUrl: '${lidarr!['host']}/api/v1/', + baseUrl: '${profile.lidarrHost}/api/v1/', queryParameters: { - if (lidarr!['key'] != '') 'apikey': lidarr!['key'], + if (profile.lidarrKey != '') 'apikey': profile.lidarrKey, 'start': _startDate(today), 'end': _endDate(today), }, - headers: _headers, + headers: profile.lidarrHeaders, followRedirects: true, maxRedirects: 5, ), @@ -87,17 +83,15 @@ class API { Map> map, DateTime today, ) async { - Map _headers = - Map.from(radarr!['headers']); Dio _client = Dio( BaseOptions( - baseUrl: '${radarr!['host']}/api/v3/', + baseUrl: '${profile.radarrHost}/api/v3/', queryParameters: { - if (radarr!['key'] != '') 'apikey': radarr!['key'], + if (profile.radarrKey != '') 'apikey': profile.radarrKey, 'start': _startDate(today), 'end': _endDate(today), }, - headers: _headers, + headers: profile.radarrHeaders, followRedirects: true, maxRedirects: 5, ), @@ -142,17 +136,15 @@ class API { Map> map, DateTime today, ) async { - Map _headers = - Map.from(sonarr!['headers']); Dio _client = Dio( BaseOptions( - baseUrl: '${sonarr!['host']}/api/v3/', + baseUrl: '${profile.sonarrHost}/api/v3/', queryParameters: { - if (sonarr!['key'] != '') 'apikey': sonarr!['key'], + if (profile.sonarrKey != '') 'apikey': profile.sonarrKey, 'start': _startDate(today), 'end': _endDate(today), }, - headers: _headers, + headers: profile.sonarrHeaders, followRedirects: true, maxRedirects: 5, ), diff --git a/lib/modules/dashboard/core/api/data/lidarr.dart b/lib/modules/dashboard/core/api/data/lidarr.dart index 75ecf1c6..f45e144d 100644 --- a/lib/modules/dashboard/core/api/data/lidarr.dart +++ b/lib/modules/dashboard/core/api/data/lidarr.dart @@ -7,7 +7,6 @@ import 'package:lunasea/modules/lidarr/routes/search_results.dart'; import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; class CalendarLidarrData extends CalendarData { - final Map api = LunaProfile.current.getLidarr(); String albumTitle; int artistId; int totalTrackCount; @@ -92,19 +91,27 @@ class CalendarLidarrData extends CalendarData { @override String backgroundUrl(BuildContext context) { - return api['enabled'] - ? (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist/$artistId/fanart-360.jpg?apikey=${api['key']}' - : '${api['host']}/api/v1/MediaCover/Artist/$artistId/fanart-360.jpg?apikey=${api['key']}' - : ''; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistId/fanart-360.jpg?apikey=$key'; + } + return ''; } @override String posterUrl(BuildContext context) { - return api['enabled'] - ? (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist/$artistId/poster-500.jpg?apikey=${api['key']}' - : '${api['host']}/api/v1/MediaCover/Artist/$artistId/poster-500.jpg?apikey=${api['key']}' - : ''; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistId/poster-500.jpg?apikey=$key'; + } + return ''; } } diff --git a/lib/modules/dashboard/core/api/data/radarr.dart b/lib/modules/dashboard/core/api/data/radarr.dart index 790b08b2..431df979 100644 --- a/lib/modules/dashboard/core/api/data/radarr.dart +++ b/lib/modules/dashboard/core/api/data/radarr.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:lunasea/database/models/profile.dart'; import 'package:lunasea/extensions/int/duration.dart'; import 'package:lunasea/extensions/string/string.dart'; import 'package:lunasea/vendor.dart'; @@ -13,7 +12,6 @@ import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; import 'package:provider/provider.dart'; class CalendarRadarrData extends CalendarData { - final Map api = LunaProfile.current.getRadarr(); bool hasFile; String? fileQualityProfile; int year; diff --git a/lib/modules/dashboard/core/api/data/sonarr.dart b/lib/modules/dashboard/core/api/data/sonarr.dart index 4372cb77..16c64426 100644 --- a/lib/modules/dashboard/core/api/data/sonarr.dart +++ b/lib/modules/dashboard/core/api/data/sonarr.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:lunasea/database/models/profile.dart'; import 'package:lunasea/database/tables/lunasea.dart'; import 'package:lunasea/extensions/string/string.dart'; @@ -14,7 +13,6 @@ import 'package:lunasea/modules/dashboard/core/api/data/abstract.dart'; import 'package:provider/provider.dart'; class CalendarSonarrData extends CalendarData { - final Map api = LunaProfile.current.getSonarr(); String episodeTitle; int seasonNumber; int episodeNumber; diff --git a/lib/modules/dashboard/core/state.dart b/lib/modules/dashboard/core/state.dart index 30338bf1..697085a9 100644 --- a/lib/modules/dashboard/core/state.dart +++ b/lib/modules/dashboard/core/state.dart @@ -1,4 +1,3 @@ -import 'package:lunasea/database/models/profile.dart'; import 'package:lunasea/deprecated/state/module_state.dart'; import 'package:lunasea/database/tables/dashboard.dart'; import 'package:lunasea/modules/dashboard/core/adapters/calendar_starting_type.dart'; @@ -28,8 +27,7 @@ class ModuleState extends LunaModuleState { API? _api; API? get api => _api; void resetAPI() { - LunaProfile? _profile = LunaProfile.current; - _api = API.from(_profile); + _api = API(); notifyListeners(); } diff --git a/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart b/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart index cbb59196..723e3558 100644 --- a/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart +++ b/lib/modules/dashboard/routes/dashboard/widgets/content_block.dart @@ -30,11 +30,11 @@ class ContentBlock extends StatelessWidget { Map getHeaders() { switch (data.runtimeType) { case CalendarLidarrData: - return LunaProfile.current.getLidarr()['headers']; + return LunaProfile.current.lidarrHeaders; case CalendarRadarrData: - return LunaProfile.current.getRadarr()['headers']; + return LunaProfile.current.radarrHeaders; case CalendarSonarrData: - return LunaProfile.current.getSonarr()['headers']; + return LunaProfile.current.sonarrHeaders; default: return const {}; } diff --git a/lib/modules/lidarr/core/api/api.dart b/lib/modules/lidarr/core/api/api.dart index 38722321..77571c1f 100644 --- a/lib/modules/lidarr/core/api/api.dart +++ b/lib/modules/lidarr/core/api/api.dart @@ -2,40 +2,29 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/lidarr.dart'; class LidarrAPI { - final Map _values; final Dio _dio; - LidarrAPI._internal(this._values, this._dio); + LidarrAPI._internal(this._dio); factory LidarrAPI.from(LunaProfile profile) { - Map _headers = - Map.from(profile.getLidarr()['headers']); Dio _client = Dio( BaseOptions( - baseUrl: (profile.getLidarr()['host'] as String).endsWith('/') - ? '${profile.getLidarr()['host']}api/v1/' - : '${profile.getLidarr()['host']}/api/v1/', + baseUrl: profile.lidarrHost.endsWith('/') + ? '${profile.lidarrHost}api/v1/' + : '${profile.lidarrHost}/api/v1/', queryParameters: { - if (profile.getLidarr()['key'] != '') - 'apikey': profile.getLidarr()['key'], + if (profile.lidarrKey != '') 'apikey': profile.lidarrKey, }, - headers: _headers, + headers: LunaProfile.current.lidarrHeaders, followRedirects: true, maxRedirects: 5, ), ); - return LidarrAPI._internal( - profile.getLidarr(), - _client, - ); + return LidarrAPI._internal(_client); } void logError(String text, Object error, StackTrace trace) => LunaLogger().error('Lidarr: $text', error, trace); - bool? get enabled => _values['enabled']; - String? get host => _values['host']; - String? get key => _values['key']; - Future testConnection() async => await _dio.get('system/status'); Future> getAllArtists() async { diff --git a/lib/modules/lidarr/core/api/data/album.dart b/lib/modules/lidarr/core/api/data/album.dart index 328cdf76..8d6ac0f1 100644 --- a/lib/modules/lidarr/core/api/data/album.dart +++ b/lib/modules/lidarr/core/api/data/album.dart @@ -1,7 +1,6 @@ import 'package:lunasea/core.dart'; class LidarrAlbumData { - final Map api = LunaProfile.current.getLidarr(); String title; String releaseDate; int albumID; @@ -32,11 +31,13 @@ class LidarrAlbumData { } String albumCoverURI() { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Album' - : '${api['host']}/api/v1/MediaCover/Album'; - return '$_base/$albumID/cover-250.jpg?apikey=${api['key']}'; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Album' + : '$host/api/v1/MediaCover/Album'; + return '$_base/$albumID/cover-250.jpg?apikey=$key'; } return ''; } diff --git a/lib/modules/lidarr/core/api/data/catalogue.dart b/lib/modules/lidarr/core/api/data/catalogue.dart index 17c93dd5..1e323156 100644 --- a/lib/modules/lidarr/core/api/data/catalogue.dart +++ b/lib/modules/lidarr/core/api/data/catalogue.dart @@ -3,7 +3,6 @@ import 'package:lunasea/extensions/int/bytes.dart'; import 'package:lunasea/modules/lidarr.dart'; class LidarrCatalogueData { - final Map api = LunaProfile.current.getLidarr(); String title; String sortTitle; String overview; @@ -121,21 +120,25 @@ class LidarrCatalogueData { } String posterURI() { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist' - : '${api['host']}/api/v1/MediaCover/Artist'; - return '$_base/$artistID/poster-500.jpg?apikey=${api['key']}'; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistID/poster-500.jpg?apikey=$key'; } return ''; } - String fanartURI() { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist' - : '${api['host']}/api/v1/MediaCover/Artist'; - return '$_base/$artistID/fanart-360.jpg?apikey=${api['key']}'; + String fanartURI({bool highRes = false}) { + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistID/fanart-360.jpg?apikey=$key'; } return ''; } diff --git a/lib/modules/lidarr/core/api/data/missing.dart b/lib/modules/lidarr/core/api/data/missing.dart index 2fb9f975..ea146aac 100644 --- a/lib/modules/lidarr/core/api/data/missing.dart +++ b/lib/modules/lidarr/core/api/data/missing.dart @@ -1,7 +1,6 @@ import 'package:lunasea/core.dart'; class LidarrMissingData { - final Map api = LunaProfile.current.getLidarr(); String title; String artistTitle; String releaseDate; @@ -43,31 +42,37 @@ class LidarrMissingData { } String albumCoverURI() { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Album' - : '${api['host']}/api/v1/MediaCover/Album'; - return '$_base/$albumID/cover-250.jpg?apikey=${api['key']}'; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Album' + : '$host/api/v1/MediaCover/Album'; + return '$_base/$albumID/cover-250.jpg?apikey=$key'; } return ''; } String posterURI() { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist' - : '${api['host']}/api/v1/MediaCover/Artist'; - return '$_base/$artistID/poster-500.jpg?apikey=${api['key']}'; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistID/poster-500.jpg?apikey=$key'; } return ''; } String fanartURI({bool highRes = false}) { - if (api['enabled']) { - String _base = (api['host'] as String).endsWith('/') - ? '${api['host']}api/v1/MediaCover/Artist' - : '${api['host']}/api/v1/MediaCover/Artist'; - return '$_base/$artistID/fanart-360.jpg?apikey=${api['key']}'; + final host = LunaProfile.current.lidarrHost; + final key = LunaProfile.current.lidarrKey; + if (LunaProfile.current.lidarrEnabled) { + String _base = host.endsWith('/') + ? '${host}api/v1/MediaCover/Artist' + : '$host/api/v1/MediaCover/Artist'; + return '$_base/$artistID/fanart-360.jpg?apikey=$key'; } return ''; } diff --git a/lib/modules/lidarr/routes/add_details.dart b/lib/modules/lidarr/routes/add_details.dart index 00b9246d..a72548db 100644 --- a/lib/modules/lidarr/routes/add_details.dart +++ b/lib/modules/lidarr/routes/add_details.dart @@ -153,7 +153,7 @@ class _State extends State with LunaScrollControllerMixin { : _arguments!.data.overview, uri: _arguments!.data.posterURI ?? '', squareImage: true, - headers: LunaProfile.current.getLidarr()['headers'], + headers: LunaProfile.current.lidarrHeaders, onLongPress: () async { if (_arguments!.data.discogsLink == null || _arguments!.data.discogsLink == '') diff --git a/lib/modules/lidarr/routes/lidarr.dart b/lib/modules/lidarr/routes/lidarr.dart index 7f1be42a..38af0b78 100644 --- a/lib/modules/lidarr/routes/lidarr.dart +++ b/lib/modules/lidarr/routes/lidarr.dart @@ -50,13 +50,13 @@ class _State extends State { Widget _drawer() => LunaDrawer(page: LunaModule.LIDARR.key); Widget? _bottomNavigationBar() { - if (_api.enabled!) + if (LunaProfile.current.lidarrEnabled) return LidarrNavigationBar(pageController: _pageController); return null; } Widget _body() { - if (!_api.enabled!) + if (!LunaProfile.current.lidarrEnabled) return LunaMessage.moduleNotEnabled( context: context, module: LunaModule.LIDARR.title, @@ -87,7 +87,7 @@ class _State extends State { return arr; }); List? actions; - if (_api.enabled!) + if (LunaProfile.current.lidarrEnabled) actions = [ LunaIconButton( icon: Icons.add_rounded, diff --git a/lib/modules/lidarr/widgets/add_search_result_tile.dart b/lib/modules/lidarr/widgets/add_search_result_tile.dart index c1cf4508..73c8a39d 100644 --- a/lib/modules/lidarr/widgets/add_search_result_tile.dart +++ b/lib/modules/lidarr/widgets/add_search_result_tile.dart @@ -23,7 +23,7 @@ class LidarrAddSearchResultTile extends StatelessWidget { customBodyMaxLines: 3, trailing: alreadyAdded ? null : const LunaIconButton.arrow(), posterIsSquare: true, - posterHeaders: LunaProfile.current.getLidarr()['headers'], + posterHeaders: LunaProfile.current.lidarrHeaders, posterPlaceholderIcon: LunaIcons.USER, posterUrl: _posterUrl, onTap: () async => _enterDetails(context), diff --git a/lib/modules/lidarr/widgets/catalogue_tile.dart b/lib/modules/lidarr/widgets/catalogue_tile.dart index 70b398dc..cf9fbded 100644 --- a/lib/modules/lidarr/widgets/catalogue_tile.dart +++ b/lib/modules/lidarr/widgets/catalogue_tile.dart @@ -47,9 +47,9 @@ class _State extends State { ), posterPlaceholderIcon: LunaIcons.USER, posterUrl: widget.data.posterURI(), - posterHeaders: LunaProfile.current.getLidarr()['headers'], + posterHeaders: LunaProfile.current.lidarrHeaders, backgroundUrl: widget.data.fanartURI(), - backgroundHeaders: LunaProfile.current.getLidarr()['headers'], + backgroundHeaders: LunaProfile.current.lidarrHeaders, posterIsSquare: true, onTap: () async => _enterArtist(), onLongPress: () async => _handlePopup(), diff --git a/lib/modules/lidarr/widgets/details_album_tile.dart b/lib/modules/lidarr/widgets/details_album_tile.dart index 24426ec6..45ac7eb8 100644 --- a/lib/modules/lidarr/widgets/details_album_tile.dart +++ b/lib/modules/lidarr/widgets/details_album_tile.dart @@ -22,7 +22,7 @@ class _State extends State { return LunaBlock( title: widget.data.title, disabled: !widget.data.monitored, - posterHeaders: LunaProfile.current.getLidarr()['headers'] ?? {}, + posterHeaders: LunaProfile.current.lidarrHeaders, posterPlaceholderIcon: LunaIcons.MUSIC, posterIsSquare: true, posterUrl: widget.data.albumCoverURI(), diff --git a/lib/modules/lidarr/widgets/details_overview.dart b/lib/modules/lidarr/widgets/details_overview.dart index 5a5ed73c..23fb80be 100644 --- a/lib/modules/lidarr/widgets/details_overview.dart +++ b/lib/modules/lidarr/widgets/details_overview.dart @@ -32,7 +32,7 @@ class _State extends State : widget.data.overview, uri: widget.data.posterURI(), squareImage: true, - headers: LunaProfile.current.getLidarr()['headers'], + headers: LunaProfile.current.lidarrHeaders, ), LunaTableCard( content: [ diff --git a/lib/modules/lidarr/widgets/missing_tile.dart b/lib/modules/lidarr/widgets/missing_tile.dart index f795f101..dc3e9ea8 100644 --- a/lib/modules/lidarr/widgets/missing_tile.dart +++ b/lib/modules/lidarr/widgets/missing_tile.dart @@ -49,11 +49,11 @@ class _State extends State { onTap: () async => _enterAlbum(), onLongPress: () async => _enterArtist(), posterUrl: widget.entry.albumCoverURI(), - posterHeaders: LunaProfile.current.getLidarr()['headers'], + posterHeaders: LunaProfile.current.lidarrHeaders, posterIsSquare: true, posterPlaceholderIcon: LunaIcons.MUSIC, backgroundUrl: widget.entry.fanartURI(), - backgroundHeaders: LunaProfile.current.getLidarr()['headers'], + backgroundHeaders: LunaProfile.current.lidarrHeaders, ); } diff --git a/lib/modules/nzbget/core/api/api.dart b/lib/modules/nzbget/core/api/api.dart index 59490bd5..908a8ffd 100644 --- a/lib/modules/nzbget/core/api/api.dart +++ b/lib/modules/nzbget/core/api/api.dart @@ -2,40 +2,30 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/nzbget.dart'; class NZBGetAPI { - final Map _values; final Dio _dio; - NZBGetAPI._internal(this._values, this._dio); + NZBGetAPI._internal(this._dio); factory NZBGetAPI.from(LunaProfile profile) { - String _baseURL = Uri.encodeFull(profile.getNZBGet()['host']); - Map _headers = - Map.from(profile.getNZBGet()['headers']); - _baseURL += profile.getNZBGet()['user'] != '' && - profile.getNZBGet()['pass'] != '' - ? '/${profile.getNZBGet()['user']}:${profile.getNZBGet()['pass']}/jsonrpc' + String _baseURL = Uri.encodeFull(profile.nzbgetHost); + _baseURL += profile.nzbgetUser.isNotEmpty && profile.nzbgetPass.isNotEmpty + ? '/${profile.nzbgetUser}:${profile.nzbgetPass}/jsonrpc' : '/jsonrpc'; + Dio _client = Dio( BaseOptions( baseUrl: _baseURL, - headers: _headers, + headers: profile.nzbgetHeaders, followRedirects: true, maxRedirects: 5, ), ); - return NZBGetAPI._internal( - profile.getNZBGet(), - _client, - ); + + return NZBGetAPI._internal(_client); } void logError(String text, Object error, StackTrace trace) => LunaLogger().error('NZBGet: $text', error, trace); - bool? get enabled => _values['enabled']; - String? get host => _values['host']; - String? get user => _values['user']; - String? get pass => _values['pass']; - String getBody(String method, {List? params}) { return json.encode({ "jsonrpc": "2.0", diff --git a/lib/modules/nzbget/routes/nzbget.dart b/lib/modules/nzbget/routes/nzbget.dart index 30815a84..00fb8948 100644 --- a/lib/modules/nzbget/routes/nzbget.dart +++ b/lib/modules/nzbget/routes/nzbget.dart @@ -55,8 +55,9 @@ class _State extends State { Widget _drawer() => LunaDrawer(page: LunaModule.NZBGET.key); Widget? _bottomNavigationBar() { - if (_api.enabled!) + if (LunaProfile.current.nzbgetEnabled) { return NZBGetNavigationBar(pageController: _pageController); + } return null; } @@ -67,7 +68,7 @@ class _State extends State { return value; }); List? actions; - if (_api.enabled!) + if (LunaProfile.current.nzbgetEnabled) actions = [ Selector( selector: (_, model) => model.error, @@ -90,7 +91,7 @@ class _State extends State { } Widget _body() { - if (!_api.enabled!) + if (!LunaProfile.current.nzbgetEnabled) return LunaMessage.moduleNotEnabled( context: context, module: LunaModule.NZBGET.title, diff --git a/lib/modules/sabnzbd/core/api/api.dart b/lib/modules/sabnzbd/core/api/api.dart index 83a75d06..003c3b65 100644 --- a/lib/modules/sabnzbd/core/api/api.dart +++ b/lib/modules/sabnzbd/core/api/api.dart @@ -2,39 +2,31 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/sabnzbd.dart'; class SABnzbdAPI { - final Map _values; final Dio _dio; - SABnzbdAPI._internal(this._values, this._dio); + SABnzbdAPI._internal(this._dio); factory SABnzbdAPI.from(LunaProfile profile) { - Map _headers = - Map.from(profile.getSABnzbd()['headers']); Dio _client = Dio( BaseOptions( - baseUrl: '${profile.getSABnzbd()['host']}/api', + baseUrl: profile.sabnzbdHost.endsWith('/') + ? '${profile.sabnzbdHost}api' + : '${profile.sabnzbdHost}/api', queryParameters: { - if (profile.getSABnzbd()['key'] != '') - 'apikey': profile.getSABnzbd()['key'], + if (profile.sabnzbdKey != '') 'apikey': profile.sabnzbdKey, 'output': 'json', }, - headers: _headers, + headers: profile.sabnzbdHeaders, followRedirects: true, maxRedirects: 5, ), ); - return SABnzbdAPI._internal( - profile.getSABnzbd(), - _client, - ); + + return SABnzbdAPI._internal(_client); } void logError(String text, Object error, StackTrace trace) => LunaLogger().error('SABnzbd: $text', error, trace); - bool? get enabled => _values['enabled']; - String? get host => _values['host']; - String? get key => _values['key']; - Future testConnection() async => _dio.get('', queryParameters: { 'mode': 'fullstatus', }); diff --git a/lib/modules/sabnzbd/routes/sabnzbd.dart b/lib/modules/sabnzbd/routes/sabnzbd.dart index 14aa0b62..f0e6423f 100644 --- a/lib/modules/sabnzbd/routes/sabnzbd.dart +++ b/lib/modules/sabnzbd/routes/sabnzbd.dart @@ -54,7 +54,7 @@ class _State extends State { Widget _drawer() => LunaDrawer(page: LunaModule.SABNZBD.key); Widget? _bottomNavigationBar() { - if (_api.enabled!) + if (LunaProfile.current.sabnzbdEnabled) return SABnzbdNavigationBar(pageController: _pageController); return null; } @@ -66,7 +66,7 @@ class _State extends State { return value; }); List? actions; - if (_api.enabled!) + if (LunaProfile.current.sabnzbdEnabled) actions = [ Selector( selector: (_, model) => model.error, @@ -89,7 +89,7 @@ class _State extends State { } Widget _body() { - if (!_api.enabled!) + if (!LunaProfile.current.sabnzbdEnabled) return LunaMessage.moduleNotEnabled( context: context, module: LunaModule.SABNZBD.title,