diff --git a/src/apps/stable/routes/user/settings/index.tsx b/src/apps/stable/routes/user/settings/index.tsx index 26145aa6f..393ba7d02 100644 --- a/src/apps/stable/routes/user/settings/index.tsx +++ b/src/apps/stable/routes/user/settings/index.tsx @@ -186,6 +186,27 @@ const UserSettingsPage: FC = () => { + {appHost.supports(AppFeature.DownloadManagement) && ( + +
+
+
+ )} + {appHost.supports(AppFeature.ClientSettings) && ( = ({ const { user } = useApi(); const { data: isQuickConnectEnabled } = useQuickConnectEnabled(); + const onDownloadManagerClick = useCallback(() => { + shell.openDownloadManager(); + onMenuClose(); + }, [ onMenuClose ]); + const onClientSettingsClick = useCallback(() => { shell.openClientSettings(); onMenuClose(); @@ -98,10 +104,25 @@ const AppUserMenu: FC = ({ - {appHost.supports(AppFeature.ClientSettings) && ([ - , + {(appHost.supports(AppFeature.DownloadManagement) || appHost.supports(AppFeature.ClientSettings)) && ( + + )} + + {appHost.supports(AppFeature.DownloadManagement) && ( + + + + + + {globalize.translate('DownloadManager')} + + + )} + + {appHost.supports(AppFeature.ClientSettings) && ( @@ -111,7 +132,7 @@ const AppUserMenu: FC = ({ {globalize.translate('ClientSettings')} - ])} + )} {/* ADMIN LINKS */} {user?.Policy?.IsAdministrator && ([ diff --git a/src/constants/appFeature.ts b/src/constants/appFeature.ts index 70d0f68ec..a301ab16c 100644 --- a/src/constants/appFeature.ts +++ b/src/constants/appFeature.ts @@ -10,6 +10,8 @@ export enum AppFeature { DisplayLanguage = 'displaylanguage', /** The app supports configuring the display mode (TV, Desktop, etc.) */ DisplayMode = 'displaymode', + /** The app supports showing a download management interface via a menu entry */ + DownloadManagement = 'downloadmanagement', /** The app can exit via back navigation */ Exit = 'exit', /** The app can be exited via a menu entry */ diff --git a/src/scripts/shell.js b/src/scripts/shell.js index 979db02c8..0f8ecb17e 100644 --- a/src/scripts/shell.js +++ b/src/scripts/shell.js @@ -15,6 +15,11 @@ export default { window.NativeShell.openClientSettings(); } }, + openDownloadManager: () => { + if (window.NativeShell?.openDownloadManager) { + window.NativeShell.openDownloadManager(); + } + }, openUrl: function(url, target) { if (window.NativeShell?.openUrl) { window.NativeShell.openUrl(url, target); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 5094858ac..8e24c10d5 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -253,6 +253,7 @@ "Down": "Down", "Download": "Download", "DownloadAll": "Download All", + "DownloadManager": "Downloads", "DownloadsValue": "{0} downloads", "DrmChannelsNotImported": "Channels with DRM will not be imported.", "DropShadow": "Drop Shadow",