From 490ecf60d1d2267a1e2a6677db8e58c0dea9e096 Mon Sep 17 00:00:00 2001 From: Jagandeep Brar Date: Tue, 8 Mar 2022 15:34:57 -0600 Subject: [PATCH] fix(radarr): localized strings and correctly display disk/root folder tiles --- .vscode/cspell.json | 1 + assets/localization/en.json | 6 +++ .../core/extensions/radarr_root_folder.dart | 14 ++++-- .../core/extensions/radarr_system_status.dart | 5 +-- .../system_status/pages/page_about.dart | 7 ++- .../system_status/pages/page_disk_space.dart | 26 ++++++----- .../radarr/routes/system_status/widgets.dart | 1 + .../widgets/disk_space_tile.dart | 43 ++++++------------- .../widgets/root_folder_tile.dart | 29 +++++++++++++ localization/radarr/en.json | 6 +++ 10 files changed, 84 insertions(+), 54 deletions(-) create mode 100644 lib/modules/radarr/routes/system_status/widgets/root_folder_tile.dart diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 329478ca..881ebd53 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -24,6 +24,7 @@ "codecov", "deintegrate", "Discogs", + "emdash", "fanart", "fastlane", "hardlink", diff --git a/assets/localization/en.json b/assets/localization/en.json index e75237b6..23bdbce2 100644 --- a/assets/localization/en.json +++ b/assets/localization/en.json @@ -319,6 +319,7 @@ "radarr.DigitalRelease": "Digital Release", "radarr.DirectoryNotFound": "Directory Not Found", "radarr.Discover": "Discover", + "radarr.Disks": "Disks", "radarr.DownloadFailed": "Download Failed", "radarr.DownloadIgnored": "Download Ignored", "radarr.DynamicRange": "Dynamic Range", @@ -356,11 +357,13 @@ "radarr.MovieImported": "Movie Imported ({})", "radarr.MovieNotFound": "Movie Not Found", "radarr.MoviePath": "Movie Path", + "radarr.NoDisksFound": "No Disks Found", "radarr.NoFilesFound": "No Files Found", "radarr.NoHistoryFound": "No History Found", "radarr.NoTagsFound": "No Tags Found", "radarr.NoMoviesFound": "No Movies Found", "radarr.NoResultsFound": "No Results Found", + "radarr.NoRootFoldersFound": "No Root Folders Found", "radarr.NoSubdirectoriesFound": "No Subdirectories Found", "radarr.NoSummaryIsAvailable": "No summary is available.", "radarr.Other": "Other", @@ -379,6 +382,7 @@ "radarr.RemoveMovie": "Remove Movie", "radarr.Resolution": "Resolution", "radarr.RootFolder": "Root Folder", + "radarr.RootFolders": "Root Folders", "radarr.Runtime": "Runtime", "radarr.RunRSSSync": "Run RSS Sync", "radarr.ScanType": "Scan Type", @@ -401,6 +405,8 @@ "radarr.Tags": "Tags", "radarr.TagsDescription": "Manage Your Tags", "radarr.Type": "Type", + "radarr.UnmappedFolder": "1 Unmapped Folder", + "radarr.UnmappedFolders": "{} Unmapped Folders", "radarr.Unmonitored": "Unmonitored", "radarr.UnmonitorMovie": "Unmonitor Movie", "radarr.Upcoming": "Upcoming", diff --git a/lib/modules/radarr/core/extensions/radarr_root_folder.dart b/lib/modules/radarr/core/extensions/radarr_root_folder.dart index 39c63210..11746375 100644 --- a/lib/modules/radarr/core/extensions/radarr_root_folder.dart +++ b/lib/modules/radarr/core/extensions/radarr_root_folder.dart @@ -1,13 +1,19 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/radarr.dart'; -extension LunaRadarrRootFolderExtension on RadarrRootFolder { - String? get lunaPath { - if (this.path != null && this.path!.isNotEmpty) return this.path; +extension LunaRadarrRootFolderExtension on RadarrRootFolder? { + String get lunaPath { + if (this?.path?.isNotEmpty ?? false) return this!.path!; return LunaUI.TEXT_EMDASH; } String get lunaSpace { - return this.freeSpace?.lunaBytesToString() ?? LunaUI.TEXT_EMDASH; + return this?.freeSpace?.lunaBytesToString() ?? LunaUI.TEXT_EMDASH; + } + + String get lunaUnmappedFolders { + int length = this?.unmappedFolders?.length ?? 0; + if (this!.unmappedFolders!.length == 1) return 'radarr.UnmappedFolder'.tr(); + return 'radarr.UnmappedFolders'.tr(args: [length.toString()]); } } diff --git a/lib/modules/radarr/core/extensions/radarr_system_status.dart b/lib/modules/radarr/core/extensions/radarr_system_status.dart index 419b8b5d..847a0dc0 100644 --- a/lib/modules/radarr/core/extensions/radarr_system_status.dart +++ b/lib/modules/radarr/core/extensions/radarr_system_status.dart @@ -22,9 +22,8 @@ extension RadarrSystemStatusExtension on RadarrSystemStatus { return 'No'; } - String get lunaDocker { - if (this.isDocker ?? false) return 'Yes'; - return 'No'; + bool get lunaIsDocker { + return this.isDocker ?? false; } String get lunaDBMigration { diff --git a/lib/modules/radarr/routes/system_status/pages/page_about.dart b/lib/modules/radarr/routes/system_status/pages/page_about.dart index 5221875e..def03f27 100644 --- a/lib/modules/radarr/routes/system_status/pages/page_about.dart +++ b/lib/modules/radarr/routes/system_status/pages/page_about.dart @@ -60,9 +60,12 @@ class _State extends State LunaTableCard( content: [ LunaTableContent(title: 'Version', body: status.lunaVersion), - LunaTableContent(title: 'Package', body: status.lunaPackageVersion), + if (status.lunaIsDocker) + LunaTableContent( + title: 'Package', + body: status.lunaPackageVersion, + ), LunaTableContent(title: '.NET Core', body: status.lunaNetCore), - LunaTableContent(title: 'Docker', body: status.lunaDocker), LunaTableContent(title: 'Migration', body: status.lunaDBMigration), LunaTableContent( title: 'AppData', body: status.lunaAppDataDirectory), diff --git a/lib/modules/radarr/routes/system_status/pages/page_disk_space.dart b/lib/modules/radarr/routes/system_status/pages/page_disk_space.dart index 2121ede7..a468532f 100644 --- a/lib/modules/radarr/routes/system_status/pages/page_disk_space.dart +++ b/lib/modules/radarr/routes/system_status/pages/page_disk_space.dart @@ -66,18 +66,16 @@ class _State extends State } Widget _list( - List diskSpace, List rootFolders) { - if (diskSpace.isEmpty && rootFolders.isEmpty) - return LunaMessage( - text: 'No Disks Found', - buttonText: 'Try Again', - onTap: _refreshKey.currentState!.show, - ); + List diskSpace, + List rootFolders, + ) { // Compile Disks - List _disks = [LunaMessage.inList(text: 'No Disks Found')]; - if (diskSpace.isEmpty) + List _disks = [ + LunaMessage.inList(text: 'radarr.NoDisksFound'.tr()) + ]; + if (diskSpace.isNotEmpty) _disks = [ - const LunaHeader(text: 'Disks'), + LunaHeader(text: 'radarr.Disks'.tr()), ...List.generate( diskSpace.length, (index) => RadarrDiskSpaceTile(diskSpace: diskSpace[index]), @@ -85,14 +83,14 @@ class _State extends State ]; // Compile root folders List _rootFolders = [ - LunaMessage.inList(text: 'No Root Folders Found') + LunaMessage.inList(text: 'radarr.NoRootFoldersFound'.tr()) ]; - if (rootFolders.isEmpty) + if (rootFolders.isNotEmpty) _rootFolders = [ - const LunaHeader(text: 'Root Folders'), + LunaHeader(text: 'radarr.RootFolders'.tr()), ...List.generate( rootFolders.length, - (index) => RadarrDiskSpaceTile(rootFolder: rootFolders[index]), + (index) => RadarrRootFolderTile(rootFolder: rootFolders[index]), ), ]; return LunaListView( diff --git a/lib/modules/radarr/routes/system_status/widgets.dart b/lib/modules/radarr/routes/system_status/widgets.dart index 1c2ce7f2..bcd8cc7c 100644 --- a/lib/modules/radarr/routes/system_status/widgets.dart +++ b/lib/modules/radarr/routes/system_status/widgets.dart @@ -1,3 +1,4 @@ export 'widgets/disk_space_tile.dart'; export 'widgets/health_tile.dart'; export 'widgets/navigation_bar.dart'; +export 'widgets/root_folder_tile.dart'; diff --git a/lib/modules/radarr/routes/system_status/widgets/disk_space_tile.dart b/lib/modules/radarr/routes/system_status/widgets/disk_space_tile.dart index 8a698588..77583b9e 100644 --- a/lib/modules/radarr/routes/system_status/widgets/disk_space_tile.dart +++ b/lib/modules/radarr/routes/system_status/widgets/disk_space_tile.dart @@ -3,47 +3,28 @@ import 'package:lunasea/core.dart'; import 'package:lunasea/modules/radarr.dart'; class RadarrDiskSpaceTile extends StatelessWidget { - final RadarrDiskSpace? diskSpace; - final RadarrRootFolder? rootFolder; + final RadarrDiskSpace diskSpace; - RadarrDiskSpaceTile({ + const RadarrDiskSpaceTile({ Key? key, - this.diskSpace, - this.rootFolder, - }) : super(key: key) { - if (diskSpace == null) - assert( - rootFolder != null, 'diskSpace and rootFolder cannot both be null'); - if (rootFolder == null) - assert(diskSpace != null, 'diskSpace and rootFolder cannot both be null'); - } + required this.diskSpace, + }) : super(key: key); @override Widget build(BuildContext context) { return LunaBlock( - title: diskSpace?.lunaPath ?? rootFolder?.lunaPath ?? LunaUI.TEXT_EMDASH, - body: [ - TextSpan( - text: diskSpace?.lunaSpace ?? - rootFolder?.lunaSpace ?? - LunaUI.TEXT_EMDASH, - ) - ], - bottom: diskSpace != null ? _bottomWidget() : null, + title: diskSpace.lunaPath, + body: [TextSpan(text: diskSpace.lunaSpace)], + bottom: LunaLinearPercentIndicator( + percent: diskSpace.lunaPercentage / 100, + progressColor: diskSpace.lunaColor, + ), bottomHeight: LunaLinearPercentIndicator.height, trailing: LunaIconButton( - text: diskSpace?.lunaPercentageString ?? - (rootFolder?.unmappedFolders?.length ?? 0).toString(), + text: diskSpace.lunaPercentageString, textSize: LunaUI.FONT_SIZE_H4, - color: diskSpace?.lunaColor ?? LunaColours.accent, + color: diskSpace.lunaColor, ), ); } - - Widget _bottomWidget() { - return LunaLinearPercentIndicator( - percent: (diskSpace?.lunaPercentage ?? 0) / 100, - progressColor: diskSpace?.lunaColor ?? LunaColours.accent, - ); - } } diff --git a/lib/modules/radarr/routes/system_status/widgets/root_folder_tile.dart b/lib/modules/radarr/routes/system_status/widgets/root_folder_tile.dart new file mode 100644 index 00000000..08e893ef --- /dev/null +++ b/lib/modules/radarr/routes/system_status/widgets/root_folder_tile.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:lunasea/core.dart'; +import 'package:lunasea/modules/radarr.dart'; + +class RadarrRootFolderTile extends StatelessWidget { + final RadarrRootFolder rootFolder; + + const RadarrRootFolderTile({ + Key? key, + required this.rootFolder, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return LunaBlock( + title: rootFolder.lunaPath, + body: [ + TextSpan(text: rootFolder.lunaSpace), + TextSpan( + text: rootFolder.lunaUnmappedFolders, + style: const TextStyle( + color: LunaColours.accent, + fontWeight: LunaUI.FONT_WEIGHT_BOLD, + ), + ) + ], + ); + } +} diff --git a/localization/radarr/en.json b/localization/radarr/en.json index f4556edc..ca6de6b3 100644 --- a/localization/radarr/en.json +++ b/localization/radarr/en.json @@ -24,6 +24,7 @@ "radarr.DigitalRelease": "Digital Release", "radarr.DirectoryNotFound": "Directory Not Found", "radarr.Discover": "Discover", + "radarr.Disks": "Disks", "radarr.DownloadFailed": "Download Failed", "radarr.DownloadIgnored": "Download Ignored", "radarr.DynamicRange": "Dynamic Range", @@ -61,11 +62,13 @@ "radarr.MovieImported": "Movie Imported ({})", "radarr.MovieNotFound": "Movie Not Found", "radarr.MoviePath": "Movie Path", + "radarr.NoDisksFound": "No Disks Found", "radarr.NoFilesFound": "No Files Found", "radarr.NoHistoryFound": "No History Found", "radarr.NoTagsFound": "No Tags Found", "radarr.NoMoviesFound": "No Movies Found", "radarr.NoResultsFound": "No Results Found", + "radarr.NoRootFoldersFound": "No Root Folders Found", "radarr.NoSubdirectoriesFound": "No Subdirectories Found", "radarr.NoSummaryIsAvailable": "No summary is available.", "radarr.Other": "Other", @@ -84,6 +87,7 @@ "radarr.RemoveMovie": "Remove Movie", "radarr.Resolution": "Resolution", "radarr.RootFolder": "Root Folder", + "radarr.RootFolders": "Root Folders", "radarr.Runtime": "Runtime", "radarr.RunRSSSync": "Run RSS Sync", "radarr.ScanType": "Scan Type", @@ -106,6 +110,8 @@ "radarr.Tags": "Tags", "radarr.TagsDescription": "Manage Your Tags", "radarr.Type": "Type", + "radarr.UnmappedFolder": "1 Unmapped Folder", + "radarr.UnmappedFolders": "{} Unmapped Folders", "radarr.Unmonitored": "Unmonitored", "radarr.UnmonitorMovie": "Unmonitor Movie", "radarr.Upcoming": "Upcoming",