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' ?
-
-
-
-
- {streaminServer.base_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 };
};