From 60819b5d566e7774d4ee29d74fcf0e3ae41b6c66 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Wed, 22 Nov 2023 01:28:22 +0100 Subject: [PATCH 1/5] add iina & mpv --- src/common/externalPlayerOptions.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/externalPlayerOptions.js b/src/common/externalPlayerOptions.js index 36f530a0b..4f1a9a625 100644 --- a/src/common/externalPlayerOptions.js +++ b/src/common/externalPlayerOptions.js @@ -16,7 +16,12 @@ if (platform.name === 'ios') { { label: 'Just Player', value: 'justplayer' }, { label: 'MX Player', value: 'mxplayer' } ]); -} else if (['windows', 'macos', 'linux'].includes(platform.name)) { +} else if (platform.name === 'macos') { + options = options.concat([ + { label: 'IINA', value: 'iina' }, + { label: 'mpv', value: 'mpv' } + ]); +} else if (['windows', 'linux'].includes(platform.name)) { options = options.concat([ { label: 'VLC', value: 'vlc' } ]); From 785f2be91a937c48f362b07252e9aa7763d51496 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Wed, 22 Nov 2023 02:32:42 +0100 Subject: [PATCH 2/5] fix deeplink href selection --- .../MetaDetails/StreamsList/Stream/Stream.js | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index be46486a4..83735b250 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -15,19 +15,13 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio const { core } = useServices(); const toast = useToast(); const href = React.useMemo(() => { - const haveStreamingServer = streamingServer.settings !== null && streamingServer.settings.type === 'Ready'; - return deepLinks ? - profile.settings.playerType && profile.settings.playerType !== 'internal' ? - platform.isMobile() || !haveStreamingServer ? - (deepLinks.externalPlayer.openPlayer || {})[platform.name] || deepLinks.externalPlayer.href - : null - : - typeof deepLinks.player === 'string' ? - deepLinks.player - : - null - : - null; + if (!deepLinks) return null; + + if (profile.settings.playerType && profile.settings.playerType !== 'internal') { + return (deepLinks.externalPlayer.openPlayer || {})[platform.name] || deepLinks.externalPlayer.href; + } + + return typeof deepLinks.player === 'string' ? deepLinks.player : null; }, [deepLinks, profile, streamingServer]); const markVideoAsWatched = React.useCallback(() => { if (typeof videoId === 'string') { From 61793524f30ef11ec8df766ef864b03657dc80e5 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Wed, 22 Nov 2023 13:19:20 +0100 Subject: [PATCH 3/5] add vlc as an external player on mac --- src/common/externalPlayerOptions.js | 3 ++- src/routes/MetaDetails/StreamsList/Stream/Stream.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/common/externalPlayerOptions.js b/src/common/externalPlayerOptions.js index 4f1a9a625..e1b3938d0 100644 --- a/src/common/externalPlayerOptions.js +++ b/src/common/externalPlayerOptions.js @@ -19,7 +19,8 @@ if (platform.name === 'ios') { } else if (platform.name === 'macos') { options = options.concat([ { label: 'IINA', value: 'iina' }, - { label: 'mpv', value: 'mpv' } + { label: 'mpv', value: 'mpv' }, + { label: 'VLC', value: 'vlc' } ]); } else if (['windows', 'linux'].includes(platform.name)) { options = options.concat([ diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index 83735b250..a8961cfe0 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -16,11 +16,11 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio const toast = useToast(); const href = React.useMemo(() => { if (!deepLinks) return null; - + if (profile.settings.playerType && profile.settings.playerType !== 'internal') { return (deepLinks.externalPlayer.openPlayer || {})[platform.name] || deepLinks.externalPlayer.href; } - + return typeof deepLinks.player === 'string' ? deepLinks.player : null; }, [deepLinks, profile, streamingServer]); const markVideoAsWatched = React.useCallback(() => { From 2c83478ac0faa70f82b06f3475a3eabf09880c3f Mon Sep 17 00:00:00 2001 From: kKaskak <117831817+kKaskak@users.noreply.github.com> Date: Tue, 28 Nov 2023 12:35:54 +0200 Subject: [PATCH 4/5] refactor: correctly translate externalPlayer label --- src/routes/Settings/useProfileSettingsInputs.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js index 2c2f39c88..83d929f2a 100644 --- a/src/routes/Settings/useProfileSettingsInputs.js +++ b/src/routes/Settings/useProfileSettingsInputs.js @@ -196,11 +196,17 @@ const useProfileSettingsInputs = (profile) => { } }), [profile.settings]); const playInExternalPlayerSelect = React.useMemo(() => ({ - options: externalPlayerOptions.map((opt) => { - opt.label = t(opt.label); - return opt; - }), + options: externalPlayerOptions.map((opt) => ({ + value: opt.value, + label: t(opt.label) + })), selected: [`${profile.settings.playerType || 'internal'}`], + renderLabelText: () => { + const selectedLabel = externalPlayerOptions.find( + (opt) => opt.value === profile.settings.playerType + )?.label; + return t(selectedLabel); + }, onSelect: (event) => { core.transport.dispatch({ action: 'Ctx', From 63d0a44fc720e6193c310f79b6a60446365f17eb Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 18 Dec 2023 14:49:03 +0100 Subject: [PATCH 5/5] refactor(Settings): external player options --- src/routes/Settings/useProfileSettingsInputs.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js index dea324a53..5d7d5b87f 100644 --- a/src/routes/Settings/useProfileSettingsInputs.js +++ b/src/routes/Settings/useProfileSettingsInputs.js @@ -213,14 +213,12 @@ const useProfileSettingsInputs = (profile) => { const playInExternalPlayerSelect = React.useMemo(() => ({ options: externalPlayerOptions.map((opt) => ({ value: opt.value, - label: t(opt.label) + label: t(opt.label), })), - selected: [`${profile.settings.playerType || 'internal'}`], + selected: [profile.settings.playerType], renderLabelText: () => { - const selectedLabel = externalPlayerOptions.find( - (opt) => opt.value === profile.settings.playerType - )?.label; - return t(selectedLabel); + const selectedOption = externalPlayerOptions.find(({ value }) => value === profile.settings.playerType); + return selectedOption ? t(selectedOption.label, { defaultValue: selectedOption.label }) : profile.settings.playerType; }, onSelect: (event) => { core.transport.dispatch({