mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Cleanup
This commit is contained in:
parent
934a05cffa
commit
145c0700b1
7 changed files with 48 additions and 46 deletions
|
@ -13,11 +13,6 @@ const fetchTask = async (
|
|||
params: ScheduledTasksApiGetTaskRequest,
|
||||
options?: AxiosRequestConfig
|
||||
) => {
|
||||
if (!api) {
|
||||
console.warn('[fetchTasks] No API instance available');
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await getScheduledTasksApi(api).getTask(params, options);
|
||||
|
||||
return response.data;
|
||||
|
|
|
@ -22,7 +22,7 @@ export const useTasks = (params?: ScheduledTasksApiGetTasksRequest) => {
|
|||
const { api } = useApi();
|
||||
|
||||
return useQuery({
|
||||
queryKey: [QUERY_KEY],
|
||||
queryKey: [ QUERY_KEY ],
|
||||
queryFn: ({ signal }) =>
|
||||
fetchTasks(api!, params, { signal }),
|
||||
enabled: !!api
|
||||
|
|
|
@ -3,7 +3,7 @@ import { getScheduledTasksApi } from '@jellyfin/sdk/lib/utils/api/scheduled-task
|
|||
import { useMutation } from '@tanstack/react-query';
|
||||
import { useApi } from 'hooks/useApi';
|
||||
import { queryClient } from 'utils/query/queryClient';
|
||||
import { QUERY_KEY } from './useTasks';
|
||||
import { QUERY_KEY } from './useTask';
|
||||
|
||||
export const useUpdateTask = () => {
|
||||
const { api } = useApi();
|
||||
|
|
|
@ -18,29 +18,21 @@ type IProps = {
|
|||
open: boolean,
|
||||
title: string,
|
||||
onClose?: () => void,
|
||||
onSubmit?: (trigger: TaskTriggerInfo) => void
|
||||
onAdd?: (trigger: TaskTriggerInfo) => void
|
||||
};
|
||||
|
||||
const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onSubmit }: IProps) => {
|
||||
const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onAdd }: IProps) => {
|
||||
const { dateFnsLocale } = useLocale();
|
||||
const [triggerType, setTriggerType] = useState('DailyTrigger');
|
||||
|
||||
const timeOfDayOptions = useMemo(() => getTimeOfDayOptions(dateFnsLocale), [dateFnsLocale]);
|
||||
|
||||
const intervalOptions = useMemo(() => getIntervalOptions(dateFnsLocale), [dateFnsLocale]);
|
||||
|
||||
const onTriggerTypeChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setTriggerType(e.target.value);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
maxWidth={'xs'}
|
||||
fullWidth
|
||||
PaperProps={{
|
||||
component: 'form',
|
||||
onSubmit: (e: React.FormEvent<HTMLFormElement>) => {
|
||||
const onSubmit = useCallback((e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
|
||||
const formData = new FormData(e.currentTarget);
|
||||
|
@ -65,10 +57,19 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onSub
|
|||
trigger.MaxRuntimeTicks = parseFloat(data.TimeLimit.toString()) * 3600000 * 1e4;
|
||||
}
|
||||
|
||||
if (onSubmit) {
|
||||
onSubmit(trigger);
|
||||
}
|
||||
if (onAdd) {
|
||||
onAdd(trigger);
|
||||
}
|
||||
}, [onAdd]);
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
maxWidth={'xs'}
|
||||
fullWidth
|
||||
PaperProps={{
|
||||
component: 'form',
|
||||
onSubmit: onSubmit
|
||||
}}
|
||||
>
|
||||
<DialogTitle>{title}</DialogTitle>
|
||||
|
@ -116,7 +117,10 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onSub
|
|||
label={globalize.translate('LabelTime')}
|
||||
>
|
||||
{timeOfDayOptions.map((option) => {
|
||||
return <MenuItem key={option.value} value={option.value}>{option.name}</MenuItem>;
|
||||
return <MenuItem
|
||||
key={option.value}
|
||||
value={option.value}
|
||||
>{option.name}</MenuItem>;
|
||||
})}
|
||||
</TextField>
|
||||
)}
|
||||
|
@ -130,7 +134,10 @@ const NewTriggerForm: FunctionComponent<IProps> = ({ open, title, onClose, onSub
|
|||
label={globalize.translate('LabelEveryXMinutes')}
|
||||
>
|
||||
{intervalOptions.map((option) => {
|
||||
return <MenuItem key={option.value} value={option.value}>{option.name}</MenuItem>;
|
||||
return <MenuItem
|
||||
key={option.value}
|
||||
value={option.value}
|
||||
>{option.name}</MenuItem>;
|
||||
})}
|
||||
</TextField>
|
||||
)}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
export const INTERVAL_DURATION: number[] = [
|
||||
export const INTERVAL_DURATIONS: number[] = [
|
||||
9000000000, // 15 minutes
|
||||
18000000000, // 30 minutes
|
||||
27000000000, // 45 minutes
|
|
@ -1,7 +1,7 @@
|
|||
import type { TaskTriggerInfo } from '@jellyfin/sdk/lib/generated-client/models/task-trigger-info';
|
||||
import { format, formatDistanceStrict, Locale, parse } from 'date-fns';
|
||||
import globalize from 'lib/globalize';
|
||||
import { INTERVAL_DURATION } from '../constants/intervalDuration';
|
||||
import { INTERVAL_DURATIONS } from '../constants/intervalDurations';
|
||||
|
||||
function getDisplayTime(ticks: number, locale: Locale) {
|
||||
const ms = ticks / 1e4;
|
||||
|
@ -27,7 +27,7 @@ export function getTimeOfDayOptions(locale: Locale) {
|
|||
export function getIntervalOptions(locale: Locale) {
|
||||
const options = [];
|
||||
|
||||
for (const ticksDuration of INTERVAL_DURATION) {
|
||||
for (const ticksDuration of INTERVAL_DURATIONS) {
|
||||
const durationMs = Math.floor(ticksDuration / 1e4);
|
||||
const unit = durationMs < 36e5 ? 'minute' : 'hour';
|
||||
options.push({
|
||||
|
|
|
@ -60,7 +60,7 @@ const TaskEdit = () => {
|
|||
setIsAddTriggerDialogOpen(false);
|
||||
}, []);
|
||||
|
||||
const onNewTriggerSubmit = useCallback((trigger: TaskTriggerInfo) => {
|
||||
const onNewTriggerAdd = useCallback((trigger: TaskTriggerInfo) => {
|
||||
if (task?.Triggers && task?.Id) {
|
||||
const triggers = [...task.Triggers, trigger];
|
||||
|
||||
|
@ -150,7 +150,7 @@ const TaskEdit = () => {
|
|||
open={isAddTriggerDialogOpen}
|
||||
title={globalize.translate('ButtonAddScheduledTaskTrigger')}
|
||||
onClose={handleNewTriggerDialogClose}
|
||||
onSubmit={onNewTriggerSubmit}
|
||||
onAdd={onNewTriggerAdd}
|
||||
/>
|
||||
<Box className='content-primary'>
|
||||
<Box className='readOnlyContent'>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue