From b01e8ff2bce7e016a6a4c699299906d27bb2828f Mon Sep 17 00:00:00 2001 From: unclekingpin Date: Wed, 5 Jul 2023 13:27:53 -0700 Subject: [PATCH 1/2] mark external video as watched --- src/routes/MetaDetails/MetaDetails.js | 1 + .../MetaDetails/StreamsList/Stream/Stream.js | 26 +++++++++++++++---- .../MetaDetails/StreamsList/StreamsList.js | 8 +++--- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/routes/MetaDetails/MetaDetails.js b/src/routes/MetaDetails/MetaDetails.js index a61a82ee0..681351473 100644 --- a/src/routes/MetaDetails/MetaDetails.js +++ b/src/routes/MetaDetails/MetaDetails.js @@ -150,6 +150,7 @@ const MetaDetails = ({ urlParams, queryParams }) => { : metaPath !== null ? diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index 362f25aea..1eaa8911f 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -9,7 +9,7 @@ const { useServices } = require('stremio/services'); const StreamPlaceholder = require('./StreamPlaceholder'); const styles = require('./styles'); -const Stream = ({ className, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => { +const Stream = ({ className, videoId, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => { const profile = useProfile(); const streamingServer = useStreamingServer(); const { core } = useServices(); @@ -29,10 +29,22 @@ const Stream = ({ className, addonName, name, description, thumbnail, progress, : null; }, [deepLinks, profile, streamingServer]); - const onClick = React.useCallback((e) => { + const markVideoAsWatched = React.useCallback(() => { + if (typeof videoId === 'string') { + core.transport.dispatch({ + action: 'MetaDetails', + args: { + action: 'MarkVideoAsWatched', + args: [videoId, true] + } + }); + } + }, [videoId]); + const onClick = React.useCallback((event) => { if (href === null) { // link does not lead to the player, it is expected to // open with local video player through the streaming server + markVideoAsWatched(); core.transport.dispatch({ action: 'StreamingServer', args: { @@ -43,15 +55,18 @@ const Stream = ({ className, addonName, name, description, thumbnail, progress, } } }); - } else if (profile.settings.playerType === 'external') { + } else if (profile.settings.playerType !== 'internal') { + markVideoAsWatched(); toast.show({ type: 'success', title: 'Stream opened in external player', timeout: 4000 }); } - props.onClick(e); - }, [href, deepLinks, props.onClick, profile, toast]); + if (typeof props.onClick === 'function') { + props.onClick(event); + } + }, [href, deepLinks, props.onClick, profile, toast, markVideoAsWatched]); const forceDownload = React.useMemo(() => { // we only do this in one case to force the download // of a M3U playlist generated in the browser @@ -95,6 +110,7 @@ Stream.Placeholder = StreamPlaceholder; Stream.propTypes = { className: PropTypes.string, + videoId: PropTypes.string, addonName: PropTypes.string, name: PropTypes.string, description: PropTypes.string, diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index 216e2ca5f..fb859c7ef 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -12,7 +12,7 @@ const styles = require('./styles'); const ALL_ADDONS_KEY = 'ALL'; -const StreamsList = ({ className, ...props }) => { +const StreamsList = ({ className, video, ...props }) => { const { t } = useTranslation(); const { core } = useServices(); const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY); @@ -105,6 +105,7 @@ const StreamsList = ({ className, ...props }) => { {filteredStreams.map((stream, index) => ( { } ); @@ -127,7 +128,8 @@ const StreamsList = ({ className, ...props }) => { StreamsList.propTypes = { className: PropTypes.string, - streams: PropTypes.arrayOf(PropTypes.object).isRequired + streams: PropTypes.arrayOf(PropTypes.object).isRequired, + video: PropTypes.object }; module.exports = StreamsList; From acd8b9c31e51a50db2351aabd7fc964a027f2a44 Mon Sep 17 00:00:00 2001 From: unclekingpin Date: Mon, 17 Jul 2023 14:34:26 -0700 Subject: [PATCH 2/2] update 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 12f0161d0..a9c0e5fa3 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.18", + "@stremio/stremio-core-web": "0.44.19", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", @@ -2703,9 +2703,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "node_modules/@stremio/stremio-core-web": { - "version": "0.44.18", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.18.tgz", - "integrity": "sha512-g89XSIfLIsvN+FIscvBP9t5ywLP1uhGT9jED97e37ScXKCVedOL9ibnn1DJIeUj8U+ezJdbHFx4zWpnMfJdU2A==", + "version": "0.44.19", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.19.tgz", + "integrity": "sha512-5yQOD5dxKbyTjDNj2b2tHpo/aL6i21FXF2AGiEgnfUao+v92JmTwIpC10NSp/I0Jg7NoKA6ZY6LzttW3hrNajQ==", "dependencies": { "@babel/runtime": "7.16.0" } @@ -16804,9 +16804,9 @@ "integrity": "sha512-Dt3PYmy1DZ473QNs99KYXVWQPHtpIl37VUY0+gCEvvuCqE1fRrZIJtZ9KbysUKonvO7WwdQDztgcW0iGoc1dEA==" }, "@stremio/stremio-core-web": { - "version": "0.44.18", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.18.tgz", - "integrity": "sha512-g89XSIfLIsvN+FIscvBP9t5ywLP1uhGT9jED97e37ScXKCVedOL9ibnn1DJIeUj8U+ezJdbHFx4zWpnMfJdU2A==", + "version": "0.44.19", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.19.tgz", + "integrity": "sha512-5yQOD5dxKbyTjDNj2b2tHpo/aL6i21FXF2AGiEgnfUao+v92JmTwIpC10NSp/I0Jg7NoKA6ZY6LzttW3hrNajQ==", "requires": { "@babel/runtime": "7.16.0" } diff --git a/package.json b/package.json index a6b2a9a28..73b806ed6 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.18", + "@stremio/stremio-core-web": "0.44.19", "@stremio/stremio-icons": "4.0.0", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1",