diff --git a/backend/appsettings/serializers.py b/backend/appsettings/serializers.py index 4ac45f93..5e6e434b 100644 --- a/backend/appsettings/serializers.py +++ b/backend/appsettings/serializers.py @@ -62,6 +62,7 @@ class AppConfigAppSerializer( """serialize app config""" enable_snapshot = serializers.BooleanField() + enable_cast = serializers.BooleanField() class AppConfigSerializer(ValidateUnknownFieldsMixin, serializers.Serializer): diff --git a/backend/appsettings/src/config.py b/backend/appsettings/src/config.py index 34631774..3c14a2c0 100644 --- a/backend/appsettings/src/config.py +++ b/backend/appsettings/src/config.py @@ -51,6 +51,7 @@ class ApplicationConfigType(TypedDict): """describes application config""" enable_snapshot: bool + enable_cast: bool class AppConfigType(TypedDict): @@ -93,7 +94,10 @@ class AppConfig: "integrate_ryd": False, "integrate_sponsorblock": False, }, - "application": {"enable_snapshot": True}, + "application": { + "enable_snapshot": True, + "enable_cast": False, + }, } def __init__(self): diff --git a/frontend/src/api/loader/loadAppsettingsConfig.ts b/frontend/src/api/loader/loadAppsettingsConfig.ts index 34ba3e38..df731e17 100644 --- a/frontend/src/api/loader/loadAppsettingsConfig.ts +++ b/frontend/src/api/loader/loadAppsettingsConfig.ts @@ -29,6 +29,7 @@ export type AppSettingsConfigType = { }; application: { enable_snapshot: boolean; + enable_cast: boolean; }; }; diff --git a/frontend/src/components/EmbeddableVideoPlayer.tsx b/frontend/src/components/EmbeddableVideoPlayer.tsx index d3be212d..80b0906f 100644 --- a/frontend/src/components/EmbeddableVideoPlayer.tsx +++ b/frontend/src/components/EmbeddableVideoPlayer.tsx @@ -92,8 +92,7 @@ const EmbeddableVideoPlayer = ({ videoId }: EmbeddableVideoPlayerProps) => { const likes = formatNumbers(video.stats.like_count); const hasDislikes = video.stats.dislike_count > 0 && appSettingsConfig.downloads.integrate_ryd; const dislikes = formatNumbers(video.stats.dislike_count); - // const config = videoResponse.config; - const cast = false; // config.enable_cast; + const cast = appSettingsConfig.application.enable_cast; return ( <> diff --git a/frontend/src/pages/SettingsApplication.tsx b/frontend/src/pages/SettingsApplication.tsx index 103b20d5..c47d776c 100644 --- a/frontend/src/pages/SettingsApplication.tsx +++ b/frontend/src/pages/SettingsApplication.tsx @@ -92,6 +92,7 @@ const SettingsApplication = () => { const [showApiToken, setShowApiToken] = useState(false); const [downloadDislikes, setDownloadDislikes] = useState(false); const [enableSponsorBlock, setEnableSponsorBlock] = useState(false); + const [enableCast, setEnableCast] = useState(false); // Snapshots const [enableSnapshots, setEnableSnapshots] = useState(false); @@ -135,6 +136,7 @@ const SettingsApplication = () => { // Integrations setDownloadDislikes(appSettingsConfig.downloads.integrate_ryd); setEnableSponsorBlock(appSettingsConfig.downloads.integrate_sponsorblock); + setEnableCast(appSettingsConfig.application.enable_cast); // Snapshots setEnableSnapshots(appSettingsConfig.application.enable_snapshot); @@ -867,6 +869,16 @@ const SettingsApplication = () => { updateCallback={handleUpdateConfig} /> +
+
+

Enable Cast

+
+ +

Snapshots

diff --git a/frontend/src/pages/Video.tsx b/frontend/src/pages/Video.tsx index e67cde2e..18dd241b 100644 --- a/frontend/src/pages/Video.tsx +++ b/frontend/src/pages/Video.tsx @@ -39,7 +39,7 @@ import loadVideoNav, { VideoNavResponseType } from '../api/loader/loadVideoNav'; import useIsAdmin from '../functions/useIsAdmin'; import ToggleConfig from '../components/ToggleConfig'; import { PlaylistType } from '../api/loader/loadPlaylistById'; -// import { useAppSettingsStore } from '../stores/AppSettingsStore'; +import { useAppSettingsStore } from '../stores/AppSettingsStore'; const isInPlaylist = (videoId: string, playlist: PlaylistType) => { return playlist.playlist_entries.some(entry => { @@ -110,7 +110,7 @@ const Video = () => { const { videoId } = useParams() as VideoParams; const navigate = useNavigate(); const isAdmin = useIsAdmin(); - // const { appSettingsConfig } = useAppSettingsStore(); + const { appSettingsConfig } = useAppSettingsStore(); const [videoEnded, setVideoEnded] = useState(false); const [playlistAutoplay, setPlaylistAutoplay] = useState( @@ -193,7 +193,6 @@ const Video = () => { const video = videoResponse; const watched = videoResponse.player.watched; - // const config = appSettingsConfig; const playlistNav = videoPlaylistNav; const sponsorBlock = videoResponse.sponsorblock; const customPlaylists = customPlaylistsResponse?.data; @@ -202,7 +201,7 @@ const Video = () => { console.log('playlistNav', playlistNav); - const cast = false; // config.enable_cast; + const cast = appSettingsConfig.application.enable_cast; return ( <> diff --git a/frontend/src/stores/AppSettingsStore.ts b/frontend/src/stores/AppSettingsStore.ts index 72012f9b..2166e7e5 100644 --- a/frontend/src/stores/AppSettingsStore.ts +++ b/frontend/src/stores/AppSettingsStore.ts @@ -36,6 +36,7 @@ export const useAppSettingsStore = create(set => ({ }, application: { enable_snapshot: false, + enable_cast: false, }, }, setAppSettingsConfig: appSettingsConfig => set({ appSettingsConfig }),