From 52fdee39e7b7b6c13f02281918cd9969e746397c Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 22 Dec 2022 03:17:27 +0100 Subject: [PATCH 1/4] chore: update stremio-core-web --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b5d8bcef8..928a5a31d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.44.8", + "@stremio/stremio-core-web": "0.44.9", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", @@ -2699,9 +2699,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "node_modules/@stremio/stremio-core-web": { - "version": "0.44.8", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.8.tgz", - "integrity": "sha512-c7ARfOxf0yy73b6sZauCLPUjpNYacF9tZXW7bxxg18IBGv7kXDBvLnk1rc54XKhJfHRgAPJuY5I1ijA0bM4nBQ==", + "version": "0.44.9", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.9.tgz", + "integrity": "sha512-2ziXDj+lsseegJe8vn4OlkpVccoBZRJMs42a3cV4C0N5CNSXs5A6SxMw/ZTnOzLMnpoHF84q5RUYAxcndUGj6w==", "dependencies": { "@babel/runtime": "7.16.0" } @@ -16716,9 +16716,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "@stremio/stremio-core-web": { - "version": "0.44.8", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.8.tgz", - "integrity": "sha512-c7ARfOxf0yy73b6sZauCLPUjpNYacF9tZXW7bxxg18IBGv7kXDBvLnk1rc54XKhJfHRgAPJuY5I1ijA0bM4nBQ==", + "version": "0.44.9", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.9.tgz", + "integrity": "sha512-2ziXDj+lsseegJe8vn4OlkpVccoBZRJMs42a3cV4C0N5CNSXs5A6SxMw/ZTnOzLMnpoHF84q5RUYAxcndUGj6w==", "requires": { "@babel/runtime": "7.16.0" } diff --git a/package.json b/package.json index b998ad00e..1b3cac17f 100755 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.44.8", + "@stremio/stremio-core-web": "0.44.9", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", From 9433897b056b1cf86f8c0002f6630df8f562658b Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 22 Dec 2022 03:26:28 +0100 Subject: [PATCH 2/4] feat(Settings): implement data export --- src/routes/Settings/Settings.js | 10 +++++++--- src/routes/Settings/useDataExport.js | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/routes/Settings/useDataExport.js diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js index 3b99b20fb..d98a24267 100644 --- a/src/routes/Settings/Settings.js +++ b/src/routes/Settings/Settings.js @@ -9,6 +9,7 @@ const { useServices } = require('stremio/services'); const { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, ModalDialog, useProfile, useStreamingServer, useBinaryState, withCoreSuspender } = require('stremio/common'); const useProfileSettingsInputs = require('./useProfileSettingsInputs'); const useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs'); +const useDataExport = require('./useDataExport'); const styles = require('./styles'); const GENERAL_SECTION = 'general'; @@ -20,6 +21,7 @@ const Settings = () => { const { core } = useServices(); const { routeFocused } = useRouteFocused(); const profile = useProfile(); + const dataExport = useDataExport(); const streamingServer = useStreamingServer(); const { interfaceLanguageSelect, @@ -82,8 +84,10 @@ const Settings = () => { // TODO }, []); const exportDataOnClick = React.useCallback(() => { - // TODO - }, []); + if (dataExport.exportUrl !== null && typeof dataExport.exportUrl === 'string') { + window.open(dataExport.exportUrl); + } + }, [dataExport.exportUrl]); const reloadStreamingServer = React.useCallback(() => { core.transport.dispatch({ action: 'StreamingServer', @@ -240,7 +244,7 @@ const Settings = () => {
-
diff --git a/src/routes/Settings/useDataExport.js b/src/routes/Settings/useDataExport.js new file mode 100644 index 000000000..8092d550f --- /dev/null +++ b/src/routes/Settings/useDataExport.js @@ -0,0 +1,24 @@ +// Copyright (C) 2017-2022 Smart code 203358507 + +const React = require('react'); +const { useModelState } = require('stremio/common'); + +const map = (dataExport) => ({ + ...dataExport, + exportUrl: dataExport !== null && dataExport.exportUrl !== null && dataExport.exportUrl.type === 'Ready' ? + dataExport.exportUrl.content + : + null +}); + +const useDataExport = () => { + const action = React.useMemo(() => ({ + action: 'Load', + args: { + model: 'DataExport', + } + }), []); + return useModelState({ model: 'data_export', action, map }); +}; + +module.exports = useDataExport; From 2c3e656eb52ae1a84a9a8262ab487552974dd91e Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 22 Dec 2022 11:22:42 +0100 Subject: [PATCH 3/4] chore: update stremio-core-web --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 928a5a31d..275f9aa31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.44.9", + "@stremio/stremio-core-web": "0.44.10", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", @@ -2699,9 +2699,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "node_modules/@stremio/stremio-core-web": { - "version": "0.44.9", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.9.tgz", - "integrity": "sha512-2ziXDj+lsseegJe8vn4OlkpVccoBZRJMs42a3cV4C0N5CNSXs5A6SxMw/ZTnOzLMnpoHF84q5RUYAxcndUGj6w==", + "version": "0.44.10", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.10.tgz", + "integrity": "sha512-+AUJ3d5u5SH64lcuQIAtXPfeIaWzSNfdDL92HECXP29qat2TtCyM+ENLhTuMZzrbInD22SQrRhfIS3T8nFVQYg==", "dependencies": { "@babel/runtime": "7.16.0" } @@ -16716,9 +16716,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "@stremio/stremio-core-web": { - "version": "0.44.9", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.9.tgz", - "integrity": "sha512-2ziXDj+lsseegJe8vn4OlkpVccoBZRJMs42a3cV4C0N5CNSXs5A6SxMw/ZTnOzLMnpoHF84q5RUYAxcndUGj6w==", + "version": "0.44.10", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.10.tgz", + "integrity": "sha512-+AUJ3d5u5SH64lcuQIAtXPfeIaWzSNfdDL92HECXP29qat2TtCyM+ENLhTuMZzrbInD22SQrRhfIS3T8nFVQYg==", "requires": { "@babel/runtime": "7.16.0" } diff --git a/package.json b/package.json index 1b3cac17f..6aff4873d 100755 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.44.9", + "@stremio/stremio-core-web": "0.44.10", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", From 2371ca1d3f0a70a62e7f5d433f41b1ac33c8c3ac Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 23 Dec 2022 06:23:17 +0100 Subject: [PATCH 4/4] refactor(Settings): load data_export model on click --- src/routes/Settings/Settings.js | 15 +++++++++------ src/routes/Settings/useDataExport.js | 22 +++++++++++++++------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js index d98a24267..c90b7150e 100644 --- a/src/routes/Settings/Settings.js +++ b/src/routes/Settings/Settings.js @@ -21,7 +21,7 @@ const Settings = () => { const { core } = useServices(); const { routeFocused } = useRouteFocused(); const profile = useProfile(); - const dataExport = useDataExport(); + const [dataExport, loadDataExport] = useDataExport(); const streamingServer = useStreamingServer(); const { interfaceLanguageSelect, @@ -84,10 +84,8 @@ const Settings = () => { // TODO }, []); const exportDataOnClick = React.useCallback(() => { - if (dataExport.exportUrl !== null && typeof dataExport.exportUrl === 'string') { - window.open(dataExport.exportUrl); - } - }, [dataExport.exportUrl]); + loadDataExport(); + }, []); const reloadStreamingServer = React.useCallback(() => { core.transport.dispatch({ action: 'StreamingServer', @@ -132,6 +130,11 @@ const Settings = () => { const sectionsContainerOnScorll = React.useCallback(throttle(() => { updateSelectedSectionId(); }, 50), []); + React.useEffect(() => { + if (dataExport.exportUrl !== null && typeof dataExport.exportUrl === 'string') { + window.open(dataExport.exportUrl); + } + }, [dataExport.exportUrl]); React.useLayoutEffect(() => { if (routeFocused) { updateSelectedSectionId(); @@ -244,7 +247,7 @@ const Settings = () => {
-
diff --git a/src/routes/Settings/useDataExport.js b/src/routes/Settings/useDataExport.js index 8092d550f..d90d2c397 100644 --- a/src/routes/Settings/useDataExport.js +++ b/src/routes/Settings/useDataExport.js @@ -1,6 +1,7 @@ // Copyright (C) 2017-2022 Smart code 203358507 const React = require('react'); +const { useServices } = require('stremio/services'); const { useModelState } = require('stremio/common'); const map = (dataExport) => ({ @@ -12,13 +13,20 @@ const map = (dataExport) => ({ }); const useDataExport = () => { - const action = React.useMemo(() => ({ - action: 'Load', - args: { - model: 'DataExport', - } - }), []); - return useModelState({ model: 'data_export', action, map }); + const { core } = useServices(); + const loadDataExport = React.useCallback(() => { + core.transport.dispatch({ + action: 'Load', + args: { + model: 'DataExport', + } + }, 'data_export'); + }, []); + const dataExport = useModelState({ model: 'data_export', map }); + return [ + dataExport, + loadDataExport + ]; }; module.exports = useDataExport;