fix warning

This commit is contained in:
grimhilt 2023-08-14 12:22:21 +02:00
parent cc4c23ad19
commit 30dc2b5f31
3 changed files with 69 additions and 62 deletions

View File

@ -8,7 +8,7 @@ import { useEffect, useState } from 'react';
import ModalFileSelector from '../files/file-selector'; import ModalFileSelector from '../files/file-selector';
import API from '../../services/api'; import API from '../../services/api';
import setNotification from '../errors/error-notification'; import setNotification from '../errors/error-notification';
import GrantAccess, { Perm, checkPerm } from '../../tools/grant-access'; import { Perm, checkPerm } from '../../tools/grant-access';
import { useAuth } from '../../tools/auth-provider'; import { useAuth } from '../../tools/auth-provider';
import { parseTime } from '../../tools/timeUtil'; import { parseTime } from '../../tools/timeUtil';
@ -21,10 +21,11 @@ const Content = ({ form, playlistId, playlist }) => {
useEffect(() => { useEffect(() => {
if (!user || !playlist) return; if (!user || !playlist) return;
const canEditTmp = checkPerm(Perm.EDIT_PLAYLIST, user, playlist); const canEditTmp = checkPerm(Perm.EDIT_PLAYLIST, user, playlist);
if (canEditTmp != canEdit) { if (canEditTmp !== canEdit) {
setCanEdit(canEditTmp); setCanEdit(canEditTmp);
} }
return () => {}; return () => {};
// eslint-disable-next-line
}, [playlist, user]); }, [playlist, user]);
const handleAddFiles = (files) => { const handleAddFiles = (files) => {
@ -141,7 +142,8 @@ const Content = ({ form, playlistId, playlist }) => {
}); });
}; };
const fields = form.values.files.map((_, index) => ( const fields = form.values.files.map((_, index) =>
canEdit ? (
<Draggable key={index} index={index} draggableId={index.toString()}> <Draggable key={index} index={index} draggableId={index.toString()}>
{(provided) => ( {(provided) => (
<Group ref={provided.innerRef} mt="xs" {...provided.draggableProps} position="center"> <Group ref={provided.innerRef} mt="xs" {...provided.draggableProps} position="center">
@ -149,40 +151,46 @@ const Content = ({ form, playlistId, playlist }) => {
<Flex direction="row" align="center" gap="lg" justify="flex-end"> <Flex direction="row" align="center" gap="lg" justify="flex-end">
<Text>{form.getInputProps(`files.${index}.name`).value}</Text> <Text>{form.getInputProps(`files.${index}.name`).value}</Text>
<Image width={150} src={'/api/file/' + form.getInputProps(`files.${index}.id`).value} /> <Image width={150} src={'/api/file/' + form.getInputProps(`files.${index}.id`).value} />
{ canEdit ?
<NumberInput <NumberInput
required required
hideControls hideControls
description="Seconds to display" description="Seconds to display"
value={form.getInputProps(`files.${index}.seconds`).value} value={form.getInputProps(`files.${index}.seconds`).value}
onChange={(secs) => handleChangeSeconds(secs, index)} onChange={(secs) => handleChangeSeconds(secs, index)}
error={form.getInputProps(`files.${index}.seconds`).errors && 'This field is required'} error={
/> form.getInputProps(`files.${index}.seconds`).errors && 'This field is required'
: <Text>Display time: {parseTime(form.getInputProps(`files.${index}.seconds`).value)}</Text>
} }
{canEdit ? ( />
<Text>
Display time: {parseTime(form.getInputProps(`files.${index}.seconds`).value)}
</Text>
<ActionIcon color="red" variant="light" size="lg" onClick={() => handleDelete(index)}> <ActionIcon color="red" variant="light" size="lg" onClick={() => handleDelete(index)}>
<IconTrash size="1rem" /> <IconTrash size="1rem" />
</ActionIcon> </ActionIcon>
) : (
<></>
)}
</Flex> </Flex>
</Paper> </Paper>
{canEdit ? (
<Center {...provided.dragHandleProps}> <Center {...provided.dragHandleProps}>
<IconGripVertical size="1.2rem" /> <IconGripVertical size="1.2rem" />
</Center> </Center>
) : (
<></>
)}
</Group> </Group>
)} )}
</Draggable> </Draggable>
)); ) : (
<Group key={index} mt="xs" position="center">
<Paper p="xs" radius="sm" shadow="sm" withBorder spacing="xs" style={{ width: '90%' }}>
<Flex direction="row" align="center" gap="lg" justify="flex-end">
<Text>{form.getInputProps(`files.${index}.name`).value}</Text>
<Image width={150} src={'/api/file/' + form.getInputProps(`files.${index}.id`).value} />
<Text>Display time: {parseTime(form.getInputProps(`files.${index}.seconds`).value)}</Text>
</Flex>
</Paper>
</Group>
)
);
return ( return (
<Box mx="auto" maw={1200}> <Box mx="auto" maw={1200}>
{canEdit ? (
<DragDropContext <DragDropContext
onDragEnd={({ destination, source }) => { onDragEnd={({ destination, source }) => {
form.reorderListItem('files', { from: source.index, to: destination.index }); form.reorderListItem('files', { from: source.index, to: destination.index });
@ -202,6 +210,9 @@ const Content = ({ form, playlistId, playlist }) => {
)} )}
</StrictModeDroppable> </StrictModeDroppable>
</DragDropContext> </DragDropContext>
) : (
fields
)}
{canEdit ? ( {canEdit ? (
<> <>

View File

@ -3,7 +3,7 @@ import { useEffect, useState } from 'react';
import API from '../../services/api'; import API from '../../services/api';
import { parseTime } from '../../tools/timeUtil'; import { parseTime } from '../../tools/timeUtil';
import setNotification from '../errors/error-notification'; import setNotification from '../errors/error-notification';
import ModalUpdate from '../playlists/update'; import ModalUpdatePlaylist from '../playlists/update';
import { useForm } from '@mantine/form'; import { useForm } from '@mantine/form';
import Content from './content'; import Content from './content';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
@ -50,10 +50,6 @@ const Playlist = (item) => {
setDuration(duration); setDuration(duration);
}, [form.values]); }, [form.values]);
const updatePlaylist = (playlist) => {
setPlaylist(playlist);
};
useEffect(() => { useEffect(() => {
if (JSON.stringify(item) !== '{}') { if (JSON.stringify(item) !== '{}') {
setPlaylist(item); setPlaylist(item);
@ -119,11 +115,11 @@ const Playlist = (item) => {
<Paper p="xs" radius="sm" shadow="sm" withBorder my="md"> <Paper p="xs" radius="sm" shadow="sm" withBorder my="md">
<Content form={form} playlistId={id} playlist={playlist} /> <Content form={form} playlistId={id} playlist={playlist} />
</Paper> </Paper>
<ModalUpdate <ModalUpdatePlaylist
opened={showUpdate} opened={showUpdate}
handler={toggleUpdate} handler={toggleUpdate}
item={playlist} item={playlist}
updatePlaylist={(playlist) => updatePlaylist(playlist)} updatePlaylist={(playlist) => setPlaylist(playlist)}
/> />
</> </>
); );

View File

@ -63,7 +63,7 @@ const Playlists = () => {
<PlaylistTable <PlaylistTable
data={playlists} data={playlists}
updateItem={setItem} // todo updateItem={setItem} // todo
// eslint-disable-next-line eqeqeq // eslint-disable-next-line
onDelete={(id) => setPlaylist(playlists.filter((item) => item._id != id))} onDelete={(id) => setPlaylist(playlists.filter((item) => item._id != id))}
updateHandler={toggleModalUpdate} updateHandler={toggleModalUpdate}
loadMore={loadMore} loadMore={loadMore}