diff --git a/cmd/worker/main.go b/cmd/worker/main.go
index 2db28a0b..879e0b10 100644
--- a/cmd/worker/main.go
+++ b/cmd/worker/main.go
@@ -84,6 +84,7 @@ func main() {
VideoPostProcessWorkers: envConfig.MaxVideoConvertExecutions,
ChatDownloadWorkers: envConfig.MaxChatDownloadExecutions,
ChatRenderWorkers: envConfig.MaxChatRenderExecutions,
+ SpriteThumbnailWorkers: envConfig.MaxVideoSpriteThumbnailExecutions,
})
if err != nil {
log.Panic().Err(err).Msg("Error creating river worker")
diff --git a/frontend/app/admin/blocked-videos/page.tsx b/frontend/app/admin/blocked-videos/page.tsx
index c7d2648b..a5bc6aa8 100644
--- a/frontend/app/admin/blocked-videos/page.tsx
+++ b/frontend/app/admin/blocked-videos/page.tsx
@@ -74,6 +74,11 @@ const AdminBlockedVideosPage = () => {
openDeleteModal()
};
+ const handleMultiDeleteModalCallback = () => {
+ closeMultiDeleteModal()
+ setActiveBlockedVideos([])
+ }
+
if (isPending) return (
)
@@ -189,7 +194,7 @@ const AdminBlockedVideosPage = () => {
{activeBlockedVideos && (
-
+
)}
diff --git a/frontend/app/admin/queue/page.tsx b/frontend/app/admin/queue/page.tsx
index c7bfaee7..dbcde84d 100644
--- a/frontend/app/admin/queue/page.tsx
+++ b/frontend/app/admin/queue/page.tsx
@@ -78,6 +78,11 @@ const AdminQueuePage = () => {
openDeleteModal()
};
+ const handleMultiDeleteModalCallback = () => {
+ closeMultiDeleteModal()
+ setActiveQueueItems([])
+ }
+
if (isPending) return (
)
@@ -249,7 +254,7 @@ const AdminQueuePage = () => {
{activeQueueItems && (
-
+
)}
diff --git a/frontend/app/admin/settings/page.tsx b/frontend/app/admin/settings/page.tsx
index c487d2b8..176e4cd2 100644
--- a/frontend/app/admin/settings/page.tsx
+++ b/frontend/app/admin/settings/page.tsx
@@ -2,7 +2,7 @@
import GanymedeLoadingText from "@/app/components/utils/GanymedeLoadingText"
import { useAxiosPrivate } from "@/app/hooks/useAxios"
import { Config, NotificationType, ProxyListItem, useEditConfig, useGetConfig, useTestNotification } from "@/app/hooks/useConfig"
-import { ActionIcon, Button, Card, Checkbox, Code, Collapse, Container, Flex, MultiSelect, Text, Textarea, TextInput, Title } from "@mantine/core"
+import { ActionIcon, Button, Card, Checkbox, Code, Collapse, Container, Flex, MultiSelect, NumberInput, Text, Textarea, TextInput, Title } from "@mantine/core"
import { useForm } from "@mantine/form"
import { useDisclosure } from "@mantine/hooks"
import Link from "next/link"
@@ -35,6 +35,8 @@ const AdminSettingsPage = () => {
const form = useForm({
mode: "controlled",
initialValues: {
+ live_check_interval_seconds: data?.live_check_interval_seconds || 300,
+ video_check_interval_minutes: data?.video_check_interval_minutes || 180,
registration_enabled: data?.registration_enabled ?? true,
parameters: {
twitch_token: data?.parameters.twitch_token || "",
@@ -44,6 +46,7 @@ const AdminSettingsPage = () => {
},
archive: {
save_as_hls: data?.archive.save_as_hls ?? false,
+ generate_sprite_thumbnails: data?.archive.generate_sprite_thumbnails ?? true
},
notifications: {
video_success_webhook_url: data?.notifications.video_success_webhook_url || "",
@@ -338,14 +341,43 @@ const AdminSettingsPage = () => {
Archive
-
+
+
+
+
+
+
+