diff --git a/apiGo/api/Settings.go b/apiGo/api/Settings.go index fb1f1ce..91fb892 100644 --- a/apiGo/api/Settings.go +++ b/apiGo/api/Settings.go @@ -74,6 +74,7 @@ func getSettingsFromDB() { TVShowPath string TVShowEnabled bool FullDeleteEnabled bool + RandomNR uint32 } regexMatchUrl := regexp.MustCompile("^http(|s)://([0-9]){1,3}\\.([0-9]){1,3}\\.([0-9]){1,3}\\.([0-9]){1,3}:[0-9]{1,5}") @@ -90,6 +91,7 @@ func getSettingsFromDB() { TVShowPath: serverTVShowPath, TVShowEnabled: !config.GetConfig().Features.DisableTVSupport, FullDeleteEnabled: config.GetConfig().Features.FullyDeletableVideos, + RandomNR: sett.RandomNR, } context.Json(res) @@ -127,12 +129,13 @@ func saveSettingsToDB() { password=?, mediacenter_name=?, TMDB_grabbing=?, - DarkMode=? + DarkMode=?, + random_nr=? WHERE 1` // todo avoid conversion context.Text(string(database.SuccessQuery(query, args.VideoPath, args.EpisodePath, args.Password, - args.MediacenterName, args.TMDBGrabbing, args.DarkMode))) + args.MediacenterName, args.TMDBGrabbing, args.DarkMode, args.RandomNR))) }) } diff --git a/apiGo/api/types/Types.go b/apiGo/api/types/Types.go index 4e96f1b..75e1a12 100644 --- a/apiGo/api/types/Types.go +++ b/apiGo/api/types/Types.go @@ -48,6 +48,7 @@ type SettingsType struct { PasswordEnabled bool TMDBGrabbing bool DarkMode bool + RandomNR uint32 } type SettingsSizeType struct { diff --git a/apiGo/database/Database.go b/apiGo/database/Database.go index fc0981a..1c6f8b0 100644 --- a/apiGo/database/Database.go +++ b/apiGo/database/Database.go @@ -126,7 +126,7 @@ func GetSettings() (result types.SettingsType, PathPrefix string, sizes types.Se SELECT COUNT(*) FROM video_tags ) AS tagsadded, - video_path, episode_path, password, mediacenter_name, TMDB_grabbing, DarkMode + video_path, episode_path, password, mediacenter_name, TMDB_grabbing, DarkMode, random_nr FROM settings LIMIT 1`, DBName) @@ -134,7 +134,7 @@ func GetSettings() (result types.SettingsType, PathPrefix string, sizes types.Se var TMDBGrabbing int err := QueryRow(query).Scan(&sizes.VideoNr, &sizes.DBSize, &sizes.DifferentTags, &sizes.TagsAdded, - &result.VideoPath, &result.EpisodePath, &result.Password, &result.MediacenterName, &TMDBGrabbing, &DarkMode) + &result.VideoPath, &result.EpisodePath, &result.Password, &result.MediacenterName, &TMDBGrabbing, &DarkMode, &result.RandomNR) if err != nil { fmt.Println(err.Error()) diff --git a/apiGo/database/migrations/20220505195845_randomnr.sql b/apiGo/database/migrations/20220505195845_randomnr.sql new file mode 100644 index 0000000..f06fff2 --- /dev/null +++ b/apiGo/database/migrations/20220505195845_randomnr.sql @@ -0,0 +1,11 @@ +-- +goose Up +-- +goose StatementBegin +alter table settings + add random_nr int default 3 null; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +alter table settings + drop random_nr; +-- +goose StatementEnd diff --git a/apiGo/database/settings/DBSettings.go b/apiGo/database/settings/DBSettings.go index 75cbf51..73fe293 100644 --- a/apiGo/database/settings/DBSettings.go +++ b/apiGo/database/settings/DBSettings.go @@ -20,15 +20,16 @@ type SettingsType struct { MediacenterName string VideoPath string TVShowPath string + RandomNR uint32 } func LoadSettings() *SettingsType { - query := "SELECT DarkMode, password, mediacenter_name, video_path, episode_path from settings" + query := "SELECT DarkMode, password, mediacenter_name, video_path, episode_path, random_nr from settings" result := SettingsType{} var darkmode uint8 - err := database.QueryRow(query).Scan(&darkmode, &result.Pasword, &result.MediacenterName, &result.VideoPath, &result.TVShowPath) + err := database.QueryRow(query).Scan(&darkmode, &result.Pasword, &result.MediacenterName, &result.VideoPath, &result.TVShowPath, &result.RandomNR) if err != nil { fmt.Println("error while parsing db data: " + err.Error()) } diff --git a/src/pages/RandomPage/RandomPage.tsx b/src/pages/RandomPage/RandomPage.tsx index 50e9161..5971108 100644 --- a/src/pages/RandomPage/RandomPage.tsx +++ b/src/pages/RandomPage/RandomPage.tsx @@ -11,6 +11,7 @@ import {addKeyHandler, removeKeyHandler} from '../../utils/ShortkeyHandler'; import {IconButton} from '../../elements/GPElements/Button'; import {faPlusCircle} from '@fortawesome/free-solid-svg-icons'; import AddTagPopup from '../../elements/Popups/AddTagPopup/AddTagPopup'; +import GlobalInfos from '../../utils/GlobalInfos'; interface state { videos: VideoTypes.VideoUnloadedType[]; @@ -28,8 +29,6 @@ interface GetRandomMoviesType { * Randompage shuffles random viedeopreviews and provides a shuffle btn */ class RandomPage extends React.Component<{}, state> { - readonly LoadNR = 3; - constructor(props: {}) { super(props); @@ -46,7 +45,7 @@ class RandomPage extends React.Component<{}, state> { componentDidMount(): void { addKeyHandler(this.keypress); - this.loadShuffledvideos(this.LoadNR); + this.loadShuffledvideos(); } componentWillUnmount(): void { @@ -56,7 +55,7 @@ class RandomPage extends React.Component<{}, state> { render(): JSX.Element { return (