diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 59bcd5ee2..ba8e878a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,5 +24,5 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./build - destination_dir: ${{ github.ref_name != 'development' && github.ref_name || '' }} + destination_dir: ${{ github.ref_name }} allow_empty_commit: true diff --git a/README.md b/README.md index cea3d0fbb..20f3f6413 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Stremio - Freedom to Stream ![Build](https://github.com/stremio/stremio-web/workflows/Build/badge.svg?branch=development) -[![Netlify](https://api.netlify.com/api/v1/badges/ac26d7ae-d08b-4cc4-a14d-a83ba7c3e8ca/deploy-status)](https://stremio-development.netlify.app) +[![Github Page](https://img.shields.io/website?down_message=offline&label=Page&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iOTgiIGhlaWdodD0iOTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC44NTQgMEMyMS44MzkgMCAwIDIyIDAgNDkuMjE3YzAgMjEuNzU2IDEzLjk5MyA0MC4xNzIgMzMuNDA1IDQ2LjY5IDIuNDI3LjQ5IDMuMzE2LTEuMDU5IDMuMzE2LTIuMzYyIDAtMS4xNDEtLjA4LTUuMDUyLS4wOC05LjEyNy0xMy41OSAyLjkzNC0xNi40Mi01Ljg2Ny0xNi40Mi01Ljg2Ny0yLjE4NC01LjcwNC01LjQyLTcuMTctNS40Mi03LjE3LTQuNDQ4LTMuMDE1LjMyNC0zLjAxNS4zMjQtMy4wMTUgNC45MzQuMzI2IDcuNTIzIDUuMDUyIDcuNTIzIDUuMDUyIDQuMzY3IDcuNDk2IDExLjQwNCA1LjM3OCAxNC4yMzUgNC4wNzQuNDA0LTMuMTc4IDEuNjk5LTUuMzc4IDMuMDc0LTYuNi0xMC44MzktMS4xNDEtMjIuMjQzLTUuMzc4LTIyLjI0My0yNC4yODMgMC01LjM3OCAxLjk0LTkuNzc4IDUuMDE0LTEzLjItLjQ4NS0xLjIyMi0yLjE4NC02LjI3NS40ODYtMTMuMDM4IDAgMCA0LjEyNS0xLjMwNCAxMy40MjYgNS4wNTJhNDYuOTcgNDYuOTcgMCAwIDEgMTIuMjE0LTEuNjNjNC4xMjUgMCA4LjMzLjU3MSAxMi4yMTMgMS42MyA5LjMwMi02LjM1NiAxMy40MjctNS4wNTIgMTMuNDI3LTUuMDUyIDIuNjcgNi43NjMuOTcgMTEuODE2LjQ4NSAxMy4wMzggMy4xNTUgMy40MjIgNS4wMTUgNy44MjIgNS4wMTUgMTMuMiAwIDE4LjkwNS0xMS40MDQgMjMuMDYtMjIuMzI0IDI0LjI4MyAxLjc4IDEuNTQ4IDMuMzE2IDQuNDgxIDMuMzE2IDkuMTI2IDAgNi42LS4wOCAxMS44OTctLjA4IDEzLjUyNiAwIDEuMzA0Ljg5IDIuODUzIDMuMzE2IDIuMzY0IDE5LjQxMi02LjUyIDMzLjQwNS0yNC45MzUgMzMuNDA1LTQ2LjY5MUM5Ny43MDcgMjIgNzUuNzg4IDAgNDguODU0IDB6IiBmaWxsPSIjZmZmIi8%2BPC9zdmc%2B&up_message=online&url=https%3A%2F%2Fstremio.github.io%2Fstremio-web%2F)](https://stremio.github.io/stremio-web/) Stremio is a modern media center that's a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons. diff --git a/package-lock.json b/package-lock.json index 63c805628..d5431d412 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.22", "@stremio/stremio-icons": "5.0.0-beta.3", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", @@ -35,9 +35,10 @@ "react-focus-lock": "2.9.1", "react-i18next": "^12.1.1", "react-is": "18.2.0", - "spatial-navigation-polyfill": "git+https://git@github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6", - "stremio-translations": "git+https://git@github.com/Stremio/stremio-translations.git#92675658de92113c5888cf5e57003e468e8b8c9c", - "url": "0.11.0" + "spatial-navigation-polyfill": "https://github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6", + "stremio-translations": "https://github.com/Stremio/stremio-translations.git#35911ab6fbe83c34dc57268686fd9e0257d796b3", + "url": "0.11.0", + "use-long-press": "^3.1.5" }, "devDependencies": { "@babel/core": "7.16.0", @@ -2703,9 +2704,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.22", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.22.tgz", + "integrity": "sha512-YwnCdd7vg0iyk3wZ1NkPzMTe+WA8coe497Dn/Lt/ngdkhEF7gP5TewqNzlE4BDVgly6aZfub0h1G4gyx/kb3Eg==", "dependencies": { "@babel/runtime": "7.16.0" } @@ -12877,9 +12878,9 @@ } }, "node_modules/stremio-translations": { - "version": "1.43.17", - "resolved": "git+https://git@github.com/Stremio/stremio-translations.git#92675658de92113c5888cf5e57003e468e8b8c9c", - "integrity": "sha512-7f8VK4AdM2/rQqu28tocce2uuOa0kIBrmEa21Va2+uWDGT7/tLlbm0kvKS6v8hWpalGRPcGu6W4qf6pd5UIDZw==", + "version": "1.44.0", + "resolved": "git+ssh://git@github.com/Stremio/stremio-translations.git#35911ab6fbe83c34dc57268686fd9e0257d796b3", + "integrity": "sha512-DVMWIxBrTaV5UKcexPoxT73Na2GbsKGd3BYyywgKFEw7WBOP02oAbxLJBfCFoPhcT7+MhcVqSl44YGNmSSOuwg==", "license": "MIT" }, "node_modules/string_decoder": { @@ -13694,6 +13695,14 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, + "node_modules/use-long-press": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/use-long-press/-/use-long-press-3.1.5.tgz", + "integrity": "sha512-bnwk2SlvLLpeJPkNYSGkc59q5YNV9V/fLDkSOAF2p7Xt0zw3iYHEmgEGkNYkK7zEIEyRFi5CczKsT7MN99UzVQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/use-sidecar": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", @@ -16825,9 +16834,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.22", + "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.44.22.tgz", + "integrity": "sha512-YwnCdd7vg0iyk3wZ1NkPzMTe+WA8coe497Dn/Lt/ngdkhEF7gP5TewqNzlE4BDVgly6aZfub0h1G4gyx/kb3Eg==", "requires": { "@babel/runtime": "7.16.0" } @@ -24502,7 +24511,7 @@ "spatial-navigation-polyfill": { "version": "git+https://git@github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6", "integrity": "sha512-zREQWdiN2VSugD90lq0uBsSBjT/YtytCijN83V6LEJTRmAe/fMYUtjUtYr7UvBrSPxfnSM54BNq9r2kKFTJvlQ==", - "from": "spatial-navigation-polyfill@git+https://git@github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6" + "from": "spatial-navigation-polyfill@https://github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6" }, "spdy": { "version": "4.0.2", @@ -24567,9 +24576,9 @@ "dev": true }, "stremio-translations": { - "version": "git+https://git@github.com/Stremio/stremio-translations.git#92675658de92113c5888cf5e57003e468e8b8c9c", - "integrity": "sha512-7f8VK4AdM2/rQqu28tocce2uuOa0kIBrmEa21Va2+uWDGT7/tLlbm0kvKS6v8hWpalGRPcGu6W4qf6pd5UIDZw==", - "from": "stremio-translations@git+https://git@github.com/Stremio/stremio-translations.git#92675658de92113c5888cf5e57003e468e8b8c9c" + "version": "git+ssh://git@github.com/Stremio/stremio-translations.git#35911ab6fbe83c34dc57268686fd9e0257d796b3", + "integrity": "sha512-DVMWIxBrTaV5UKcexPoxT73Na2GbsKGd3BYyywgKFEw7WBOP02oAbxLJBfCFoPhcT7+MhcVqSl44YGNmSSOuwg==", + "from": "stremio-translations@https://github.com/Stremio/stremio-translations.git#35911ab6fbe83c34dc57268686fd9e0257d796b3" }, "string_decoder": { "version": "1.1.1", @@ -25163,6 +25172,12 @@ } } }, + "use-long-press": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/use-long-press/-/use-long-press-3.1.5.tgz", + "integrity": "sha512-bnwk2SlvLLpeJPkNYSGkc59q5YNV9V/fLDkSOAF2p7Xt0zw3iYHEmgEGkNYkK7zEIEyRFi5CczKsT7MN99UzVQ==", + "requires": {} + }, "use-sidecar": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", diff --git a/package.json b/package.json index 7ee76904a..644b1548e 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.22", "@stremio/stremio-icons": "5.0.0-beta.3", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", @@ -38,9 +38,10 @@ "react-focus-lock": "2.9.1", "react-i18next": "^12.1.1", "react-is": "18.2.0", - "spatial-navigation-polyfill": "git+https://git@github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6", - "stremio-translations": "git+https://git@github.com/Stremio/stremio-translations.git#92675658de92113c5888cf5e57003e468e8b8c9c", - "url": "0.11.0" + "spatial-navigation-polyfill": "https://github.com/Stremio/spatial-navigation.git#64871b1422466f5f45d24ebc8bbd315b2ebab6a6", + "stremio-translations": "https://github.com/Stremio/stremio-translations.git#35911ab6fbe83c34dc57268686fd9e0257d796b3", + "url": "0.11.0", + "use-long-press": "^3.1.5" }, "devDependencies": { "@babel/core": "7.16.0", diff --git a/src/App/App.js b/src/App/App.js index 3344d5645..be59767b7 100644 --- a/src/App/App.js +++ b/src/App/App.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 require('spatial-navigation-polyfill'); const React = require('react'); @@ -6,13 +6,16 @@ const { useTranslation } = require('react-i18next'); const { Router } = require('stremio-router'); const { Core, Shell, Chromecast, DragAndDrop, KeyboardShortcuts, ServicesProvider } = require('stremio/services'); const { NotFound } = require('stremio/routes'); -const { ToastProvider, CONSTANTS } = require('stremio/common'); +const { ToastProvider, CONSTANTS, withCoreSuspender } = require('stremio/common'); const ServicesToaster = require('./ServicesToaster'); const DeepLinkHandler = require('./DeepLinkHandler'); const ErrorDialog = require('./ErrorDialog'); +const withProtectedRoutes = require('./withProtectedRoutes'); const routerViewsConfig = require('./routerViewsConfig'); const styles = require('./styles'); +const RouterWithProtectedRoutes = withCoreSuspender(withProtectedRoutes(Router)); + const App = () => { const { i18n } = useTranslation(); const onPathNotMatch = React.useCallback(() => { @@ -126,6 +129,12 @@ const App = () => { action: 'SyncLibraryWithAPI' } }); + services.core.transport.dispatch({ + action: 'Ctx', + args: { + action: 'PullNotifications' + } + }); }; if (services.core.active) { onWindowFocus(); @@ -152,7 +161,7 @@ const App = () => { - { + return function withProtectedRoutes(props) { + const profile = useProfile(); + const previousAuthRef = React.useRef(profile.auth); + React.useEffect(() => { + if (previousAuthRef.current !== null && profile.auth === null) { + window.location = '#/intro'; + } + previousAuthRef.current = profile.auth; + }, [profile]); + const onRouteChange = React.useCallback((routeConfig) => { + if (profile.auth !== null && routeConfig.component === Intro) { + window.location.replace('#/'); + return true; + } + }, [profile]); + return ( + + ); + }; +}; + +module.exports = withProtectedRoutes; diff --git a/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js b/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js index ea1bf4c63..cecd6ef3a 100644 --- a/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js +++ b/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/AddonDetailsModal/AddonDetails/index.js b/src/common/AddonDetailsModal/AddonDetails/index.js index 69e5ced8b..39ea3e792 100644 --- a/src/common/AddonDetailsModal/AddonDetails/index.js +++ b/src/common/AddonDetailsModal/AddonDetails/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const AddonDetails = require('./AddonDetails'); diff --git a/src/common/AddonDetailsModal/AddonDetails/styles.less b/src/common/AddonDetailsModal/AddonDetails/styles.less index 829fe8cf5..8d6fa7b80 100644 --- a/src/common/AddonDetailsModal/AddonDetails/styles.less +++ b/src/common/AddonDetailsModal/AddonDetails/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/AddonDetailsModal/AddonDetailsModal.js b/src/common/AddonDetailsModal/AddonDetailsModal.js index d3143fb86..3f2fe8c52 100644 --- a/src/common/AddonDetailsModal/AddonDetailsModal.js +++ b/src/common/AddonDetailsModal/AddonDetailsModal.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/AddonDetailsModal/index.js b/src/common/AddonDetailsModal/index.js index 8fcb197aa..21aa0e0b9 100644 --- a/src/common/AddonDetailsModal/index.js +++ b/src/common/AddonDetailsModal/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const AddonDetailsModal = require('./AddonDetailsModal'); diff --git a/src/common/AddonDetailsModal/styles.less b/src/common/AddonDetailsModal/styles.less index b1741df86..1d4fde635 100644 --- a/src/common/AddonDetailsModal/styles.less +++ b/src/common/AddonDetailsModal/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/AddonDetailsModal/useAddonDetails.js b/src/common/AddonDetailsModal/useAddonDetails.js index e13ac1007..f171f8fa1 100644 --- a/src/common/AddonDetailsModal/useAddonDetails.js +++ b/src/common/AddonDetailsModal/useAddonDetails.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const useModelState = require('stremio/common/useModelState'); diff --git a/src/common/Button/Button.js b/src/common/Button/Button.js index 03c0f33ef..9d5ef7c1e 100644 --- a/src/common/Button/Button.js +++ b/src/common/Button/Button.js @@ -1,18 +1,23 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const styles = require('./styles'); +const { useLongPress } = require('use-long-press'); -const Button = React.forwardRef(({ className, href, disabled, children, ...props }, ref) => { +const Button = React.forwardRef(({ className, href, disabled, children, onLongPress, ...props }, ref) => { + const longPress = useLongPress(onLongPress, { detect: 'pointer' }); const onKeyDown = React.useCallback((event) => { if (typeof props.onKeyDown === 'function') { props.onKeyDown(event); } - if (event.key === 'Enter' && !event.nativeEvent.buttonClickPrevented) { - event.currentTarget.click(); + if (event.key === 'Enter') { + event.preventDefault(); + if (!event.nativeEvent.buttonClickPrevented) { + event.currentTarget.click(); + } } }, [props.onKeyDown]); const onMouseDown = React.useCallback((event) => { @@ -36,7 +41,8 @@ const Button = React.forwardRef(({ className, href, disabled, children, ...props className: classnames(className, styles['button-container'], { 'disabled': disabled }), href, onKeyDown, - onMouseDown + onMouseDown, + ...longPress() }, children ); @@ -50,7 +56,8 @@ Button.propTypes = { disabled: PropTypes.bool, children: PropTypes.node, onKeyDown: PropTypes.func, - onMouseDown: PropTypes.func + onMouseDown: PropTypes.func, + onLongPress: PropTypes.func, }; module.exports = Button; diff --git a/src/common/Button/index.js b/src/common/Button/index.js index 05ea41a5a..621d7ea33 100644 --- a/src/common/Button/index.js +++ b/src/common/Button/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Button = require('./Button'); diff --git a/src/common/Button/styles.less b/src/common/Button/styles.less index 020e23a44..6a26b3b7f 100644 --- a/src/common/Button/styles.less +++ b/src/common/Button/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/CONSTANTS.js b/src/common/CONSTANTS.js index 89cf37b59..ac8c123de 100644 --- a/src/common/CONSTANTS.js +++ b/src/common/CONSTANTS.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const CHROMECAST_RECEIVER_APP_ID = '1634F54B'; const SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250]; diff --git a/src/common/Checkbox/Checkbox.js b/src/common/Checkbox/Checkbox.js index 1a32d426f..a823ce488 100644 --- a/src/common/Checkbox/Checkbox.js +++ b/src/common/Checkbox/Checkbox.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Checkbox/index.js b/src/common/Checkbox/index.js index 8e8ae7ab8..b185f6cbc 100644 --- a/src/common/Checkbox/index.js +++ b/src/common/Checkbox/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Checkbox = require('./Checkbox'); diff --git a/src/common/Checkbox/styles.less b/src/common/Checkbox/styles.less index 8d036c455..3aa0802cd 100644 --- a/src/common/Checkbox/styles.less +++ b/src/common/Checkbox/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/ColorInput/ColorInput.js b/src/common/ColorInput/ColorInput.js index c60f02a23..2127b959f 100644 --- a/src/common/ColorInput/ColorInput.js +++ b/src/common/ColorInput/ColorInput.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/ColorInput/ColorPicker/ColorPicker.js b/src/common/ColorInput/ColorPicker/ColorPicker.js index c83234fe9..47761ffc6 100644 --- a/src/common/ColorInput/ColorPicker/ColorPicker.js +++ b/src/common/ColorInput/ColorPicker/ColorPicker.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/ColorInput/ColorPicker/index.js b/src/common/ColorInput/ColorPicker/index.js index de9b8b38f..eb50998d8 100644 --- a/src/common/ColorInput/ColorPicker/index.js +++ b/src/common/ColorInput/ColorPicker/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ColorPicker = require('./ColorPicker'); diff --git a/src/common/ColorInput/ColorPicker/styles.less b/src/common/ColorInput/ColorPicker/styles.less index 6e06b1122..7156d440d 100644 --- a/src/common/ColorInput/ColorPicker/styles.less +++ b/src/common/ColorInput/ColorPicker/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .color-picker-container { overflow: visible; diff --git a/src/common/ColorInput/index.js b/src/common/ColorInput/index.js index 47d97f88a..be9abc89f 100644 --- a/src/common/ColorInput/index.js +++ b/src/common/ColorInput/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ColorInput = require('./ColorInput'); diff --git a/src/common/ColorInput/styles.less b/src/common/ColorInput/styles.less index 39c82b290..7ed494061 100644 --- a/src/common/ColorInput/styles.less +++ b/src/common/ColorInput/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/CoreSuspender.js b/src/common/CoreSuspender.js index 94ec7475f..a9e666b58 100644 --- a/src/common/CoreSuspender.js +++ b/src/common/CoreSuspender.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/common/DelayedRenderer/DelayedRenderer.js b/src/common/DelayedRenderer/DelayedRenderer.js index eb4bea81f..cbf976ddb 100644 --- a/src/common/DelayedRenderer/DelayedRenderer.js +++ b/src/common/DelayedRenderer/DelayedRenderer.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/DelayedRenderer/index.js b/src/common/DelayedRenderer/index.js index 97d3811dd..853d119fc 100644 --- a/src/common/DelayedRenderer/index.js +++ b/src/common/DelayedRenderer/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const DelayedRenderer = require('./DelayedRenderer'); diff --git a/src/common/Image/Image.js b/src/common/Image/Image.js index f29958e8c..c962a8a91 100644 --- a/src/common/Image/Image.js +++ b/src/common/Image/Image.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Image/index.js b/src/common/Image/index.js index c063ade86..e82663166 100644 --- a/src/common/Image/index.js +++ b/src/common/Image/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Image = require('./Image'); diff --git a/src/common/LibItem/LibItem.js b/src/common/LibItem/LibItem.js index f8f0a5de6..431359071 100644 --- a/src/common/LibItem/LibItem.js +++ b/src/common/LibItem/LibItem.js @@ -1,9 +1,10 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); const PropTypes = require('prop-types'); const MetaItem = require('stremio/common/MetaItem'); +const useNotifications = require('stremio/common/useNotifications'); const { t } = require('i18next'); const OPTIONS = [ @@ -15,6 +16,11 @@ const OPTIONS = [ const LibItem = ({ _id, removable, ...props }) => { const { core } = useServices(); + const notifications = useNotifications(); + const newVideos = React.useMemo(() => { + const count = notifications.items?.[_id]?.length ?? 0; + return Math.min(Math.max(count, 0), 99); + }, [_id, notifications.items]); const options = React.useMemo(() => { return OPTIONS .filter(({ value }) => { @@ -68,6 +74,13 @@ const LibItem = ({ _id, removable, ...props }) => { args: _id } }); + core.transport.dispatch({ + action: 'Ctx', + args: { + action: 'DismissNotificationItem', + args: _id + } + }); } break; @@ -91,6 +104,7 @@ const LibItem = ({ _id, removable, ...props }) => { return ( diff --git a/src/common/LibItem/index.js b/src/common/LibItem/index.js index 1a5ea6687..e1db578fb 100644 --- a/src/common/LibItem/index.js +++ b/src/common/LibItem/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const LibItem = require('./LibItem'); diff --git a/src/common/MainNavBars/MainNavBars.js b/src/common/MainNavBars/MainNavBars.js index fa1d9822f..542d68fe4 100644 --- a/src/common/MainNavBars/MainNavBars.js +++ b/src/common/MainNavBars/MainNavBars.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MainNavBars/index.js b/src/common/MainNavBars/index.js index 0ef95a96d..82ba41c22 100644 --- a/src/common/MainNavBars/index.js +++ b/src/common/MainNavBars/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MainNavBars = require('./MainNavBars'); diff --git a/src/common/MainNavBars/styles.less b/src/common/MainNavBars/styles.less index 8537da985..e76192fbb 100644 --- a/src/common/MainNavBars/styles.less +++ b/src/common/MainNavBars/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index 8502bf255..6a09435ce 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -13,7 +13,7 @@ const useBinaryState = require('stremio/common/useBinaryState'); const { ICON_FOR_TYPE } = require('stremio/common/CONSTANTS'); const styles = require('./styles'); -const MetaItem = React.memo(({ className, type, name, poster, posterShape, playIcon, progress, options, deepLinks, dataset, optionOnSelect, ...props }) => { +const MetaItem = React.memo(({ className, type, name, poster, posterShape, playIcon, progress, newVideos, options, deepLinks, dataset, optionOnSelect, ...props }) => { const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false); const href = React.useMemo(() => { return deepLinks ? @@ -89,6 +89,18 @@ const MetaItem = React.memo(({ className, type, name, poster, posterShape, playI : null } + { + newVideos > 0 ? +
+
+
+
+ +{newVideos} +
+
+ : + null + }
{ (typeof name === 'string' && name.length > 0) || (Array.isArray(options) && options.length > 0) ? @@ -129,6 +141,7 @@ MetaItem.propTypes = { posterShape: PropTypes.oneOf(['poster', 'landscape', 'square']), playIcon: PropTypes.bool, progress: PropTypes.number, + newVideos: PropTypes.number, options: PropTypes.array, deepLinks: PropTypes.shape({ metaDetailsVideos: PropTypes.string, diff --git a/src/common/MetaItem/index.js b/src/common/MetaItem/index.js index 2b1473424..b8aed836a 100644 --- a/src/common/MetaItem/index.js +++ b/src/common/MetaItem/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaItem = require('./MetaItem'); diff --git a/src/common/MetaItem/styles.less b/src/common/MetaItem/styles.less index c1ef4aa5e..439fb0bc4 100644 --- a/src/common/MetaItem/styles.less +++ b/src/common/MetaItem/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; @@ -135,6 +135,45 @@ background-color: var(--primary-foreground-color); } } + + .new-videos { + z-index: -1; + position: absolute; + top: 0; + right: 0; + overflow: visible; + + .layer { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + height: 1.6rem; + width: 2.75rem; + border-radius: 0.25rem; + font-size: 1rem; + font-weight: 600; + color: @color-background-dark2-90; + + &:nth-child(1) { + top: 0.5rem; + right: 0.5rem; + background-color: @color-surface-light5-40; + } + + &:nth-child(2) { + top: 0.75rem; + right: 0.75rem; + background-color: @color-surface-light5-60; + } + + &:nth-child(3) { + top: 1rem; + right: 1rem; + background-color: @color-surface-light5; + } + } + } } .title-bar-container { diff --git a/src/common/MetaPreview/ActionButton/ActionButton.js b/src/common/MetaPreview/ActionButton/ActionButton.js index d7d0bf659..968da3ec4 100644 --- a/src/common/MetaPreview/ActionButton/ActionButton.js +++ b/src/common/MetaPreview/ActionButton/ActionButton.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MetaPreview/ActionButton/index.js b/src/common/MetaPreview/ActionButton/index.js index c70e8e48e..532c4461c 100644 --- a/src/common/MetaPreview/ActionButton/index.js +++ b/src/common/MetaPreview/ActionButton/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ActionButton = require('./ActionButton'); diff --git a/src/common/MetaPreview/ActionButton/styles.less b/src/common/MetaPreview/ActionButton/styles.less index 7e5f52407..ae3a70591 100644 --- a/src/common/MetaPreview/ActionButton/styles.less +++ b/src/common/MetaPreview/ActionButton/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/MetaPreview/MetaLinks/MetaLinks.js b/src/common/MetaPreview/MetaLinks/MetaLinks.js index a78927b18..9bb6ee13d 100644 --- a/src/common/MetaPreview/MetaLinks/MetaLinks.js +++ b/src/common/MetaPreview/MetaLinks/MetaLinks.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MetaPreview/MetaLinks/index.js b/src/common/MetaPreview/MetaLinks/index.js index 208dd4eed..0890e1e07 100644 --- a/src/common/MetaPreview/MetaLinks/index.js +++ b/src/common/MetaPreview/MetaLinks/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaLinks = require('./MetaLinks'); diff --git a/src/common/MetaPreview/MetaLinks/styles.less b/src/common/MetaPreview/MetaLinks/styles.less index cab40e452..4d93fc849 100644 --- a/src/common/MetaPreview/MetaLinks/styles.less +++ b/src/common/MetaPreview/MetaLinks/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/MetaPreview/MetaPreview.js b/src/common/MetaPreview/MetaPreview.js index 6c59f4574..27d76d08e 100644 --- a/src/common/MetaPreview/MetaPreview.js +++ b/src/common/MetaPreview/MetaPreview.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js b/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js index 88e55cd1c..28cb87f68 100644 --- a/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js +++ b/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MetaPreview/MetaPreviewPlaceholder/index.js b/src/common/MetaPreview/MetaPreviewPlaceholder/index.js index 23f4256e5..7c8edcf87 100644 --- a/src/common/MetaPreview/MetaPreviewPlaceholder/index.js +++ b/src/common/MetaPreview/MetaPreviewPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder'); diff --git a/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less b/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less index 27ff7f399..fe0c54675 100644 --- a/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less +++ b/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .meta-preview-placeholder-container { display: flex; diff --git a/src/common/MetaPreview/index.js b/src/common/MetaPreview/index.js index d975fddc1..ec4923325 100644 --- a/src/common/MetaPreview/index.js +++ b/src/common/MetaPreview/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaPreview = require('./MetaPreview'); diff --git a/src/common/MetaPreview/styles.less b/src/common/MetaPreview/styles.less index 03845452e..dddf57a86 100644 --- a/src/common/MetaPreview/styles.less +++ b/src/common/MetaPreview/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/MetaRow/MetaRow.js b/src/common/MetaRow/MetaRow.js index de56183ed..5d06d9615 100644 --- a/src/common/MetaRow/MetaRow.js +++ b/src/common/MetaRow/MetaRow.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ReactIs = require('react-is'); diff --git a/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js b/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js index 7eb2c0b35..05c0e7c2f 100644 --- a/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js +++ b/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/MetaRow/MetaRowPlaceholder/index.js b/src/common/MetaRow/MetaRowPlaceholder/index.js index 1a8ef121d..3da9d5506 100644 --- a/src/common/MetaRow/MetaRowPlaceholder/index.js +++ b/src/common/MetaRow/MetaRowPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaRowPlaceholder = require('./MetaRowPlaceholder'); diff --git a/src/common/MetaRow/MetaRowPlaceholder/styles.less b/src/common/MetaRow/MetaRowPlaceholder/styles.less index 74bb84676..27f236141 100644 --- a/src/common/MetaRow/MetaRowPlaceholder/styles.less +++ b/src/common/MetaRow/MetaRowPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/MetaRow/index.js b/src/common/MetaRow/index.js index 2267622c7..523075118 100644 --- a/src/common/MetaRow/index.js +++ b/src/common/MetaRow/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaRow = require('./MetaRow'); diff --git a/src/common/MetaRow/styles.less b/src/common/MetaRow/styles.less index f66cfca88..86d845525 100644 --- a/src/common/MetaRow/styles.less +++ b/src/common/MetaRow/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/ModalDialog/ModalDialog.js b/src/common/ModalDialog/ModalDialog.js index 37aa957d3..e7e2e8056 100644 --- a/src/common/ModalDialog/ModalDialog.js +++ b/src/common/ModalDialog/ModalDialog.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/ModalDialog/index.js b/src/common/ModalDialog/index.js index c1d160825..4b6423279 100644 --- a/src/common/ModalDialog/index.js +++ b/src/common/ModalDialog/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ModalDialog = require('./ModalDialog'); diff --git a/src/common/ModalDialog/styles.less b/src/common/ModalDialog/styles.less index b6e59ac42..a06bbfa32 100644 --- a/src/common/ModalDialog/styles.less +++ b/src/common/ModalDialog/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/Multiselect/Multiselect.js b/src/common/Multiselect/Multiselect.js index 6f85c5cbb..df2488a47 100644 --- a/src/common/Multiselect/Multiselect.js +++ b/src/common/Multiselect/Multiselect.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Multiselect/index.js b/src/common/Multiselect/index.js index 6a2096392..41cd39b54 100644 --- a/src/common/Multiselect/index.js +++ b/src/common/Multiselect/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Multiselect = require('./Multiselect'); diff --git a/src/common/Multiselect/styles.less b/src/common/Multiselect/styles.less index d453d401a..db7771898 100644 --- a/src/common/Multiselect/styles.less +++ b/src/common/Multiselect/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js index 2deb5f76b..e1d6ee77a 100644 --- a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js +++ b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenu.js b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenu.js index 7e511ee0d..7af959d75 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenu.js +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js index 75c843670..6c8acdf00 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -54,7 +54,7 @@ const NavMenuContent = ({ onClick }) => {
{profile.auth === null ? t('ANONYMOUS_USER') : profile.auth.user.email}
-
diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/index.js b/src/common/NavBar/HorizontalNavBar/NavMenu/index.js index 285afc135..991d86144 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/index.js +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const NavMenu = require('./NavMenu'); diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less b/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less index 163cee359..b216db1d6 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js b/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js index ee437c00d..742c7a692 100644 --- a/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js +++ b/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/index.js b/src/common/NavBar/HorizontalNavBar/SearchBar/index.js index 00dab48bb..375047b71 100644 --- a/src/common/NavBar/HorizontalNavBar/SearchBar/index.js +++ b/src/common/NavBar/HorizontalNavBar/SearchBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SearchBar = require('./SearchBar'); diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less b/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less index 0951701bf..74c2110c5 100644 --- a/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less +++ b/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/NavBar/HorizontalNavBar/index.js b/src/common/NavBar/HorizontalNavBar/index.js index f807a8945..f030a08e2 100644 --- a/src/common/NavBar/HorizontalNavBar/index.js +++ b/src/common/NavBar/HorizontalNavBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const HorizontalNavBar = require('./HorizontalNavBar'); diff --git a/src/common/NavBar/HorizontalNavBar/styles.less b/src/common/NavBar/HorizontalNavBar/styles.less index 10a14ee5c..99844d3a9 100644 --- a/src/common/NavBar/HorizontalNavBar/styles.less +++ b/src/common/NavBar/HorizontalNavBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js b/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js index 6971398b6..7ecef38c6 100644 --- a/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js +++ b/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/NavBar/VerticalNavBar/NavTabButton/index.js b/src/common/NavBar/VerticalNavBar/NavTabButton/index.js index 9aa260e00..4ee6f81c5 100644 --- a/src/common/NavBar/VerticalNavBar/NavTabButton/index.js +++ b/src/common/NavBar/VerticalNavBar/NavTabButton/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const NavTabButton = require('./NavTabButton'); diff --git a/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less b/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less index f8184f650..490468457 100644 --- a/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less +++ b/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/NavBar/VerticalNavBar/VerticalNavBar.js b/src/common/NavBar/VerticalNavBar/VerticalNavBar.js index 6e48963d2..4ba4b5d75 100644 --- a/src/common/NavBar/VerticalNavBar/VerticalNavBar.js +++ b/src/common/NavBar/VerticalNavBar/VerticalNavBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/NavBar/VerticalNavBar/index.js b/src/common/NavBar/VerticalNavBar/index.js index fc0786d4e..95ec141e7 100644 --- a/src/common/NavBar/VerticalNavBar/index.js +++ b/src/common/NavBar/VerticalNavBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const VerticalNavBar = require('./VerticalNavBar'); diff --git a/src/common/NavBar/VerticalNavBar/styles.less b/src/common/NavBar/VerticalNavBar/styles.less index 9d7225640..e2b4d9e37 100644 --- a/src/common/NavBar/VerticalNavBar/styles.less +++ b/src/common/NavBar/VerticalNavBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/common/NavBar/index.js b/src/common/NavBar/index.js index 4ab703cbe..286d7d5f9 100644 --- a/src/common/NavBar/index.js +++ b/src/common/NavBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const HorizontalNavBar = require('./HorizontalNavBar'); const VerticalNavBar = require('./VerticalNavBar'); diff --git a/src/common/PaginationInput/PaginationInput.js b/src/common/PaginationInput/PaginationInput.js index e881d4db5..41d740b3f 100644 --- a/src/common/PaginationInput/PaginationInput.js +++ b/src/common/PaginationInput/PaginationInput.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/PaginationInput/index.js b/src/common/PaginationInput/index.js index 30eab0bf1..da139e27d 100644 --- a/src/common/PaginationInput/index.js +++ b/src/common/PaginationInput/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const PaginationInput = require('./PaginationInput'); diff --git a/src/common/PaginationInput/styles.less b/src/common/PaginationInput/styles.less index 5a7038fcc..7f6572d5e 100644 --- a/src/common/PaginationInput/styles.less +++ b/src/common/PaginationInput/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/PlayIconCircleCentered/PlayIconCircleCentered.js b/src/common/PlayIconCircleCentered/PlayIconCircleCentered.js index 00c59f342..d78f564c0 100644 --- a/src/common/PlayIconCircleCentered/PlayIconCircleCentered.js +++ b/src/common/PlayIconCircleCentered/PlayIconCircleCentered.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/PlayIconCircleCentered/index.js b/src/common/PlayIconCircleCentered/index.js index 01d1938fa..dfd4f0a38 100644 --- a/src/common/PlayIconCircleCentered/index.js +++ b/src/common/PlayIconCircleCentered/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const PlayIconCircleCentered = require('./PlayIconCircleCentered'); diff --git a/src/common/PlayIconCircleCentered/styles.less b/src/common/PlayIconCircleCentered/styles.less index 8e6ed3e8a..0589a5c8d 100644 --- a/src/common/PlayIconCircleCentered/styles.less +++ b/src/common/PlayIconCircleCentered/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/Popup/Popup.js b/src/common/Popup/Popup.js index 60c817770..aad02bdf3 100644 --- a/src/common/Popup/Popup.js +++ b/src/common/Popup/Popup.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -47,16 +47,23 @@ const Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseReque onCloseRequest(closeEvent); } break; + case 'pointerdown': + if (event.target !== document.documentElement && !labelRef.current.contains(event.target)) { + onCloseRequest(closeEvent); + } + break; } } }; if (routeFocused && open) { window.addEventListener('keydown', onCloseEvent); window.addEventListener('mousedown', onCloseEvent); + window.addEventListener('pointerdown', onCloseEvent); } return () => { window.removeEventListener('keydown', onCloseEvent); window.removeEventListener('mousedown', onCloseEvent); + window.removeEventListener('pointerdown', onCloseEvent); }; }, [routeFocused, open, onCloseRequest, dataset]); React.useLayoutEffect(() => { diff --git a/src/common/Popup/index.js b/src/common/Popup/index.js index bfacc7491..1d7b70bc8 100644 --- a/src/common/Popup/index.js +++ b/src/common/Popup/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Popup = require('./Popup'); diff --git a/src/common/Popup/styles.less b/src/common/Popup/styles.less index 75e1e5897..e75a077ef 100644 --- a/src/common/Popup/styles.less +++ b/src/common/Popup/styles.less @@ -1,8 +1,12 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; .label-container { + // IOS specific + // prevents showing the default context-menu when long pressing an anchor in safari. + -webkit-touch-callout: none !important; + position: relative; overflow: visible; diff --git a/src/common/SearchBar/SearchBar.js b/src/common/SearchBar/SearchBar.js index c5b24ae5c..3b7013aa0 100644 --- a/src/common/SearchBar/SearchBar.js +++ b/src/common/SearchBar/SearchBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js index 9d7583b1b..7c32edaf8 100644 --- a/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js +++ b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/SearchBar/SearchBarPlaceholder/index.js b/src/common/SearchBar/SearchBarPlaceholder/index.js index 9edb46ed5..9d735e60f 100644 --- a/src/common/SearchBar/SearchBarPlaceholder/index.js +++ b/src/common/SearchBar/SearchBarPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SearchBarPlaceholder = require('./SearchBarPlaceholder'); diff --git a/src/common/SearchBar/SearchBarPlaceholder/styles.less b/src/common/SearchBar/SearchBarPlaceholder/styles.less index eb8baea03..b27a8f0d8 100644 --- a/src/common/SearchBar/SearchBarPlaceholder/styles.less +++ b/src/common/SearchBar/SearchBarPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .search-bar-container { display: flex; diff --git a/src/common/SearchBar/index.js b/src/common/SearchBar/index.js index 00dab48bb..375047b71 100644 --- a/src/common/SearchBar/index.js +++ b/src/common/SearchBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SearchBar = require('./SearchBar'); diff --git a/src/common/SearchBar/styles.less b/src/common/SearchBar/styles.less index 55a83e3ad..779b3286a 100644 --- a/src/common/SearchBar/styles.less +++ b/src/common/SearchBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/SharePrompt/SharePrompt.js b/src/common/SharePrompt/SharePrompt.js index 35f9a4401..685f19613 100644 --- a/src/common/SharePrompt/SharePrompt.js +++ b/src/common/SharePrompt/SharePrompt.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/SharePrompt/index.js b/src/common/SharePrompt/index.js index ff78820b2..2026b457f 100644 --- a/src/common/SharePrompt/index.js +++ b/src/common/SharePrompt/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SharePrompt = require('./SharePrompt'); diff --git a/src/common/SharePrompt/styles.less b/src/common/SharePrompt/styles.less index 56c41a53f..9120088ca 100644 --- a/src/common/SharePrompt/styles.less +++ b/src/common/SharePrompt/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/Slider/Slider.js b/src/common/Slider/Slider.js index ea9eee41c..c6d921ee7 100644 --- a/src/common/Slider/Slider.js +++ b/src/common/Slider/Slider.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Slider/index.js b/src/common/Slider/index.js index aba49461c..7c614b521 100644 --- a/src/common/Slider/index.js +++ b/src/common/Slider/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Slider = require('./Slider'); diff --git a/src/common/Slider/styles.less b/src/common/Slider/styles.less index ca4ede089..9ae5be739 100644 --- a/src/common/Slider/styles.less +++ b/src/common/Slider/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/StreamingServerWarning/StreamingServerWarning.js b/src/common/StreamingServerWarning/StreamingServerWarning.js index 8132b79e2..d427215cb 100644 --- a/src/common/StreamingServerWarning/StreamingServerWarning.js +++ b/src/common/StreamingServerWarning/StreamingServerWarning.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/common/StreamingServerWarning/index.js b/src/common/StreamingServerWarning/index.js index 5c49cd46d..6e3f26596 100644 --- a/src/common/StreamingServerWarning/index.js +++ b/src/common/StreamingServerWarning/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const StreamingServerWarning = require('./StreamingServerWarning'); diff --git a/src/common/StreamingServerWarning/styles.less b/src/common/StreamingServerWarning/styles.less index 85f86dc9b..42ab6bb4b 100644 --- a/src/common/StreamingServerWarning/styles.less +++ b/src/common/StreamingServerWarning/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/TextInput/TextInput.js b/src/common/TextInput/TextInput.js index f31f278dc..742e87dfc 100644 --- a/src/common/TextInput/TextInput.js +++ b/src/common/TextInput/TextInput.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/TextInput/index.js b/src/common/TextInput/index.js index 7f24b4931..a61d9ca79 100644 --- a/src/common/TextInput/index.js +++ b/src/common/TextInput/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const TextInput = require('./TextInput'); diff --git a/src/common/TextInput/styles.less b/src/common/TextInput/styles.less index b8cb7a7e0..fc6a6127a 100644 --- a/src/common/TextInput/styles.less +++ b/src/common/TextInput/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .text-input { user-select: text; diff --git a/src/common/Toast/ToastContext.js b/src/common/Toast/ToastContext.js index e92d6e2d5..152cbf675 100644 --- a/src/common/Toast/ToastContext.js +++ b/src/common/Toast/ToastContext.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/Toast/ToastItem/ToastItem.js b/src/common/Toast/ToastItem/ToastItem.js index 3f649a63c..869aa224f 100644 --- a/src/common/Toast/ToastItem/ToastItem.js +++ b/src/common/Toast/ToastItem/ToastItem.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Toast/ToastItem/index.js b/src/common/Toast/ToastItem/index.js index e5dd3742a..bd8a4d773 100644 --- a/src/common/Toast/ToastItem/index.js +++ b/src/common/Toast/ToastItem/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ToastItem = require('./ToastItem'); diff --git a/src/common/Toast/ToastItem/styles.less b/src/common/Toast/ToastItem/styles.less index 041ba3dcd..05bf68ec8 100644 --- a/src/common/Toast/ToastItem/styles.less +++ b/src/common/Toast/ToastItem/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/common/Toast/ToastProvider.js b/src/common/Toast/ToastProvider.js index b022c1665..a9cab9bb4 100644 --- a/src/common/Toast/ToastProvider.js +++ b/src/common/Toast/ToastProvider.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/common/Toast/index.js b/src/common/Toast/index.js index a319c45db..0a09b9e3f 100644 --- a/src/common/Toast/index.js +++ b/src/common/Toast/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ToastProvider = require('./ToastProvider'); const useToast = require('./useToast'); diff --git a/src/common/Toast/useToast.js b/src/common/Toast/useToast.js index 0bcd57232..23a9b7989 100644 --- a/src/common/Toast/useToast.js +++ b/src/common/Toast/useToast.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ToastContext = require('./ToastContext'); diff --git a/src/common/animations.less b/src/common/animations.less index 9173a625b..8a7fc2b9e 100644 --- a/src/common/animations.less +++ b/src/common/animations.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 :global(.animation-fade-in) { :local { diff --git a/src/common/comparatorWithPriorities.js b/src/common/comparatorWithPriorities.js index ed43304b1..baa12b843 100644 --- a/src/common/comparatorWithPriorities.js +++ b/src/common/comparatorWithPriorities.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const comparatorWithPriorities = (priorities) => { return (a, b) => { diff --git a/src/common/externalPlayerOptions.js b/src/common/externalPlayerOptions.js index de92cb024..36f530a0b 100644 --- a/src/common/externalPlayerOptions.js +++ b/src/common/externalPlayerOptions.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const platform = require('./platform'); diff --git a/src/common/getVisibleChildrenRange.js b/src/common/getVisibleChildrenRange.js index 91d9f09a3..df5e29f05 100644 --- a/src/common/getVisibleChildrenRange.js +++ b/src/common/getVisibleChildrenRange.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const isChildVisible = (container, element) => { const elementTop = element.offsetTop; diff --git a/src/common/index.js b/src/common/index.js index 3c9d7860b..f267be575 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const AddonDetailsModal = require('./AddonDetailsModal'); const Button = require('./Button'); @@ -36,6 +36,7 @@ const useBinaryState = require('./useBinaryState'); const useFullscreen = require('./useFullscreen'); const useLiveRef = require('./useLiveRef'); const useModelState = require('./useModelState'); +const useNotifications = require('./useNotifications'); const useOnScrollToBottom = require('./useOnScrollToBottom'); const useProfile = require('./useProfile'); const useStreamingServer = require('./useStreamingServer'); @@ -83,6 +84,7 @@ module.exports = { useFullscreen, useLiveRef, useModelState, + useNotifications, useOnScrollToBottom, useProfile, useStreamingServer, diff --git a/src/common/platform.js b/src/common/platform.js index 203922db9..1e112de6d 100644 --- a/src/common/platform.js +++ b/src/common/platform.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 // this detects ipad properly in safari // while bowser does not diff --git a/src/common/routesRegexp.js b/src/common/routesRegexp.js index 21ad98662..ca5efdb2c 100644 --- a/src/common/routesRegexp.js +++ b/src/common/routesRegexp.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const routesRegexp = { intro: { diff --git a/src/common/screen-sizes.less b/src/common/screen-sizes.less index 5d247e82c..34762e6e7 100644 --- a/src/common/screen-sizes.less +++ b/src/common/screen-sizes.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @minimum: 640px; @xxsmall: 800px; diff --git a/src/common/translateOption.js b/src/common/translateOption.js index 085306515..bbe0a9ebc 100644 --- a/src/common/translateOption.js +++ b/src/common/translateOption.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const { t } = require('i18next'); diff --git a/src/common/useAnimationFrame.js b/src/common/useAnimationFrame.js index 41e02bfea..48cd3854b 100644 --- a/src/common/useAnimationFrame.js +++ b/src/common/useAnimationFrame.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/useBinaryState.js b/src/common/useBinaryState.js index 48656fa9d..3a8c8bc0c 100644 --- a/src/common/useBinaryState.js +++ b/src/common/useBinaryState.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/useFullscreen.js b/src/common/useFullscreen.js index 4e54ee006..caf7a0219 100644 --- a/src/common/useFullscreen.js +++ b/src/common/useFullscreen.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/useLiveRef.js b/src/common/useLiveRef.js index 1abe3dd60..153f6c576 100644 --- a/src/common/useLiveRef.js +++ b/src/common/useLiveRef.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/useModelState.js b/src/common/useModelState.js index a2a630237..42672dc22 100644 --- a/src/common/useModelState.js +++ b/src/common/useModelState.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const throttle = require('lodash.throttle'); diff --git a/src/common/useNotifications.d.ts b/src/common/useNotifications.d.ts new file mode 100644 index 000000000..7a6943654 --- /dev/null +++ b/src/common/useNotifications.d.ts @@ -0,0 +1,2 @@ +declare const useNotifcations: () => Notifications; +export = useNotifcations; \ No newline at end of file diff --git a/src/common/useNotifications.js b/src/common/useNotifications.js new file mode 100644 index 000000000..b0b7e7858 --- /dev/null +++ b/src/common/useNotifications.js @@ -0,0 +1,11 @@ +// Copyright (C) 2017-2023 Smart code 203358507 + +const useModelState = require('stremio/common/useModelState'); + +const map = (ctx) => ctx.notifications; + +const useNotifications = () => { + return useModelState({ model: 'ctx', map }); +}; + +module.exports = useNotifications; diff --git a/src/common/useOnScrollToBottom.js b/src/common/useOnScrollToBottom.js index c4cc62ab5..6e4036ef9 100644 --- a/src/common/useOnScrollToBottom.js +++ b/src/common/useOnScrollToBottom.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/common/useProfile.js b/src/common/useProfile.js index 371a4df12..932e4445d 100644 --- a/src/common/useProfile.js +++ b/src/common/useProfile.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const useModelState = require('stremio/common/useModelState'); diff --git a/src/common/useStreamingServer.js b/src/common/useStreamingServer.js index 00dd0cee1..7732d87e5 100644 --- a/src/common/useStreamingServer.js +++ b/src/common/useStreamingServer.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const useModelState = require('stremio/common/useModelState'); diff --git a/src/common/useTorrent.js b/src/common/useTorrent.js index 6ecfe4de6..0ae117d3a 100644 --- a/src/common/useTorrent.js +++ b/src/common/useTorrent.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const magnet = require('magnet-uri'); diff --git a/src/index.js b/src/index.js index 7058792ba..c55a1b1c5 100755 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 if (typeof process.env.SENTRY_DSN === 'string') { const Sentry = require('@sentry/browser'); diff --git a/src/router/Modal/Modal.js b/src/router/Modal/Modal.js index ed76f2e71..34fe3e4af 100644 --- a/src/router/Modal/Modal.js +++ b/src/router/Modal/Modal.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ReactDOM = require('react-dom'); diff --git a/src/router/Modal/index.js b/src/router/Modal/index.js index af4f5e792..d16087d8a 100644 --- a/src/router/Modal/index.js +++ b/src/router/Modal/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Modal = require('./Modal'); diff --git a/src/router/ModalsContainerContext/ModalsContainerContext.js b/src/router/ModalsContainerContext/ModalsContainerContext.js index 643c7a20d..2a3a1b29e 100644 --- a/src/router/ModalsContainerContext/ModalsContainerContext.js +++ b/src/router/ModalsContainerContext/ModalsContainerContext.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/router/ModalsContainerContext/ModalsContainerProvider.js b/src/router/ModalsContainerContext/ModalsContainerProvider.js index 87274e31b..0c6b77caa 100644 --- a/src/router/ModalsContainerContext/ModalsContainerProvider.js +++ b/src/router/ModalsContainerContext/ModalsContainerProvider.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/router/ModalsContainerContext/index.js b/src/router/ModalsContainerContext/index.js index 738f50a1c..94df42c7c 100644 --- a/src/router/ModalsContainerContext/index.js +++ b/src/router/ModalsContainerContext/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ModalsContainerProvider = require('./ModalsContainerProvider'); const useModalsContainer = require('./useModalsContainer'); diff --git a/src/router/ModalsContainerContext/useModalsContainer.js b/src/router/ModalsContainerContext/useModalsContainer.js index 1c54ab403..61077af03 100644 --- a/src/router/ModalsContainerContext/useModalsContainer.js +++ b/src/router/ModalsContainerContext/useModalsContainer.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ModalsContainerContext = require('./ModalsContainerContext'); diff --git a/src/router/Route/Route.js b/src/router/Route/Route.js index 701dc693e..c52c3fbf7 100644 --- a/src/router/Route/Route.js +++ b/src/router/Route/Route.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/router/Route/index.js b/src/router/Route/index.js index 12a854191..ad6ebab45 100644 --- a/src/router/Route/index.js +++ b/src/router/Route/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Route = require('./Route'); diff --git a/src/router/RouteFocusedContext/RouteFocusedContext.js b/src/router/RouteFocusedContext/RouteFocusedContext.js index 520b6ec28..662284253 100644 --- a/src/router/RouteFocusedContext/RouteFocusedContext.js +++ b/src/router/RouteFocusedContext/RouteFocusedContext.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/router/RouteFocusedContext/index.js b/src/router/RouteFocusedContext/index.js index 2f494c087..dc4e6cfd5 100644 --- a/src/router/RouteFocusedContext/index.js +++ b/src/router/RouteFocusedContext/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const RouteFocusedContext = require('./RouteFocusedContext'); const useRouteFocused = require('./useRouteFocused'); diff --git a/src/router/RouteFocusedContext/useRouteFocused.js b/src/router/RouteFocusedContext/useRouteFocused.js index 4a965c345..93bf9ecc9 100644 --- a/src/router/RouteFocusedContext/useRouteFocused.js +++ b/src/router/RouteFocusedContext/useRouteFocused.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const RouteFocusedContext = require('./RouteFocusedContext'); diff --git a/src/router/Router/Router.js b/src/router/Router/Router.js index 9a1a815b1..db4c9e957 100644 --- a/src/router/Router/Router.js +++ b/src/router/Router/Router.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ReactIs = require('react-is'); @@ -11,7 +11,7 @@ const Route = require('../Route'); const routeConfigForPath = require('./routeConfigForPath'); const urlParamsForPath = require('./urlParamsForPath'); -const Router = ({ className, onPathNotMatch, ...props }) => { +const Router = ({ className, onPathNotMatch, onRouteChange, ...props }) => { const viewsConfig = React.useMemo(() => props.viewsConfig, []); const [views, setViews] = React.useState(() => { return Array(viewsConfig.length).fill(null); @@ -42,37 +42,40 @@ const Router = ({ className, onPathNotMatch, ...props }) => { const urlParams = urlParamsForPath(routeConfig, typeof pathname === 'string' ? pathname : ''); const routeViewIndex = viewsConfig.findIndex((vc) => vc.includes(routeConfig)); const routeIndex = viewsConfig[routeViewIndex].findIndex((rc) => rc === routeConfig); - setViews((views) => { - return views - .slice(0, viewsConfig.length) - .map((view, index) => { - if (index < routeViewIndex) { - return view; - } else if (index === routeViewIndex) { - return { - key: `${routeViewIndex}${routeIndex}`, - component: routeConfig.component, - urlParams: view !== null && isEqual(view.urlParams, urlParams) ? - view.urlParams - : - urlParams, - queryParams: view !== null && isEqual(Array.from(view.queryParams.entries()), Array.from(queryParams.entries())) ? - view.queryParams - : - queryParams - }; - } else { - return null; - } - }); - }); + const handled = typeof onRouteChange === 'function' && onRouteChange(routeConfig, urlParams, queryParams); + if (!handled) { + setViews((views) => { + return views + .slice(0, viewsConfig.length) + .map((view, index) => { + if (index < routeViewIndex) { + return view; + } else if (index === routeViewIndex) { + return { + key: `${routeViewIndex}${routeIndex}`, + component: routeConfig.component, + urlParams: view !== null && isEqual(view.urlParams, urlParams) ? + view.urlParams + : + urlParams, + queryParams: view !== null && isEqual(Array.from(view.queryParams.entries()), Array.from(queryParams.entries())) ? + view.queryParams + : + queryParams + }; + } else { + return null; + } + }); + }); + } }; window.addEventListener('hashchange', onLocationHashChange); onLocationHashChange(); return () => { window.removeEventListener('hashchange', onLocationHashChange); }; - }, [onPathNotMatch]); + }, [onPathNotMatch, onRouteChange]); return (
{ @@ -93,6 +96,7 @@ const Router = ({ className, onPathNotMatch, ...props }) => { Router.propTypes = { className: PropTypes.string, onPathNotMatch: PropTypes.func, + onRouteChange: PropTypes.func, viewsConfig: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.exact({ regexp: PropTypes.instanceOf(RegExp).isRequired, urlParamsNames: PropTypes.arrayOf(PropTypes.string).isRequired, diff --git a/src/router/Router/index.js b/src/router/Router/index.js index 8bd17750c..896d6eb5e 100644 --- a/src/router/Router/index.js +++ b/src/router/Router/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Router = require('./Router'); diff --git a/src/router/Router/routeConfigForPath.js b/src/router/Router/routeConfigForPath.js index 15cef7f26..d4fb81e95 100644 --- a/src/router/Router/routeConfigForPath.js +++ b/src/router/Router/routeConfigForPath.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const routeConfigForPath = (viewsConfig, path) => { for (const viewConfig of viewsConfig) { diff --git a/src/router/Router/urlParamsForPath.js b/src/router/Router/urlParamsForPath.js index 75c080199..a6a1b62fb 100644 --- a/src/router/Router/urlParamsForPath.js +++ b/src/router/Router/urlParamsForPath.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const urlParamsForPath = (routeConfig, path) => { const matches = path.match(routeConfig.regexp); diff --git a/src/router/index.js b/src/router/index.js index 55c4fc77a..03564ad3b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const { useRouteFocused } = require('./RouteFocusedContext'); const { useModalsContainer } = require('./ModalsContainerContext'); diff --git a/src/router/styles.css b/src/router/styles.css index 7c2ab5a32..0d74bbe52 100644 --- a/src/router/styles.css +++ b/src/router/styles.css @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2022 Smart code 203358507 */ +/* Copyright (C) 2017-2023 Smart code 203358507 */ .routes-container { position: relative; diff --git a/src/routes/Addons/Addon/Addon.js b/src/routes/Addons/Addon/Addon.js index 573d014b1..ae27dca51 100644 --- a/src/routes/Addons/Addon/Addon.js +++ b/src/routes/Addons/Addon/Addon.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Addons/Addon/index.js b/src/routes/Addons/Addon/index.js index ff649545f..84caa4da7 100644 --- a/src/routes/Addons/Addon/index.js +++ b/src/routes/Addons/Addon/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Addon = require('./Addon'); diff --git a/src/routes/Addons/Addon/styles.less b/src/routes/Addons/Addon/styles.less index f650b1324..382212730 100644 --- a/src/routes/Addons/Addon/styles.less +++ b/src/routes/Addons/Addon/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Addons/Addons.js b/src/routes/Addons/Addons.js index 6998ee368..c4c99173a 100644 --- a/src/routes/Addons/Addons.js +++ b/src/routes/Addons/Addons.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Addons/index.js b/src/routes/Addons/index.js index 27a471afb..52cf6f618 100644 --- a/src/routes/Addons/index.js +++ b/src/routes/Addons/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Addons = require('./Addons'); diff --git a/src/routes/Addons/styles.less b/src/routes/Addons/styles.less index 00e9938e1..80b30ba76 100644 --- a/src/routes/Addons/styles.less +++ b/src/routes/Addons/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Addons/useAddonDetailsTransportUrl.js b/src/routes/Addons/useAddonDetailsTransportUrl.js index cb50fb640..6ec03134f 100644 --- a/src/routes/Addons/useAddonDetailsTransportUrl.js +++ b/src/routes/Addons/useAddonDetailsTransportUrl.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/routes/Addons/useInstalledAddons.js b/src/routes/Addons/useInstalledAddons.js index fc649c772..eeb430e19 100644 --- a/src/routes/Addons/useInstalledAddons.js +++ b/src/routes/Addons/useInstalledAddons.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useModelState } = require('stremio/common'); diff --git a/src/routes/Addons/useRemoteAddons.js b/src/routes/Addons/useRemoteAddons.js index b3f74516e..0f8842e4a 100644 --- a/src/routes/Addons/useRemoteAddons.js +++ b/src/routes/Addons/useRemoteAddons.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useModelState } = require('stremio/common'); diff --git a/src/routes/Addons/useSelectableInputs.js b/src/routes/Addons/useSelectableInputs.js index c66f48b0b..a48cd2ac9 100644 --- a/src/routes/Addons/useSelectableInputs.js +++ b/src/routes/Addons/useSelectableInputs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { t } = require('i18next'); diff --git a/src/routes/Board/Board.js b/src/routes/Board/Board.js index 02c708c5c..64afb7900 100644 --- a/src/routes/Board/Board.js +++ b/src/routes/Board/Board.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const classnames = require('classnames'); @@ -16,7 +16,7 @@ const Board = () => { const streamingServer = useStreamingServer(); const continueWatchingPreview = useContinueWatchingPreview(); const [board, loadBoardRows] = useBoard(); - const boardCatalogsOffset = continueWatchingPreview.libraryItems.length > 0 ? 1 : 0; + const boardCatalogsOffset = continueWatchingPreview.items.length > 0 ? 1 : 0; const scrollContainerRef = React.useRef(); const onVisibleRangeChange = React.useCallback(() => { const range = getVisibleChildrenRange(scrollContainerRef.current); @@ -41,11 +41,11 @@ const Board = () => {
{ - continueWatchingPreview.libraryItems.length > 0 ? + continueWatchingPreview.items.length > 0 ? diff --git a/src/routes/Board/index.js b/src/routes/Board/index.js index 58c9b0b60..490b0fdf0 100644 --- a/src/routes/Board/index.js +++ b/src/routes/Board/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Board = require('./Board'); diff --git a/src/routes/Board/styles.less b/src/routes/Board/styles.less index e220bd6e3..b949d8689 100644 --- a/src/routes/Board/styles.less +++ b/src/routes/Board/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Board/useBoard.js b/src/routes/Board/useBoard.js index 6e3540ab6..06f043d52 100644 --- a/src/routes/Board/useBoard.js +++ b/src/routes/Board/useBoard.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/routes/Board/useContinueWatchingPreview.js b/src/routes/Board/useContinueWatchingPreview.js index f7f623587..7e83066a1 100644 --- a/src/routes/Board/useContinueWatchingPreview.js +++ b/src/routes/Board/useContinueWatchingPreview.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const { useModelState } = require('stremio/common'); diff --git a/src/routes/Discover/Discover.js b/src/routes/Discover/Discover.js index bb2c299d1..1949ba38c 100644 --- a/src/routes/Discover/Discover.js +++ b/src/routes/Discover/Discover.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -19,6 +19,12 @@ const Discover = ({ urlParams, queryParams }) => { const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false); const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false); const [selectedMetaItemIndex, setSelectedMetaItemIndex] = React.useState(0); + const metasContainerRef = React.useRef(); + React.useEffect(() => { + if (discover.catalog?.content.type === 'Loading') { + metasContainerRef.current.scrollTop = 0; + } + }, [discover.catalog]); const selectedMetaItem = React.useMemo(() => { return discover.catalog !== null && discover.catalog.content.type === 'Ready' && @@ -122,7 +128,7 @@ const Discover = ({ urlParams, queryParams }) => {
: discover.catalog.content.type === 'Loading' ? -
+
{Array(CONSTANTS.CATALOG_PAGE_SIZE).fill(null).map((_, index) => (
@@ -133,7 +139,7 @@ const Discover = ({ urlParams, queryParams }) => { ))}
: -
+
{discover.catalog.content.content.map((metaItem, index) => ( { description={selectedMetaItem.description} links={selectedMetaItem.links} deepLinks={selectedMetaItem.deepLinks} + links={selectedMetaItem.links} trailerStreams={selectedMetaItem.trailerStreams} inLibrary={selectedMetaItem.inLibrary} toggleInLibrary={selectedMetaItem.inLibrary ? removeFromLibrary : addToLibrary} diff --git a/src/routes/Discover/index.js b/src/routes/Discover/index.js index 3cb75063e..b8153f298 100644 --- a/src/routes/Discover/index.js +++ b/src/routes/Discover/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Discover = require('./Discover'); diff --git a/src/routes/Discover/styles.less b/src/routes/Discover/styles.less index 9ac56e11d..0604f3eaf 100644 --- a/src/routes/Discover/styles.less +++ b/src/routes/Discover/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Discover/useDiscover.js b/src/routes/Discover/useDiscover.js index c1555646c..78e41906b 100644 --- a/src/routes/Discover/useDiscover.js +++ b/src/routes/Discover/useDiscover.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const UrlUtils = require('url'); diff --git a/src/routes/Discover/useSelectableInputs.js b/src/routes/Discover/useSelectableInputs.js index f55987bda..6bba2c8ef 100644 --- a/src/routes/Discover/useSelectableInputs.js +++ b/src/routes/Discover/useSelectableInputs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useTranslation } = require('react-i18next'); diff --git a/src/routes/Intro/ConsentCheckbox/ConsentCheckbox.js b/src/routes/Intro/ConsentCheckbox/ConsentCheckbox.js index c93daf158..cdb5dd189 100644 --- a/src/routes/Intro/ConsentCheckbox/ConsentCheckbox.js +++ b/src/routes/Intro/ConsentCheckbox/ConsentCheckbox.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Intro/ConsentCheckbox/index.js b/src/routes/Intro/ConsentCheckbox/index.js index 54f2fc531..85376bae3 100644 --- a/src/routes/Intro/ConsentCheckbox/index.js +++ b/src/routes/Intro/ConsentCheckbox/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ConsentCheckbox = require('./ConsentCheckbox'); diff --git a/src/routes/Intro/ConsentCheckbox/styles.less b/src/routes/Intro/ConsentCheckbox/styles.less index 06a7ab47d..fbd087de0 100644 --- a/src/routes/Intro/ConsentCheckbox/styles.less +++ b/src/routes/Intro/ConsentCheckbox/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Intro/CredentialsTextInput/CredentialsTextInput.js b/src/routes/Intro/CredentialsTextInput/CredentialsTextInput.js index f190986fa..61c558cb0 100644 --- a/src/routes/Intro/CredentialsTextInput/CredentialsTextInput.js +++ b/src/routes/Intro/CredentialsTextInput/CredentialsTextInput.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Intro/CredentialsTextInput/index.js b/src/routes/Intro/CredentialsTextInput/index.js index 97a5d1a04..f8a903110 100644 --- a/src/routes/Intro/CredentialsTextInput/index.js +++ b/src/routes/Intro/CredentialsTextInput/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const CredentialsTextInput = require('./CredentialsTextInput'); diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index 6b91f3d43..908499a8b 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -144,12 +144,6 @@ const Intro = ({ queryParams }) => { dispatch({ type: 'error', error: 'You must accept the Terms of Service' }); return; } - core.transport.dispatch({ - action: 'Ctx', - args: { - action: 'Logout' - } - }); window.location = '#/'; }, [state.termsAccepted]); const signup = React.useCallback(() => { diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index f5eaab7e7..0d7bcaae4 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Intro/PasswordResetModal/index.js b/src/routes/Intro/PasswordResetModal/index.js index 9401ac939..f27afd192 100644 --- a/src/routes/Intro/PasswordResetModal/index.js +++ b/src/routes/Intro/PasswordResetModal/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const PasswordResetModal = require('./PasswordResetModal'); diff --git a/src/routes/Intro/PasswordResetModal/styles.less b/src/routes/Intro/PasswordResetModal/styles.less index aabd6339d..dce5ded6b 100644 --- a/src/routes/Intro/PasswordResetModal/styles.less +++ b/src/routes/Intro/PasswordResetModal/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Intro/index.js b/src/routes/Intro/index.js index 5b75f9913..ab47fbe6f 100644 --- a/src/routes/Intro/index.js +++ b/src/routes/Intro/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Intro = require('./Intro'); diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less index 29fa435f9..b32919148 100644 --- a/src/routes/Intro/styles.less +++ b/src/routes/Intro/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Intro/useFacebookToken.js b/src/routes/Intro/useFacebookToken.js index fe62b5341..8f978e248 100644 --- a/src/routes/Intro/useFacebookToken.js +++ b/src/routes/Intro/useFacebookToken.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/routes/Library/Library.js b/src/routes/Library/Library.js index 883b87c21..9cc6bfd36 100644 --- a/src/routes/Library/Library.js +++ b/src/routes/Library/Library.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Library/index.js b/src/routes/Library/index.js index 37f9d2a8e..7ff3bf4af 100644 --- a/src/routes/Library/index.js +++ b/src/routes/Library/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Library = require('./Library'); diff --git a/src/routes/Library/styles.less b/src/routes/Library/styles.less index 92b2d8d17..3e0f2c8a9 100644 --- a/src/routes/Library/styles.less +++ b/src/routes/Library/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Library/useLibrary.js b/src/routes/Library/useLibrary.js index d882d889b..8b6dee216 100644 --- a/src/routes/Library/useLibrary.js +++ b/src/routes/Library/useLibrary.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useModelState } = require('stremio/common'); diff --git a/src/routes/Library/useSelectableInputs.js b/src/routes/Library/useSelectableInputs.js index e63ad811b..49eb94a1f 100644 --- a/src/routes/Library/useSelectableInputs.js +++ b/src/routes/Library/useSelectableInputs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useTranslation } = require('react-i18next'); diff --git a/src/routes/MetaDetails/MetaDetails.js b/src/routes/MetaDetails/MetaDetails.js index 144ef6c6c..084ca3f58 100644 --- a/src/routes/MetaDetails/MetaDetails.js +++ b/src/routes/MetaDetails/MetaDetails.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -61,6 +61,17 @@ const MetaDetails = ({ urlParams, queryParams }) => { } }); }, [metaDetails]); + const toggleNotifications = React.useCallback(() => { + if (metaDetails.libraryItem) { + core.transport.dispatch({ + action: 'Ctx', + args: { + action: 'ToggleLibraryItemNotifications', + args: [metaDetails.libraryItem._id, !metaDetails.libraryItem.state.noNotif], + } + }); + } + }, [metaDetails.libraryItem]); const seasonOnSelect = React.useCallback((event) => { setSeason(event.value); }, [setSeason]); @@ -150,14 +161,17 @@ const MetaDetails = ({ urlParams, queryParams }) => { : metaPath !== null ? : null diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index 4fd1015df..d837f7cca 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -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, videoReleased, 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: [{ id: videoId, released: videoReleased }, true] + } + }); + } + }, [videoId, videoReleased]); + 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 && 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,8 @@ Stream.Placeholder = StreamPlaceholder; Stream.propTypes = { className: PropTypes.string, + videoId: PropTypes.string, + videoReleased: PropTypes.instanceOf(Date), addonName: PropTypes.string, name: PropTypes.string, description: PropTypes.string, @@ -107,48 +124,48 @@ Stream.propTypes = { fileName: PropTypes.string, streaming: PropTypes.string, openPlayer: PropTypes.shape({ - choose: { + choose: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, - vlc: { + }), + vlc: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, - outplayer: { + }), + outplayer: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, - infuse: { + }), + infuse: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, - justplayer: { + }), + justplayer: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, - mxplayer: { + }), + mxplayer: PropTypes.shape({ ios: PropTypes.string, android: PropTypes.string, windows: PropTypes.string, macos: PropTypes.string, linux: PropTypes.string - }, + }), }) }) }), diff --git a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js index fc0674733..47200cfa6 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js +++ b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/index.js b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/index.js index 65cc317cc..f97667a78 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/index.js +++ b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const StreamPlaceholder = require('./StreamPlaceholder'); diff --git a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less index ac3a46192..1c2772963 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less +++ b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 :import('~stremio/common/PlayIconCircleCentered/styles.less') { play-icon-circle-centered-background: background; diff --git a/src/routes/MetaDetails/StreamsList/Stream/index.js b/src/routes/MetaDetails/StreamsList/Stream/index.js index aa46e47cc..84077f142 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/index.js +++ b/src/routes/MetaDetails/StreamsList/Stream/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Stream = require('./Stream'); diff --git a/src/routes/MetaDetails/StreamsList/Stream/styles.less b/src/routes/MetaDetails/StreamsList/Stream/styles.less index feec5af81..396083b2b 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/styles.less +++ b/src/routes/MetaDetails/StreamsList/Stream/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index ce45c9ce9..5259d0d06 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -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,8 @@ const StreamsList = ({ className, ...props }) => { {filteredStreams.map((stream, index) => ( { StreamsList.propTypes = { className: PropTypes.string, - streams: PropTypes.arrayOf(PropTypes.object).isRequired + streams: PropTypes.arrayOf(PropTypes.object).isRequired, + video: PropTypes.object }; module.exports = StreamsList; diff --git a/src/routes/MetaDetails/StreamsList/index.js b/src/routes/MetaDetails/StreamsList/index.js index 4a37ec7f3..5e4578a08 100644 --- a/src/routes/MetaDetails/StreamsList/index.js +++ b/src/routes/MetaDetails/StreamsList/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const StreamsList = require('./StreamsList'); diff --git a/src/routes/MetaDetails/StreamsList/styles.less b/src/routes/MetaDetails/StreamsList/styles.less index 92c55c7f4..41b090070 100644 --- a/src/routes/MetaDetails/StreamsList/styles.less +++ b/src/routes/MetaDetails/StreamsList/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js index 3103e82d8..59607711e 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js index 7816bda13..d767769ec 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/index.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/index.js index a5bec0487..5f20795b5 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/index.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder'); diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less index 342178cee..711d1ab42 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .seasons-bar-placeholder-container { display: flex; diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/index.js b/src/routes/MetaDetails/VideosList/SeasonsBar/index.js index c88576024..a617abeb2 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/index.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SeasonsBar = require('./SeasonsBar'); diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less index 7146e3eef..b80fba840 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/MetaDetails/VideosList/Video/Video.js b/src/routes/MetaDetails/VideosList/Video/Video.js index bf0ee96ce..befcbfd3c 100644 --- a/src/routes/MetaDetails/VideosList/Video/Video.js +++ b/src/routes/MetaDetails/VideosList/Video/Video.js @@ -1,8 +1,9 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); +const { t } = require('i18next'); const { useServices } = require('stremio/services'); const { useRouteFocused } = require('stremio-router'); const { default: Icon } = require('@stremio/stremio-icons/react'); @@ -14,27 +15,36 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w const { core } = useServices(); const routeFocused = useRouteFocused(); const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false); - const popupLabelOnClick = React.useCallback((event) => { - if (!event.nativeEvent.togglePopupPrevented && event.nativeEvent.ctrlKey) { - event.preventDefault(); - toggleMenu(); + const popupLabelOnMouseUp = React.useCallback((event) => { + if (!event.nativeEvent.togglePopupPrevented) { + if (event.nativeEvent.ctrlKey || event.nativeEvent.button === 2) { + event.preventDefault(); + toggleMenu(); + } } }, []); - const popupLabelOnKeyDown = React.useCallback((event) => { - event.nativeEvent.buttonClickPrevented = true; - }, []); const popupLabelOnContextMenu = React.useCallback((event) => { if (!event.nativeEvent.togglePopupPrevented && !event.nativeEvent.ctrlKey) { event.preventDefault(); + } + }, [toggleMenu]); + const popupLabelOnLongPress = React.useCallback((event) => { + if (event.nativeEvent.pointerType !== 'mouse' && !event.nativeEvent.togglePopupPrevented) { toggleMenu(); } }, [toggleMenu]); + const popupMenuOnPointerDown = React.useCallback((event) => { + event.nativeEvent.togglePopupPrevented = true; + }, []); const popupMenuOnContextMenu = React.useCallback((event) => { event.nativeEvent.togglePopupPrevented = true; }, []); const popupMenuOnClick = React.useCallback((event) => { event.nativeEvent.togglePopupPrevented = true; }, []); + const popupMenuOnKeyDown = React.useCallback((event) => { + event.nativeEvent.buttonClickPrevented = true; + }, []); const toggleWatchedOnClick = React.useCallback((event) => { event.preventDefault(); closeMenu(); @@ -42,10 +52,10 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w action: 'MetaDetails', args: { action: 'MarkVideoAsWatched', - args: [id, !watched] + args: [{ id, released }, !watched] } }); - }, [id, watched]); + }, [id, released, watched]); const href = React.useMemo(() => { return deepLinks ? typeof deepLinks.player === 'string' ? @@ -133,12 +143,12 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w }, []); const renderMenu = React.useMemo(() => function renderMenu() { return ( -
+
); @@ -162,8 +172,8 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w scheduled={scheduled} href={href} {...props} - onClick={popupLabelOnClick} - onKeyDown={popupLabelOnKeyDown} + onMouseUp={popupLabelOnMouseUp} + onLongPress={popupLabelOnLongPress} onContextMenu={popupLabelOnContextMenu} open={menuOpen} onCloseRequest={closeMenu} diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js index 66dfabf10..83fdc3cd2 100644 --- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js +++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/index.js b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/index.js index 74fe5b163..a4d3f6423 100644 --- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/index.js +++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const VideoPlaceholder = require('./VideoPlaceholder'); diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less index 13b0f7f64..8f6070c8a 100644 --- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less +++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .video-placeholder-container { display: flex; diff --git a/src/routes/MetaDetails/VideosList/Video/index.js b/src/routes/MetaDetails/VideosList/Video/index.js index f6c5f0ae0..60d2a591f 100644 --- a/src/routes/MetaDetails/VideosList/Video/index.js +++ b/src/routes/MetaDetails/VideosList/Video/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Video = require('./Video'); diff --git a/src/routes/MetaDetails/VideosList/Video/styles.less b/src/routes/MetaDetails/VideosList/Video/styles.less index c815d600a..d166f99bd 100644 --- a/src/routes/MetaDetails/VideosList/Video/styles.less +++ b/src/routes/MetaDetails/VideosList/Video/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; @@ -33,6 +33,7 @@ overflow: hidden; .thumbnail { + pointer-events: none; display: block; height: 5rem; width: 8rem; diff --git a/src/routes/MetaDetails/VideosList/VideosList.js b/src/routes/MetaDetails/VideosList/VideosList.js index e67d7660c..e344c6480 100644 --- a/src/routes/MetaDetails/VideosList/VideosList.js +++ b/src/routes/MetaDetails/VideosList/VideosList.js @@ -1,16 +1,18 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { t } = require('i18next'); -const Image = require('stremio/common/Image'); -const SearchBar = require('stremio/common/SearchBar'); +const { Image, SearchBar, Checkbox } = require('stremio/common'); const SeasonsBar = require('./SeasonsBar'); const Video = require('./Video'); const styles = require('./styles'); -const VideosList = ({ className, metaItem, season, seasonOnSelect }) => { +const VideosList = ({ className, metaItem, libraryItem, season, seasonOnSelect, toggleNotifications }) => { + const showNotificationsToggle = React.useMemo(() => { + return metaItem?.content?.content?.inLibrary && metaItem?.content?.content?.videos?.length; + }, [metaItem]); const videos = React.useMemo(() => { return metaItem && metaItem.content.type === 'Ready' ? metaItem.content.content.videos @@ -80,6 +82,14 @@ const VideosList = ({ className, metaItem, season, seasonOnSelect }) => {
: + { + showNotificationsToggle && libraryItem ? + + {t('DETAIL_RECEIVE_NOTIF_SERIES')} + + : + null + } { seasons.length > 0 ? { VideosList.propTypes = { className: PropTypes.string, metaItem: PropTypes.object, + libraryItem: PropTypes.object, season: PropTypes.number, - seasonOnSelect: PropTypes.func + seasonOnSelect: PropTypes.func, + toggleNotifications: PropTypes.func, }; module.exports = VideosList; diff --git a/src/routes/MetaDetails/VideosList/index.js b/src/routes/MetaDetails/VideosList/index.js index 4ae28b642..2c0ec3f51 100644 --- a/src/routes/MetaDetails/VideosList/index.js +++ b/src/routes/MetaDetails/VideosList/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const VideosList = require('./VideosList'); diff --git a/src/routes/MetaDetails/VideosList/styles.less b/src/routes/MetaDetails/VideosList/styles.less index 723a7a59e..3ef1ae2eb 100644 --- a/src/routes/MetaDetails/VideosList/styles.less +++ b/src/routes/MetaDetails/VideosList/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; @@ -6,6 +6,7 @@ .videos-list-container { display: flex; flex-direction: column; + padding-top: 0.5rem; .message-container { flex: 1; @@ -35,9 +36,22 @@ } } + .notifications-checkbox { + flex: none; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 1rem; + height: 3rem; + padding: 0 1.5rem; + color: @color-surface-light5-90; + } + .seasons-bar { flex: none; align-self: stretch; + margin: 0.5rem 1rem 1rem 1rem; } .search-bar { diff --git a/src/routes/MetaDetails/index.js b/src/routes/MetaDetails/index.js index d2be5007a..19324461d 100644 --- a/src/routes/MetaDetails/index.js +++ b/src/routes/MetaDetails/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const MetaDetails = require('./MetaDetails'); diff --git a/src/routes/MetaDetails/styles.less b/src/routes/MetaDetails/styles.less index 8bb07bad7..49aab96e9 100644 --- a/src/routes/MetaDetails/styles.less +++ b/src/routes/MetaDetails/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; @@ -59,6 +59,7 @@ } .background-image { + pointer-events: none; display: block; width: 100%; height: 100%; diff --git a/src/routes/MetaDetails/useMetaDetails.js b/src/routes/MetaDetails/useMetaDetails.js index f2c10d10f..66297faae 100644 --- a/src/routes/MetaDetails/useMetaDetails.js +++ b/src/routes/MetaDetails/useMetaDetails.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useModelState } = require('stremio/common'); diff --git a/src/routes/MetaDetails/useMetaExtensionTabs.js b/src/routes/MetaDetails/useMetaExtensionTabs.js index 958c148f4..c4ca2f10e 100644 --- a/src/routes/MetaDetails/useMetaExtensionTabs.js +++ b/src/routes/MetaDetails/useMetaExtensionTabs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/routes/MetaDetails/useSeason.js b/src/routes/MetaDetails/useSeason.js index 6ae4df9f4..9d958a5cf 100644 --- a/src/routes/MetaDetails/useSeason.js +++ b/src/routes/MetaDetails/useSeason.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/routes/NotFound/NotFound.js b/src/routes/NotFound/NotFound.js index d99ede63a..69a88d22f 100644 --- a/src/routes/NotFound/NotFound.js +++ b/src/routes/NotFound/NotFound.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { Image, HorizontalNavBar } = require('stremio/common'); diff --git a/src/routes/NotFound/index.js b/src/routes/NotFound/index.js index 6035eb961..d4606cad1 100644 --- a/src/routes/NotFound/index.js +++ b/src/routes/NotFound/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const NotFound = require('./NotFound'); diff --git a/src/routes/NotFound/styles.less b/src/routes/NotFound/styles.less index 3dd3b1e46..ce002bcca 100644 --- a/src/routes/NotFound/styles.less +++ b/src/routes/NotFound/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/BufferingLoader/BufferingLoader.js b/src/routes/Player/BufferingLoader/BufferingLoader.js index c43604254..ba700672c 100644 --- a/src/routes/Player/BufferingLoader/BufferingLoader.js +++ b/src/routes/Player/BufferingLoader/BufferingLoader.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/BufferingLoader/index.js b/src/routes/Player/BufferingLoader/index.js index 59673b292..a2371d763 100644 --- a/src/routes/Player/BufferingLoader/index.js +++ b/src/routes/Player/BufferingLoader/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const BufferingLoader = require('./BufferingLoader'); diff --git a/src/routes/Player/BufferingLoader/styles.less b/src/routes/Player/BufferingLoader/styles.less index 8b4901c02..5b60eee14 100644 --- a/src/routes/Player/BufferingLoader/styles.less +++ b/src/routes/Player/BufferingLoader/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .buffering-loader-container { display: flex; diff --git a/src/routes/Player/ControlBar/ControlBar.js b/src/routes/Player/ControlBar/ControlBar.js index 7ea997a21..01e97f982 100644 --- a/src/routes/Player/ControlBar/ControlBar.js +++ b/src/routes/Player/ControlBar/ControlBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/ControlBar/SeekBar/SeekBar.js b/src/routes/Player/ControlBar/SeekBar/SeekBar.js index 780ecf568..27f0a4ff8 100644 --- a/src/routes/Player/ControlBar/SeekBar/SeekBar.js +++ b/src/routes/Player/ControlBar/SeekBar/SeekBar.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/ControlBar/SeekBar/formatTime.js b/src/routes/Player/ControlBar/SeekBar/formatTime.js index 90eea3f62..2bd684485 100644 --- a/src/routes/Player/ControlBar/SeekBar/formatTime.js +++ b/src/routes/Player/ControlBar/SeekBar/formatTime.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const formatUnit = (value) => { return ('0' + value).slice(-1 * Math.max(value.toString().length, 2)); diff --git a/src/routes/Player/ControlBar/SeekBar/index.js b/src/routes/Player/ControlBar/SeekBar/index.js index 8109f8cc9..3ed0dc433 100644 --- a/src/routes/Player/ControlBar/SeekBar/index.js +++ b/src/routes/Player/ControlBar/SeekBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SeekBar = require('./SeekBar'); diff --git a/src/routes/Player/ControlBar/SeekBar/styles.less b/src/routes/Player/ControlBar/SeekBar/styles.less index bd5fb4294..50abb455b 100644 --- a/src/routes/Player/ControlBar/SeekBar/styles.less +++ b/src/routes/Player/ControlBar/SeekBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/ControlBar/VolumeSlider/VolumeSlider.js b/src/routes/Player/ControlBar/VolumeSlider/VolumeSlider.js index f589336da..88c95b8d1 100644 --- a/src/routes/Player/ControlBar/VolumeSlider/VolumeSlider.js +++ b/src/routes/Player/ControlBar/VolumeSlider/VolumeSlider.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/ControlBar/VolumeSlider/index.js b/src/routes/Player/ControlBar/VolumeSlider/index.js index 12c083b53..04b0f3e9f 100644 --- a/src/routes/Player/ControlBar/VolumeSlider/index.js +++ b/src/routes/Player/ControlBar/VolumeSlider/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const VolumeSlider = require('./VolumeSlider'); diff --git a/src/routes/Player/ControlBar/VolumeSlider/styles.less b/src/routes/Player/ControlBar/VolumeSlider/styles.less index 99b7b0046..9c1556159 100644 --- a/src/routes/Player/ControlBar/VolumeSlider/styles.less +++ b/src/routes/Player/ControlBar/VolumeSlider/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/ControlBar/index.js b/src/routes/Player/ControlBar/index.js index dc82eafdc..a84c53f67 100644 --- a/src/routes/Player/ControlBar/index.js +++ b/src/routes/Player/ControlBar/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ControlBar = require('./ControlBar'); diff --git a/src/routes/Player/ControlBar/styles.less b/src/routes/Player/ControlBar/styles.less index f58f4b768..938dc5bda 100644 --- a/src/routes/Player/ControlBar/styles.less +++ b/src/routes/Player/ControlBar/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Player/InfoMenu/InfoMenu.js b/src/routes/Player/InfoMenu/InfoMenu.js index a3d3e3723..eec5e7286 100644 --- a/src/routes/Player/InfoMenu/InfoMenu.js +++ b/src/routes/Player/InfoMenu/InfoMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/InfoMenu/index.js b/src/routes/Player/InfoMenu/index.js index b6444df98..8dae65490 100644 --- a/src/routes/Player/InfoMenu/index.js +++ b/src/routes/Player/InfoMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const InfoMenu = require('./InfoMenu'); diff --git a/src/routes/Player/InfoMenu/styles.less b/src/routes/Player/InfoMenu/styles.less index 440816320..32a72b77d 100644 --- a/src/routes/Player/InfoMenu/styles.less +++ b/src/routes/Player/InfoMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .info-menu-container { width: 30rem; diff --git a/src/routes/Player/NextVideoPopup/NextVideoPopup.js b/src/routes/Player/NextVideoPopup/NextVideoPopup.js index 049329f35..2b38d5a67 100644 --- a/src/routes/Player/NextVideoPopup/NextVideoPopup.js +++ b/src/routes/Player/NextVideoPopup/NextVideoPopup.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/NextVideoPopup/index.js b/src/routes/Player/NextVideoPopup/index.js index b79c4bfdd..8bebae07d 100644 --- a/src/routes/Player/NextVideoPopup/index.js +++ b/src/routes/Player/NextVideoPopup/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const NextVideoPopup = require('./NextVideoPopup'); diff --git a/src/routes/Player/NextVideoPopup/styles.less b/src/routes/Player/NextVideoPopup/styles.less index f755d9f85..6c2ff745e 100644 --- a/src/routes/Player/NextVideoPopup/styles.less +++ b/src/routes/Player/NextVideoPopup/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/OptionsMenu/Option/Option.js b/src/routes/Player/OptionsMenu/Option/Option.js index b8ef7d159..f769fb476 100644 --- a/src/routes/Player/OptionsMenu/Option/Option.js +++ b/src/routes/Player/OptionsMenu/Option/Option.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/OptionsMenu/Option/index.js b/src/routes/Player/OptionsMenu/Option/index.js index 2bf2d108d..368faa94f 100644 --- a/src/routes/Player/OptionsMenu/Option/index.js +++ b/src/routes/Player/OptionsMenu/Option/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Option = require('./Option'); diff --git a/src/routes/Player/OptionsMenu/Option/styles.less b/src/routes/Player/OptionsMenu/Option/styles.less index 48b4a0ad1..7ae05b3ad 100644 --- a/src/routes/Player/OptionsMenu/Option/styles.less +++ b/src/routes/Player/OptionsMenu/Option/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/OptionsMenu/OptionsMenu.js b/src/routes/Player/OptionsMenu/OptionsMenu.js index 429de0f97..6c50e1551 100644 --- a/src/routes/Player/OptionsMenu/OptionsMenu.js +++ b/src/routes/Player/OptionsMenu/OptionsMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/OptionsMenu/index.js b/src/routes/Player/OptionsMenu/index.js index 069b002b3..be8e383fe 100644 --- a/src/routes/Player/OptionsMenu/index.js +++ b/src/routes/Player/OptionsMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const OptionsMenu = require('./OptionsMenu'); diff --git a/src/routes/Player/OptionsMenu/styles.less b/src/routes/Player/OptionsMenu/styles.less index 6908e65f5..872a3ef90 100644 --- a/src/routes/Player/OptionsMenu/styles.less +++ b/src/routes/Player/OptionsMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .options-menu-container { width: 16rem; diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 2bd54e42a..09f5a7728 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); @@ -585,11 +585,24 @@ const Player = ({ urlParams, queryParams }) => { } } }; + const onWheel = ({ deltaY }) => { + if (deltaY > 0) { + if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) { + onVolumeChangeRequested(videoState.volume - 5); + } + } else { + if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) { + onVolumeChangeRequested(videoState.volume + 5); + } + } + }; if (routeFocused) { window.addEventListener('keydown', onKeyDown); + window.addEventListener('wheel', onWheel); } return () => { window.removeEventListener('keydown', onKeyDown); + window.removeEventListener('wheel', onWheel); }; }, [player.metaItem, player.selected, streamingServer.statistics, settings.seekTimeDuration, routeFocused, subtitlesMenuOpen, infoMenuOpen, videosMenuOpen, speedMenuOpen, optionsMenuOpen, statisticsMenuOpen, videoState.paused, videoState.time, videoState.volume, videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks, videoState.playbackSpeed, toggleSubtitlesMenu, toggleInfoMenu, toggleVideosMenu, toggleStatisticsMenu]); React.useLayoutEffect(() => { diff --git a/src/routes/Player/SpeedMenu/Option/Option.js b/src/routes/Player/SpeedMenu/Option/Option.js index 3310eb276..bac89ed33 100644 --- a/src/routes/Player/SpeedMenu/Option/Option.js +++ b/src/routes/Player/SpeedMenu/Option/Option.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/SpeedMenu/Option/index.js b/src/routes/Player/SpeedMenu/Option/index.js index 2bf2d108d..368faa94f 100644 --- a/src/routes/Player/SpeedMenu/Option/index.js +++ b/src/routes/Player/SpeedMenu/Option/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Option = require('./Option'); diff --git a/src/routes/Player/SpeedMenu/Option/styles.less b/src/routes/Player/SpeedMenu/Option/styles.less index 1d19c1a35..2b716d573 100644 --- a/src/routes/Player/SpeedMenu/Option/styles.less +++ b/src/routes/Player/SpeedMenu/Option/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/SpeedMenu/SpeedMenu.js b/src/routes/Player/SpeedMenu/SpeedMenu.js index 81b18e66d..f71ce6116 100644 --- a/src/routes/Player/SpeedMenu/SpeedMenu.js +++ b/src/routes/Player/SpeedMenu/SpeedMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/SpeedMenu/index.js b/src/routes/Player/SpeedMenu/index.js index 928b8acce..7c8454f2a 100644 --- a/src/routes/Player/SpeedMenu/index.js +++ b/src/routes/Player/SpeedMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SpeedMenu = require('./SpeedMenu'); diff --git a/src/routes/Player/SpeedMenu/styles.less b/src/routes/Player/SpeedMenu/styles.less index b0f1e0954..12c3ea725 100644 --- a/src/routes/Player/SpeedMenu/styles.less +++ b/src/routes/Player/SpeedMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/DiscreteSelectInput.js b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/DiscreteSelectInput.js index 8d472113a..924e677eb 100644 --- a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/DiscreteSelectInput.js +++ b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/DiscreteSelectInput.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/index.js b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/index.js index 7f73dfec0..aaf93afb3 100644 --- a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/index.js +++ b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const DiscreteSelectInput = require('./DiscreteSelectInput'); diff --git a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less index 24849ef97..986267eac 100644 --- a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less +++ b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js b/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js index d50437cf7..0130c58e2 100644 --- a/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js +++ b/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/SubtitlesMenu/index.js b/src/routes/Player/SubtitlesMenu/index.js index bb0b5b062..48f613ea2 100644 --- a/src/routes/Player/SubtitlesMenu/index.js +++ b/src/routes/Player/SubtitlesMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const SubtitlesMenu = require('./SubtitlesMenu'); diff --git a/src/routes/Player/SubtitlesMenu/styles.less b/src/routes/Player/SubtitlesMenu/styles.less index fdcfd1727..c41410e06 100644 --- a/src/routes/Player/SubtitlesMenu/styles.less +++ b/src/routes/Player/SubtitlesMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/Video/Video.js b/src/routes/Player/Video/Video.js index 8446457b5..6dee8fe33 100644 --- a/src/routes/Player/Video/Video.js +++ b/src/routes/Player/Video/Video.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/Video/index.js b/src/routes/Player/Video/index.js index f6c5f0ae0..60d2a591f 100644 --- a/src/routes/Player/Video/index.js +++ b/src/routes/Player/Video/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Video = require('./Video'); diff --git a/src/routes/Player/Video/styles.less b/src/routes/Player/Video/styles.less index c2eed645e..53a7620a0 100644 --- a/src/routes/Player/Video/styles.less +++ b/src/routes/Player/Video/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .video-container { .video { diff --git a/src/routes/Player/VideosMenu/VideosMenu.js b/src/routes/Player/VideosMenu/VideosMenu.js index 219a329c2..9d5819db7 100644 --- a/src/routes/Player/VideosMenu/VideosMenu.js +++ b/src/routes/Player/VideosMenu/VideosMenu.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Player/VideosMenu/index.js b/src/routes/Player/VideosMenu/index.js index e604ab4cc..c2fa21666 100644 --- a/src/routes/Player/VideosMenu/index.js +++ b/src/routes/Player/VideosMenu/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const VideosMenu = require('./VideosMenu'); diff --git a/src/routes/Player/VideosMenu/styles.less b/src/routes/Player/VideosMenu/styles.less index 3b9d18030..8cc7e4805 100644 --- a/src/routes/Player/VideosMenu/styles.less +++ b/src/routes/Player/VideosMenu/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 .videos-menu-container { width: 30rem; diff --git a/src/routes/Player/index.js b/src/routes/Player/index.js index 694a57274..f61c0eb24 100644 --- a/src/routes/Player/index.js +++ b/src/routes/Player/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Player = require('./Player'); diff --git a/src/routes/Player/styles.less b/src/routes/Player/styles.less index 647b75f3d..b650a64a0 100644 --- a/src/routes/Player/styles.less +++ b/src/routes/Player/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; diff --git a/src/routes/Player/usePlayer.js b/src/routes/Player/usePlayer.js index f6099f65c..53aa84fe4 100644 --- a/src/routes/Player/usePlayer.js +++ b/src/routes/Player/usePlayer.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/routes/Player/useSettings.js b/src/routes/Player/useSettings.js index f72915a54..e6976cd9d 100644 --- a/src/routes/Player/useSettings.js +++ b/src/routes/Player/useSettings.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/routes/Search/Search.js b/src/routes/Search/Search.js index e36182056..b6996258b 100644 --- a/src/routes/Search/Search.js +++ b/src/routes/Search/Search.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/routes/Search/index.js b/src/routes/Search/index.js index 3ce9e91d3..817953f66 100644 --- a/src/routes/Search/index.js +++ b/src/routes/Search/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Search = require('./Search'); diff --git a/src/routes/Search/styles.less b/src/routes/Search/styles.less index 614febf76..6ee49d356 100644 --- a/src/routes/Search/styles.less +++ b/src/routes/Search/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Search/useSearch.js b/src/routes/Search/useSearch.js index 40a46fb76..98629e017 100644 --- a/src/routes/Search/useSearch.js +++ b/src/routes/Search/useSearch.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useModelState } = require('stremio/common'); diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js index bd1586521..c90d37ef9 100644 --- a/src/routes/Settings/Settings.js +++ b/src/routes/Settings/Settings.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const classnames = require('classnames'); @@ -222,7 +222,7 @@ const Settings = () => {
{ profile.auth !== null ? - : @@ -236,7 +236,7 @@ const Settings = () => { { profile.auth === null ?
-
diff --git a/src/routes/Settings/index.js b/src/routes/Settings/index.js index 4055638dd..b426b8b91 100644 --- a/src/routes/Settings/index.js +++ b/src/routes/Settings/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Settings = require('./Settings'); diff --git a/src/routes/Settings/styles.less b/src/routes/Settings/styles.less index 7537987fe..c9b53aa35 100644 --- a/src/routes/Settings/styles.less +++ b/src/routes/Settings/styles.less @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; diff --git a/src/routes/Settings/useDataExport.js b/src/routes/Settings/useDataExport.js index d90d2c397..773bcc2bd 100644 --- a/src/routes/Settings/useDataExport.js +++ b/src/routes/Settings/useDataExport.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useServices } = require('stremio/services'); diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js index 8ba4e5b8e..d4783444b 100644 --- a/src/routes/Settings/useProfileSettingsInputs.js +++ b/src/routes/Settings/useProfileSettingsInputs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const { useTranslation } = require('react-i18next'); diff --git a/src/routes/Settings/useStreamingServerSettingsInputs.js b/src/routes/Settings/useStreamingServerSettingsInputs.js index d6ea1a6a0..442829dbf 100644 --- a/src/routes/Settings/useStreamingServerSettingsInputs.js +++ b/src/routes/Settings/useStreamingServerSettingsInputs.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const isEqual = require('lodash.isequal'); diff --git a/src/routes/index.js b/src/routes/index.js index 1ada48a2f..47a2eacd8 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Addons = require('./Addons'); const Board = require('./Board'); diff --git a/src/services/Chromecast/Chromecast.js b/src/services/Chromecast/Chromecast.js index 44c9e4022..0dd4dba9e 100644 --- a/src/services/Chromecast/Chromecast.js +++ b/src/services/Chromecast/Chromecast.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); const ChromecastTransport = require('./ChromecastTransport'); diff --git a/src/services/Chromecast/ChromecastTransport.js b/src/services/Chromecast/ChromecastTransport.js index f396df643..5b3e8b4f1 100644 --- a/src/services/Chromecast/ChromecastTransport.js +++ b/src/services/Chromecast/ChromecastTransport.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); const hat = require('hat'); diff --git a/src/services/Chromecast/index.js b/src/services/Chromecast/index.js index e6e69bba1..3b38dfb48 100644 --- a/src/services/Chromecast/index.js +++ b/src/services/Chromecast/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Chromecast = require('./Chromecast'); diff --git a/src/services/Core/Core.js b/src/services/Core/Core.js index 9e78f1af1..db26be78e 100644 --- a/src/services/Core/Core.js +++ b/src/services/Core/Core.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); const CoreTransport = require('./CoreTransport'); diff --git a/src/services/Core/CoreTransport.js b/src/services/Core/CoreTransport.js index 954dc88dd..b140551f6 100644 --- a/src/services/Core/CoreTransport.js +++ b/src/services/Core/CoreTransport.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); const Bridge = require('@stremio/stremio-core-web/bridge'); diff --git a/src/services/Core/index.js b/src/services/Core/index.js index 085c8db71..e8ce0b8c8 100644 --- a/src/services/Core/index.js +++ b/src/services/Core/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Core = require('./Core'); diff --git a/src/services/DragAndDrop/DragAndDrop.js b/src/services/DragAndDrop/DragAndDrop.js index a503911d8..477362bb5 100644 --- a/src/services/DragAndDrop/DragAndDrop.js +++ b/src/services/DragAndDrop/DragAndDrop.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); diff --git a/src/services/DragAndDrop/index.js b/src/services/DragAndDrop/index.js index 2bc7650af..5fb7baf15 100644 --- a/src/services/DragAndDrop/index.js +++ b/src/services/DragAndDrop/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const DragAndDrop = require('./DragAndDrop'); diff --git a/src/services/KeyboardShortcuts/KeyboardShortcuts.js b/src/services/KeyboardShortcuts/KeyboardShortcuts.js index d6984ef42..55fc852ce 100644 --- a/src/services/KeyboardShortcuts/KeyboardShortcuts.js +++ b/src/services/KeyboardShortcuts/KeyboardShortcuts.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); diff --git a/src/services/KeyboardShortcuts/index.js b/src/services/KeyboardShortcuts/index.js index cf143a59f..9eb346014 100644 --- a/src/services/KeyboardShortcuts/index.js +++ b/src/services/KeyboardShortcuts/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const KeyboardShortcuts = require('./KeyboardShortcuts'); diff --git a/src/services/ServicesContext/ServicesContext.js b/src/services/ServicesContext/ServicesContext.js index c428609de..5f81c764c 100644 --- a/src/services/ServicesContext/ServicesContext.js +++ b/src/services/ServicesContext/ServicesContext.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); diff --git a/src/services/ServicesContext/ServicesProvider.js b/src/services/ServicesContext/ServicesProvider.js index 063580948..ef97c5daa 100644 --- a/src/services/ServicesContext/ServicesProvider.js +++ b/src/services/ServicesContext/ServicesProvider.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); diff --git a/src/services/ServicesContext/index.js b/src/services/ServicesContext/index.js index 8ade6b323..054dfbb27 100644 --- a/src/services/ServicesContext/index.js +++ b/src/services/ServicesContext/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const ServicesProvider = require('./ServicesProvider'); const useServices = require('./useServices'); diff --git a/src/services/ServicesContext/useServices.js b/src/services/ServicesContext/useServices.js index 003702cbe..55dc9c88d 100644 --- a/src/services/ServicesContext/useServices.js +++ b/src/services/ServicesContext/useServices.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const ServicesContext = require('./ServicesContext'); diff --git a/src/services/Shell/Shell.js b/src/services/Shell/Shell.js index 1e0c31943..64610da78 100644 --- a/src/services/Shell/Shell.js +++ b/src/services/Shell/Shell.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); const ShellTransport = require('./ShellTransport'); diff --git a/src/services/Shell/ShellTransport.js b/src/services/Shell/ShellTransport.js index ff2ac845c..4fba3ac08 100644 --- a/src/services/Shell/ShellTransport.js +++ b/src/services/Shell/ShellTransport.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const EventEmitter = require('eventemitter3'); diff --git a/src/services/Shell/index.js b/src/services/Shell/index.js index 059c9d985..990fc1e37 100644 --- a/src/services/Shell/index.js +++ b/src/services/Shell/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Shell = require('./Shell'); diff --git a/src/services/index.js b/src/services/index.js index 3ed0767f0..84cfcc8b8 100644 --- a/src/services/index.js +++ b/src/services/index.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const Chromecast = require('./Chromecast'); const Core = require('./Core'); diff --git a/src/types/models/Ctx.d.ts b/src/types/models/Ctx.d.ts index 83fe66c84..fd3cb2766 100644 --- a/src/types/models/Ctx.d.ts +++ b/src/types/models/Ctx.d.ts @@ -42,6 +42,19 @@ type Profile = { settings: Settings, }; +type Notifications = { + uid: string, + created: string, + items: Record, +}; + +type NotificationItem = { + metaId: string, + videoId: string, + videoReleased: string, +} + type Ctx = { profile: Profile, + notifications: Notifications, }; \ No newline at end of file diff --git a/src/types/models/MetaDetails.d.ts b/src/types/models/MetaDetails.d.ts index 4b18a3612..efa7efc33 100644 --- a/src/types/models/MetaDetails.d.ts +++ b/src/types/models/MetaDetails.d.ts @@ -14,6 +14,7 @@ type MetaDetails = { addon: Addon, content: Loadable, } | null, + libraryItem: LibraryItem | null, selected: { metaPath: ResourceRequestPath, streamPath: ResourceRequestPath, diff --git a/tests/copyright.spec.js b/tests/copyright.spec.js index 589f9bf51..61315ccdb 100644 --- a/tests/copyright.spec.js +++ b/tests/copyright.spec.js @@ -1,9 +1,9 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const fs = require('fs'); const readdirp = require('readdirp'); -const COPYRIGHT_HEADER = /^\/\/ Copyright \(C\) 2017-2022 Smart code 203358507.*/; +const COPYRIGHT_HEADER = /^\/\/ Copyright \(C\) 2017-2023 Smart code 203358507.*/; describe('copyright', () => { test('js', async () => { diff --git a/tests/routesRegexp.spec.js b/tests/routesRegexp.spec.js index 774db2d7f..d3f82c083 100644 --- a/tests/routesRegexp.spec.js +++ b/tests/routesRegexp.spec.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const routesRegexp = require('../src/common/routesRegexp'); diff --git a/webpack.config.js b/webpack.config.js index da5ccca98..100aad971 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2022 Smart code 203358507 +// Copyright (C) 2017-2023 Smart code 203358507 const path = require('path'); const { execSync } = require('child_process');