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;