mirror of
https://github.com/p-stream/p-stream.git
synced 2026-04-21 02:52:28 +00:00
Merge branch 'sussy-code:main' into main
This commit is contained in:
commit
2b7a054d5f
5 changed files with 98 additions and 39 deletions
|
|
@ -28,7 +28,7 @@
|
||||||
Type the following commands into your terminal / command line to run Sudo-Flix locally
|
Type the following commands into your terminal / command line to run Sudo-Flix locally
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/sussy-code/smov.git
|
git clone https://github.com/sussy-code/smov.git
|
||||||
cd sudo-flix
|
cd smov
|
||||||
git pull
|
git pull
|
||||||
pnpm install
|
pnpm install
|
||||||
pnpm run dev
|
pnpm run dev
|
||||||
|
|
@ -40,7 +40,7 @@ Then you can visit the local instance [here](http://localhost:5173) or, at local
|
||||||
To update a sudo-flix instance you can type the below commands into a terminal at the root of your project.
|
To update a sudo-flix instance you can type the below commands into a terminal at the root of your project.
|
||||||
```bash
|
```bash
|
||||||
git remote add upstream https://github.com/sussy-code/smov.git
|
git remote add upstream https://github.com/sussy-code/smov.git
|
||||||
git fetch sudo-flix # Grab the contents of the new remote source
|
git fetch upstream # Grab the contents of the new remote source
|
||||||
git checkout <YOUR_MAIN_BRANCH> # Most likely this would be `origin/main`
|
git checkout <YOUR_MAIN_BRANCH> # Most likely this would be `origin/main`
|
||||||
git merge upstream/main
|
git merge upstream/main
|
||||||
# * Fix any conflicts present during merge *
|
# * Fix any conflicts present during merge *
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ dependencies:
|
||||||
version: 1.0.3
|
version: 1.0.3
|
||||||
'@movie-web/providers':
|
'@movie-web/providers':
|
||||||
specifier: github:sussy-code/providers
|
specifier: github:sussy-code/providers
|
||||||
version: github.com/sussy-code/providers/30511f11e8bc3f8b26be356d0db59acc100cf92e
|
version: github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba
|
||||||
'@noble/hashes':
|
'@noble/hashes':
|
||||||
specifier: ^1.4.0
|
specifier: ^1.4.0
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
|
|
@ -286,7 +286,7 @@ devDependencies:
|
||||||
version: 0.5.14(prettier@3.2.5)
|
version: 0.5.14(prettier@3.2.5)
|
||||||
rollup-plugin-visualizer:
|
rollup-plugin-visualizer:
|
||||||
specifier: ^5.12.0
|
specifier: ^5.12.0
|
||||||
version: 5.12.0(@rollup/wasm-node@4.17.0)
|
version: 5.12.0(@rollup/wasm-node@4.17.1)
|
||||||
tailwind-scrollbar:
|
tailwind-scrollbar:
|
||||||
specifier: ^3.1.0
|
specifier: ^3.1.0
|
||||||
version: 3.1.0(tailwindcss@3.4.3)
|
version: 3.1.0(tailwindcss@3.4.3)
|
||||||
|
|
@ -2060,7 +2060,7 @@ packages:
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@rollup/plugin-babel@5.3.1(@babel/core@7.24.4)(@rollup/wasm-node@4.17.0):
|
/@rollup/plugin-babel@5.3.1(@babel/core@7.24.4)(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
|
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -2073,11 +2073,11 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.24.4
|
'@babel/core': 7.24.4
|
||||||
'@babel/helper-module-imports': 7.24.3
|
'@babel/helper-module-imports': 7.24.3
|
||||||
'@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.17.0)
|
'@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.17.1)
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/plugin-node-resolve@15.2.3(@rollup/wasm-node@4.17.0):
|
/@rollup/plugin-node-resolve@15.2.3(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==}
|
resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -2086,26 +2086,26 @@ packages:
|
||||||
rollup:
|
rollup:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/pluginutils': 5.1.0(@rollup/wasm-node@4.17.0)
|
'@rollup/pluginutils': 5.1.0(@rollup/wasm-node@4.17.1)
|
||||||
'@types/resolve': 1.20.2
|
'@types/resolve': 1.20.2
|
||||||
deepmerge: 4.3.1
|
deepmerge: 4.3.1
|
||||||
is-builtin-module: 3.2.1
|
is-builtin-module: 3.2.1
|
||||||
is-module: 1.0.0
|
is-module: 1.0.0
|
||||||
resolve: 1.22.8
|
resolve: 1.22.8
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/plugin-replace@2.4.2(@rollup/wasm-node@4.17.0):
|
/@rollup/plugin-replace@2.4.2(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
|
resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
rollup: npm:@rollup/wasm-node
|
rollup: npm:@rollup/wasm-node
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.17.0)
|
'@rollup/pluginutils': 3.1.0(@rollup/wasm-node@4.17.1)
|
||||||
magic-string: 0.25.9
|
magic-string: 0.25.9
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/plugin-terser@0.4.4(@rollup/wasm-node@4.17.0):
|
/@rollup/plugin-terser@0.4.4(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==}
|
resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -2114,13 +2114,13 @@ packages:
|
||||||
rollup:
|
rollup:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
serialize-javascript: 6.0.2
|
serialize-javascript: 6.0.2
|
||||||
smob: 1.5.0
|
smob: 1.5.0
|
||||||
terser: 5.30.4
|
terser: 5.30.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/pluginutils@3.1.0(@rollup/wasm-node@4.17.0):
|
/@rollup/pluginutils@3.1.0(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
|
resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
|
||||||
engines: {node: '>= 8.0.0'}
|
engines: {node: '>= 8.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -2129,10 +2129,10 @@ packages:
|
||||||
'@types/estree': 0.0.39
|
'@types/estree': 0.0.39
|
||||||
estree-walker: 1.0.1
|
estree-walker: 1.0.1
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/pluginutils@5.1.0(@rollup/wasm-node@4.17.0):
|
/@rollup/pluginutils@5.1.0(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
|
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -2144,7 +2144,7 @@ packages:
|
||||||
'@types/estree': 1.0.5
|
'@types/estree': 1.0.5
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@rollup/wasm-node@4.17.0:
|
/@rollup/wasm-node@4.17.0:
|
||||||
|
|
@ -2155,6 +2155,16 @@ packages:
|
||||||
'@types/estree': 1.0.5
|
'@types/estree': 1.0.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@rollup/wasm-node@4.17.1:
|
||||||
|
resolution: {integrity: sha512-07J72z5LBQtNSFAunXeCSNEj7D72kfbeySMrOb7h1cswxKEFUqYjJ2gGLKfMuH1X42SrJ0zKx/i1K/hRbIIjHQ==}
|
||||||
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: 2.3.3
|
||||||
|
|
||||||
/@scure/base@1.1.6:
|
/@scure/base@1.1.6:
|
||||||
resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==}
|
resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==}
|
||||||
|
|
@ -5051,7 +5061,7 @@ packages:
|
||||||
'@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4)
|
'@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4)
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.0
|
||||||
kleur: 4.1.5
|
kleur: 4.1.5
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
unplugin: 1.10.1
|
unplugin: 1.10.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
@ -5966,7 +5976,7 @@ packages:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/rollup-plugin-visualizer@5.12.0(@rollup/wasm-node@4.17.0):
|
/rollup-plugin-visualizer@5.12.0(@rollup/wasm-node@4.17.1):
|
||||||
resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==}
|
resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
@ -5978,7 +5988,7 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
open: 8.4.2
|
open: 8.4.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
source-map: 0.7.4
|
source-map: 0.7.4
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
@ -6945,7 +6955,7 @@ packages:
|
||||||
'@types/node': 20.12.7
|
'@types/node': 20.12.7
|
||||||
esbuild: 0.20.2
|
esbuild: 0.20.2
|
||||||
postcss: 8.4.38
|
postcss: 8.4.38
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
@ -7206,10 +7216,10 @@ packages:
|
||||||
'@babel/core': 7.24.4
|
'@babel/core': 7.24.4
|
||||||
'@babel/preset-env': 7.24.4(@babel/core@7.24.4)
|
'@babel/preset-env': 7.24.4(@babel/core@7.24.4)
|
||||||
'@babel/runtime': 7.24.4
|
'@babel/runtime': 7.24.4
|
||||||
'@rollup/plugin-babel': 5.3.1(@babel/core@7.24.4)(@rollup/wasm-node@4.17.0)
|
'@rollup/plugin-babel': 5.3.1(@babel/core@7.24.4)(@rollup/wasm-node@4.17.1)
|
||||||
'@rollup/plugin-node-resolve': 15.2.3(@rollup/wasm-node@4.17.0)
|
'@rollup/plugin-node-resolve': 15.2.3(@rollup/wasm-node@4.17.1)
|
||||||
'@rollup/plugin-replace': 2.4.2(@rollup/wasm-node@4.17.0)
|
'@rollup/plugin-replace': 2.4.2(@rollup/wasm-node@4.17.1)
|
||||||
'@rollup/plugin-terser': 0.4.4(@rollup/wasm-node@4.17.0)
|
'@rollup/plugin-terser': 0.4.4(@rollup/wasm-node@4.17.1)
|
||||||
'@surma/rollup-plugin-off-main-thread': 2.2.3
|
'@surma/rollup-plugin-off-main-thread': 2.2.3
|
||||||
ajv: 8.12.0
|
ajv: 8.12.0
|
||||||
common-tags: 1.8.2
|
common-tags: 1.8.2
|
||||||
|
|
@ -7218,7 +7228,7 @@ packages:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
pretty-bytes: 5.6.0
|
pretty-bytes: 5.6.0
|
||||||
rollup: /@rollup/wasm-node@4.17.0
|
rollup: /@rollup/wasm-node@4.17.1
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
stringify-object: 3.3.0
|
stringify-object: 3.3.0
|
||||||
strip-comments: 2.0.1
|
strip-comments: 2.0.1
|
||||||
|
|
@ -7441,10 +7451,11 @@ packages:
|
||||||
use-sync-external-store: 1.2.0(react@18.3.1)
|
use-sync-external-store: 1.2.0(react@18.3.1)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
github.com/sussy-code/providers/30511f11e8bc3f8b26be356d0db59acc100cf92e:
|
github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba:
|
||||||
resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/30511f11e8bc3f8b26be356d0db59acc100cf92e}
|
resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba}
|
||||||
name: '@movie-web/providers'
|
name: '@movie-web/providers'
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
|
prepare: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
cheerio: 1.0.0-rc.12
|
cheerio: 1.0.0-rc.12
|
||||||
|
|
|
||||||
BIN
public/placeholder.png
Normal file
BIN
public/placeholder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -82,7 +82,7 @@ function MediaCardContent({
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
<Flare.Child
|
<Flare.Child
|
||||||
className={`pointer-events-auto relative mb-2 p-[0.5em] transition-transform duration-300 ${
|
className={`pointer-events-auto relative mb-2 p-[0.4em] transition-transform duration-300 ${
|
||||||
canLink ? "group-hover:scale-95" : "opacity-60"
|
canLink ? "group-hover:scale-95" : "opacity-60"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import { Helmet } from "react-helmet-async";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
|
import { get } from "@/backend/metadata/tmdb";
|
||||||
import { ThiccContainer } from "@/components/layout/ThinContainer";
|
import { ThiccContainer } from "@/components/layout/ThinContainer";
|
||||||
import { Divider } from "@/components/utils/Divider";
|
import { Divider } from "@/components/utils/Divider";
|
||||||
import { Flare } from "@/components/utils/Flare";
|
import { Flare } from "@/components/utils/Flare";
|
||||||
|
|
@ -20,7 +21,7 @@ import {
|
||||||
|
|
||||||
import { SubPageLayout } from "./layouts/SubPageLayout";
|
import { SubPageLayout } from "./layouts/SubPageLayout";
|
||||||
import { PageTitle } from "./parts/util/PageTitle";
|
import { PageTitle } from "./parts/util/PageTitle";
|
||||||
import { get } from "../backend/metadata/tmdb";
|
import placeholderImageLogo from "../../public/placeholder.png";
|
||||||
import { Icon, Icons } from "../components/Icon";
|
import { Icon, Icons } from "../components/Icon";
|
||||||
|
|
||||||
export function Discover() {
|
export function Discover() {
|
||||||
|
|
@ -56,6 +57,15 @@ export function Discover() {
|
||||||
language: "en-US",
|
language: "en-US",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Shuffle the movies
|
||||||
|
for (let i = data.results.length - 1; i > 0; i -= 1) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[data.results[i], data.results[j]] = [
|
||||||
|
data.results[j],
|
||||||
|
data.results[i],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
setCategoryMovies((prevCategoryMovies) => ({
|
setCategoryMovies((prevCategoryMovies) => ({
|
||||||
...prevCategoryMovies,
|
...prevCategoryMovies,
|
||||||
[category.name]: data.results,
|
[category.name]: data.results,
|
||||||
|
|
@ -78,6 +88,15 @@ export function Discover() {
|
||||||
language: "en-US",
|
language: "en-US",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Shuffle the TV shows
|
||||||
|
for (let i = data.results.length - 1; i > 0; i -= 1) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[data.results[i], data.results[j]] = [
|
||||||
|
data.results[j],
|
||||||
|
data.results[i],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
setCategoryShows((prevCategoryShows) => ({
|
setCategoryShows((prevCategoryShows) => ({
|
||||||
...prevCategoryShows,
|
...prevCategoryShows,
|
||||||
[category.name]: data.results,
|
[category.name]: data.results,
|
||||||
|
|
@ -107,8 +126,8 @@ export function Discover() {
|
||||||
[data.genres[i], data.genres[j]] = [data.genres[j], data.genres[i]];
|
[data.genres[i], data.genres[j]] = [data.genres[j], data.genres[i]];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch only the first 5 TV show genres
|
// Fetch only the first 6 TV show genres
|
||||||
setTVGenres(data.genres.slice(0, 5));
|
setTVGenres(data.genres.slice(0, 6));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching TV show genres:", error);
|
console.error("Error fetching TV show genres:", error);
|
||||||
}
|
}
|
||||||
|
|
@ -126,6 +145,16 @@ export function Discover() {
|
||||||
with_genres: genreId.toString(),
|
with_genres: genreId.toString(),
|
||||||
language: "en-US",
|
language: "en-US",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Shuffle the TV shows
|
||||||
|
for (let i = data.results.length - 1; i > 0; i -= 1) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[data.results[i], data.results[j]] = [
|
||||||
|
data.results[j],
|
||||||
|
data.results[i],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
setTVShowGenres((prevTVShowGenres) => ({
|
setTVShowGenres((prevTVShowGenres) => ({
|
||||||
...prevTVShowGenres,
|
...prevTVShowGenres,
|
||||||
[genreId]: data.results,
|
[genreId]: data.results,
|
||||||
|
|
@ -209,7 +238,7 @@ export function Discover() {
|
||||||
if (movieElements.length > 0) {
|
if (movieElements.length > 0) {
|
||||||
const posterWidth = movieElements[0].offsetWidth;
|
const posterWidth = movieElements[0].offsetWidth;
|
||||||
const visibleMovies = Math.floor(carousel.offsetWidth / posterWidth);
|
const visibleMovies = Math.floor(carousel.offsetWidth / posterWidth);
|
||||||
const scrollAmount = posterWidth * visibleMovies * 0.6;
|
const scrollAmount = posterWidth * visibleMovies * 0.62;
|
||||||
if (e.deltaY < 5) {
|
if (e.deltaY < 5) {
|
||||||
carousel.scrollBy({ left: -scrollAmount, behavior: "smooth" });
|
carousel.scrollBy({ left: -scrollAmount, behavior: "smooth" });
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -235,6 +264,13 @@ export function Discover() {
|
||||||
setIsHovered(false);
|
setIsHovered(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
window.addEventListener("mouseleave", handleMouseLeave);
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("mouseleave", handleMouseLeave);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
function renderMovies(medias: Media[], category: string, isTVShow = false) {
|
function renderMovies(medias: Media[], category: string, isTVShow = false) {
|
||||||
const categorySlug = `${category.toLowerCase().replace(/ /g, "-")}${Math.random()}`; // Convert the category to a slug
|
const categorySlug = `${category.toLowerCase().replace(/ /g, "-")}${Math.random()}`; // Convert the category to a slug
|
||||||
const displayCategory =
|
const displayCategory =
|
||||||
|
|
@ -245,6 +281,7 @@ export function Discover() {
|
||||||
: isTVShow
|
: isTVShow
|
||||||
? `${category} Shows`
|
? `${category} Shows`
|
||||||
: `${category} Movies`;
|
: `${category} Movies`;
|
||||||
|
// https://tailwindcss.com/docs/border-style
|
||||||
return (
|
return (
|
||||||
<div className="relative overflow-hidden mt-2">
|
<div className="relative overflow-hidden mt-2">
|
||||||
<h2 className="text-2xl cursor-default font-bold text-white sm:text-3xl md:text-2xl mx-auto pl-5">
|
<h2 className="text-2xl cursor-default font-bold text-white sm:text-3xl md:text-2xl mx-auto pl-5">
|
||||||
|
|
@ -286,8 +323,12 @@ export function Discover() {
|
||||||
className="rounded-xl bg-background-main group-hover:opacity-100"
|
className="rounded-xl bg-background-main group-hover:opacity-100"
|
||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
src={`https://image.tmdb.org/t/p/w500${media.poster_path}`}
|
src={
|
||||||
alt="failed to fetch :("
|
media.poster_path
|
||||||
|
? `https://image.tmdb.org/t/p/w500${media.poster_path}`
|
||||||
|
: placeholderImageLogo
|
||||||
|
}
|
||||||
|
alt={media.poster_path ? "" : "failed to fetch :("}
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
className="rounded-xl relative"
|
className="rounded-xl relative"
|
||||||
/>
|
/>
|
||||||
|
|
@ -396,8 +437,8 @@ export function Discover() {
|
||||||
const fetchMoviesForGenre = async (genreId: number) => {
|
const fetchMoviesForGenre = async (genreId: number) => {
|
||||||
try {
|
try {
|
||||||
const movies: any[] = [];
|
const movies: any[] = [];
|
||||||
for (let page = 1; page <= 5; page += 1) {
|
for (let page = 1; page <= 6; page += 1) {
|
||||||
// Fetch only 5 pages
|
// Fetch only 6 pages
|
||||||
const data = await get<any>("/discover/movie", {
|
const data = await get<any>("/discover/movie", {
|
||||||
api_key: conf().TMDB_READ_API_KEY,
|
api_key: conf().TMDB_READ_API_KEY,
|
||||||
with_genres: genreId.toString(),
|
with_genres: genreId.toString(),
|
||||||
|
|
@ -407,6 +448,13 @@ export function Discover() {
|
||||||
|
|
||||||
movies.push(...data.results);
|
movies.push(...data.results);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shuffle the movies
|
||||||
|
for (let i = movies.length - 1; i > 0; i -= 1) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[movies[i], movies[j]] = [movies[j], movies[i]];
|
||||||
|
}
|
||||||
|
|
||||||
setGenreMovies((prevGenreMovies) => ({
|
setGenreMovies((prevGenreMovies) => ({
|
||||||
...prevGenreMovies,
|
...prevGenreMovies,
|
||||||
[genreId]: movies,
|
[genreId]: movies,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue