diff --git a/src/common/index.js b/src/common/index.js index c8923bbe0..664f686e3 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -28,7 +28,6 @@ const useInLibrary = require('./useInLibrary'); const useLiveRef = require('./useLiveRef'); const useModelState = require('./useModelState'); const useProfile = require('./useProfile'); -const useStreamingServer = require('./useStreamingServer'); module.exports = { AddonDetailsModal, @@ -62,5 +61,4 @@ module.exports = { useLiveRef, useModelState, useProfile, - useStreamingServer }; diff --git a/src/common/useStreamingServer.js b/src/common/useStreamingServer.js deleted file mode 100644 index 7d3bd470f..000000000 --- a/src/common/useStreamingServer.js +++ /dev/null @@ -1,23 +0,0 @@ -const React = require('react'); -const { useServices } = require('stremio/services'); -const useModelState = require('stremio/common/useModelState'); - -const mapStreamingServerState = (ctx) => { - return ctx.streaming_server; -}; - -const useStreamingServer = () => { - const { core } = useServices(); - const initStreamingServer = React.useCallback(() => { - const ctx = core.getState('ctx'); - return mapStreamingServerState(ctx); - }, []); - const streamingServer = useModelState({ - model: 'ctx', - init: initStreamingServer, - map: mapStreamingServerState - }); - return streamingServer; -}; - -module.exports = useStreamingServer; diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js index e00b92a99..fa311a47e 100644 --- a/src/routes/Settings/Settings.js +++ b/src/routes/Settings/Settings.js @@ -3,7 +3,8 @@ const classnames = require('classnames'); const throttle = require('lodash.throttle'); const Icon = require('stremio-icons/dom'); const { useServices } = require('stremio/services'); -const { Button, Checkbox, NavBar, Multiselect, ColorInput, useProfile, useStreamingServer } = require('stremio/common'); +const { Button, Checkbox, NavBar, Multiselect, ColorInput, useProfile } = require('stremio/common'); +const useStreamingServer = require('./useStreamingServer'); const useProfileSettingsInputs = require('./useProfileSettingsInputs'); const useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs'); const styles = require('./styles'); @@ -15,7 +16,7 @@ const STREAMING_SECTION = 'streaming'; const Settings = () => { const { core } = useServices(); const profile = useProfile(); - const streaminServer = useStreamingServer(); + const streamingServer = useStreamingServer(); const { interfaceLanguageSelect, subtitlesLanguageSelect, @@ -27,11 +28,11 @@ const Settings = () => { playInBackgroundCheckbox, playInExternalPlayerCheckbox, hardwareDecodingCheckbox - } = useProfileSettingsInputs(); + } = useProfileSettingsInputs(profile); const { cacheSizeSelect, torrentProfileSelect - } = useStreamingServerSettingsInputs(); + } = useStreamingServerSettingsInputs(streamingServer); const logoutButtonOnClick = React.useCallback(() => { core.dispatch({ action: 'Ctx', @@ -54,9 +55,9 @@ const Settings = () => { }, []); const reloadStreamingServer = React.useCallback(() => { core.dispatch({ - action: 'Ctx', + action: 'StreamingServer', args: { - action: 'ReloadStreamingServer' + action: 'Reload' } }); }, []); @@ -121,8 +122,8 @@ const Settings = () => {
App Version: {process.env.VERSION}
{ - streaminServer.type === 'Ready' ? -
Server Version: {streaminServer.settings.serverVersion}
+ streamingServer.settings !== null && streamingServer.settings.type === 'Ready' ? +
Server Version: {streamingServer.settings.content.serverVersion}
: null } @@ -337,32 +338,30 @@ const Settings = () => {
{ - streaminServer.type === 'Ready' ? - 'Online' + streamingServer.settings === null ? + 'NotLoaded' : - streaminServer.type === 'Error' ? - `Error: (${streaminServer.error})` + streamingServer.settings.type === 'Ready' ? + 'Online' : - streaminServer.type + streamingServer.settings.type === 'Error' ? + `Error: (${streamingServer.settings.content})` + : + streamingServer.settings.type }
- { - streaminServer.type === 'Ready' ? -
-
-
Base Url
-
-
-
- {streaminServer.base_url} -
-
+
+
+
Url
+
+
+
+ {profile.settings.streaming_server_url}
- : - null - } +
+
{ cacheSizeSelect !== null ?
diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js index 42e06cd50..e6ac8a08f 100644 --- a/src/routes/Settings/useProfileSettingsInputs.js +++ b/src/routes/Settings/useProfileSettingsInputs.js @@ -1,13 +1,11 @@ const React = require('react'); const { useServices } = require('stremio/services'); -const { useProfile } = require('stremio/common'); const languages = require('./languages'); const SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250]; -const useProfileSettingsInputs = () => { +const useProfileSettingsInputs = (profile) => { const { core } = useServices(); - const profile = useProfile(); const interfaceLanguageSelect = React.useMemo(() => ({ options: Object.keys(languages).map((code) => ({ value: code, diff --git a/src/routes/Settings/useStreamingServer.js b/src/routes/Settings/useStreamingServer.js new file mode 100644 index 000000000..ad6e33030 --- /dev/null +++ b/src/routes/Settings/useStreamingServer.js @@ -0,0 +1,16 @@ +const { useModelState } = require('stremio/common'); + +const initStreamingServer = () => ({ + selected: null, + settings: null +}); + +const useStreamingServer = () => { + const streamingServer = useModelState({ + model: 'streaming_server', + init: initStreamingServer, + }); + return streamingServer; +}; + +module.exports = useStreamingServer; diff --git a/src/routes/Settings/useStreamingServerSettingsInputs.js b/src/routes/Settings/useStreamingServerSettingsInputs.js index fc247c902..19542d2b0 100644 --- a/src/routes/Settings/useStreamingServerSettingsInputs.js +++ b/src/routes/Settings/useStreamingServerSettingsInputs.js @@ -1,7 +1,6 @@ const React = require('react'); const isEqual = require('lodash.isequal'); const { useServices } = require('stremio/services'); -const { useStreamingServer } = require('stremio/common'); const CACHE_SIZES = [0, 2147483648, 5368709120, 10737418240, null]; @@ -42,11 +41,10 @@ const TORRENT_PROFILES = { } }; -const useStreaminServerSettingsInputs = () => { +const useStreaminServerSettingsInputs = (streaminServer) => { const { core } = useServices(); - const streaminServer = useStreamingServer(); const cacheSizeSelect = React.useMemo(() => { - if (streaminServer.type !== 'Ready') { + if (streaminServer.settings === null || streaminServer.settings.type !== 'Ready') { return null; } @@ -55,36 +53,36 @@ const useStreaminServerSettingsInputs = () => { label: cacheSizeToString(size), value: JSON.stringify(size) })), - selected: [JSON.stringify(streaminServer.settings.cacheSize)], + selected: [JSON.stringify(streaminServer.settings.content.cacheSize)], renderLabelText: () => { - return cacheSizeToString(streaminServer.settings.cacheSize); + return cacheSizeToString(streaminServer.settings.content.cacheSize); }, onSelect: (event) => { core.dispatch({ - action: 'Ctx', + action: 'StreamingServer', args: { action: 'UpdateSettings', args: { - ...streaminServer.settings, + ...streaminServer.settings.content, cacheSize: JSON.parse(event.value) } } }); } }; - }, [streaminServer.type, streaminServer.settings]); + }, [streaminServer.settings]); const torrentProfileSelect = React.useMemo(() => { - if (streaminServer.type !== 'Ready') { + if (streaminServer.settings === null || streaminServer.settings.type !== 'Ready') { return null; } const selectedTorrentProfile = { - btDownloadSpeedHardLimit: streaminServer.settings.btDownloadSpeedHardLimit, - btDownloadSpeedSoftLimit: streaminServer.settings.btDownloadSpeedSoftLimit, - btHandshakeTimeout: streaminServer.settings.btHandshakeTimeout, - btMaxConnections: streaminServer.settings.btMaxConnections, - btMinPeersForStable: streaminServer.settings.btMinPeersForStable, - btRequestTimeout: streaminServer.settings.btRequestTimeout + btDownloadSpeedHardLimit: streaminServer.settings.content.btDownloadSpeedHardLimit, + btDownloadSpeedSoftLimit: streaminServer.settings.content.btDownloadSpeedSoftLimit, + btHandshakeTimeout: streaminServer.settings.content.btHandshakeTimeout, + btMaxConnections: streaminServer.settings.content.btMaxConnections, + btMinPeersForStable: streaminServer.settings.content.btMinPeersForStable, + btRequestTimeout: streaminServer.settings.content.btRequestTimeout }; const isCustomTorrentProfileSelected = Object.values(TORRENT_PROFILES).every((torrentProfile) => { return !isEqual(torrentProfile, selectedTorrentProfile); @@ -116,18 +114,18 @@ const useStreaminServerSettingsInputs = () => { }, onSelect: (event) => { core.dispatch({ - action: 'Ctx', + action: 'StreamingServer', args: { action: 'UpdateSettings', args: { - ...streaminServer.settings, + ...streaminServer.settings.content, ...JSON.parse(event.value) } } }); } }; - }, [streaminServer.type, streaminServer.settings]); + }, [streaminServer.settings]); return { cacheSizeSelect, torrentProfileSelect }; };