diff --git a/src/pages/playlist/content.jsx b/src/pages/playlist/content.jsx
index 663b7ae..4880ceb 100644
--- a/src/pages/playlist/content.jsx
+++ b/src/pages/playlist/content.jsx
@@ -4,15 +4,28 @@ import { IconGripVertical } from '@tabler/icons-react';
import { StrictModeDroppable } from './StrictModeDroppable';
import { ActionIcon, Button, Center, Group, NumberInput, Paper, Text } from '@mantine/core';
import { IconTrash } from '@tabler/icons-react';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import ModalFileSelector from '../files/file-selector';
import API from '../../services/api';
import setNotification from '../errors/error-notification';
-import GrantAccess, { Perm } from '../../tools/grant-access';
+import GrantAccess, { Perm, checkPerm } from '../../tools/grant-access';
+import { useAuth } from '../../tools/auth-provider';
+import { parseTime } from '../../tools/timeUtil';
const Content = ({ form, playlistId, playlist }) => {
const [fileSelector, setFileSelector] = useState(false);
const toggleFileSelector = () => setFileSelector(!fileSelector);
+ const [canEdit, setCanEdit] = useState(false);
+ const { user } = useAuth();
+
+ useEffect(() => {
+ if (!user || !playlist) return;
+ const canEditTmp = checkPerm(Perm.EDIT_PLAYLIST, user, playlist);
+ if (canEditTmp != canEdit) {
+ setCanEdit(canEditTmp);
+ }
+ return () => {};
+ }, [playlist, user]);
const handleAddFiles = (files) => {
let formFiles = form.values.files;
@@ -24,7 +37,8 @@ const Content = ({ form, playlistId, playlist }) => {
file.seconds = 10;
const index = form.values.files.length;
form.insertListItem('files', file);
- API.playlists.addFile(playlistId, { position: file.position, file_id: file.id, seconds: file.seconds })
+ API.playlists
+ .addFile(playlistId, { position: file.position, file_id: file.id, seconds: file.seconds })
.then((res) => {
if (res.status !== 200) {
setNotification(true, `Error when adding file (${res.status})`);
@@ -55,7 +69,8 @@ const Content = ({ form, playlistId, playlist }) => {
let newPosition = (below_position + above_position) / 2;
// sending modification to server
- API.playlists.changeOrder(playlistId, { file_id: formFiles[from].id, position: newPosition })
+ API.playlists
+ .changeOrder(playlistId, { file_id: formFiles[from].id, position: newPosition })
.then((res) => {
if (res.status === 200) {
resolve(true);
@@ -95,7 +110,8 @@ const Content = ({ form, playlistId, playlist }) => {
const changeSeconds = (seconds, index) => {
const fileId = form.values.files[index].id;
- API.playlists.changeSeconds(playlistId, { file_id: fileId, seconds: seconds })
+ API.playlists
+ .changeSeconds(playlistId, { file_id: fileId, seconds: seconds })
.then((res) => {
if (res.status === 200) {
setOriginSecs();
@@ -111,7 +127,8 @@ const Content = ({ form, playlistId, playlist }) => {
};
const handleDelete = (index) => {
- API.playlists.removeFile(playlistId, { file_id: form.values.files[index].pfid })
+ API.playlists
+ .removeFile(playlistId, { file_id: form.values.files[index].pfid })
.then((res) => {
if (res.status === 200) {
form.removeListItem('files', index);
@@ -132,6 +149,7 @@ const Content = ({ form, playlistId, playlist }) => {