add tvshow syntax to db

basic tvshow api request to show available tvshows
limit randompage videos to 3
improve settings object to remove one useless copy
This commit is contained in:
2021-04-16 22:44:56 +02:00
parent fdcecb0a75
commit 4539147208
17 changed files with 165 additions and 69 deletions

View File

@ -79,7 +79,7 @@ class App extends React.Component<{}, state> {
// set theme
GlobalInfos.enableDarkTheme(result.DarkMode);
GlobalInfos.setVideoPath(result.VideoPath);
GlobalInfos.setVideoPaths(result.VideoPath, result.TVShowPath);
this.setState({
mediacentername: result.MediacenterName

View File

@ -23,6 +23,8 @@ interface GetRandomMoviesType {
* Randompage shuffles random viedeopreviews and provides a shuffle btn
*/
class RandomPage extends React.Component<{}, state> {
readonly LoadNR = 3;
constructor(props: {}) {
super(props);
@ -37,7 +39,7 @@ class RandomPage extends React.Component<{}, state> {
componentDidMount(): void {
addKeyHandler(this.keypress);
this.loadShuffledvideos(4);
this.loadShuffledvideos(this.LoadNR);
}
componentWillUnmount(): void {
@ -75,7 +77,7 @@ class RandomPage extends React.Component<{}, state> {
* click handler for shuffle btn
*/
shuffleclick(): void {
this.loadShuffledvideos(4);
this.loadShuffledvideos(this.LoadNR);
}
/**

View File

@ -1,11 +1,38 @@
import React from 'react';
import Preview from '../../elements/Preview/Preview';
import {APINode, callAPI} from '../../utils/Api';
import {TVShow} from '../../types/ApiTypes';
import DynamicContentContainer from '../../elements/DynamicContentContainer/DynamicContentContainer';
interface State {
loading: boolean;
}
interface Props {}
class TVShowPage extends React.Component<Props, State> {
state = {
loading: true
};
data: TVShow.TVshowType[] = [];
componentDidMount(): void {
callAPI(APINode.TVShow, {action: 'getTVShows'}, (resp: TVShow.TVshowType[]) => {
this.data = resp;
this.setState({loading: false});
});
}
class TVShowPage extends React.Component {
render(): JSX.Element {
return (
<>
<Preview name='myTestItem' picLoader={(callback): void => callback('')} />
<DynamicContentContainer
renderElement={(elem): JSX.Element => (
<Preview name={elem.Name} picLoader={(callback): void => callback('')} linkPath={'/tvshows/' + elem.Id} />
)}
data={this.state.loading ? [] : this.data}
/>
</>
);
}

View File

@ -35,6 +35,7 @@ export namespace SettingsTypes {
Password: boolean;
MediacenterName: string;
VideoPath: string;
TVShowPath: string;
}
export interface loadGeneralSettingsType {
@ -58,6 +59,16 @@ export namespace SettingsTypes {
}
}
export namespace TVShow {
/**
* result of actor fetch
*/
export interface TVshowType {
Id: number;
Name: string;
}
}
export namespace ActorTypes {
/**
* result of actor fetch

View File

@ -279,5 +279,6 @@ export enum APINode {
Settings = 'settings',
Tags = 'tags',
Actor = 'actor',
Video = 'video'
Video = 'video',
TVShow = 'tvshow'
}

View File

@ -8,6 +8,7 @@ import lighttheme from '../AppLightTheme.module.css';
class StaticInfos {
private darktheme: boolean = true;
private videopath: string = '';
private tvshowpath: string = '';
/**
* check if the current theme is the dark theme
@ -47,8 +48,9 @@ class StaticInfos {
* set the current videopath
* @param vidpath videopath with beginning and ending slash
*/
setVideoPath(vidpath: string): void {
setVideoPaths(vidpath: string, tvshowpath: string): void {
this.videopath = vidpath;
this.tvshowpath = tvshowpath;
}
/**
@ -58,6 +60,13 @@ class StaticInfos {
return this.videopath;
}
/**
* return the current tvshow path
*/
getTVShowPath(): string {
return this.tvshowpath;
}
/**
* load the Password page manually
*/