mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-15 16:04:19 +02:00
restrict playlist actions by permission
This commit is contained in:
@@ -5,6 +5,7 @@ import { DeletePlaylistAction } from '/@/renderer/features/context-menu/actions/
|
||||
import { EditPlaylistAction } from '/@/renderer/features/context-menu/actions/edit-playlist-action';
|
||||
import { GetInfoAction } from '/@/renderer/features/context-menu/actions/get-info-action';
|
||||
import { PlayAction } from '/@/renderer/features/context-menu/actions/play-action';
|
||||
import { usePermissions } from '/@/renderer/store';
|
||||
import { ContextMenu } from '/@/shared/components/context-menu/context-menu';
|
||||
import { ContextMenuPreview } from '/@/shared/components/context-menu/context-menu-preview';
|
||||
import { LibraryItem, Playlist } from '/@/shared/types/domain-types';
|
||||
@@ -20,6 +21,15 @@ export const PlaylistContextMenu = ({ items, type }: PlaylistContextMenuProps) =
|
||||
return { ids };
|
||||
}, [items]);
|
||||
|
||||
const { userId, ...permissions } = usePermissions();
|
||||
|
||||
const canEditPublic = permissions.playlists.editPublic;
|
||||
|
||||
const includesNonOwnedPublic = items.some((item) => item.public && item.ownerId !== userId);
|
||||
|
||||
const canEditPlaylist = canEditPublic || !includesNonOwnedPublic;
|
||||
const canDeletePlaylist = canEditPublic || !includesNonOwnedPublic;
|
||||
|
||||
return (
|
||||
<ContextMenu.Content
|
||||
bottomStickyContent={<ContextMenuPreview items={items} itemType={type} />}
|
||||
@@ -30,8 +40,8 @@ export const PlaylistContextMenu = ({ items, type }: PlaylistContextMenuProps) =
|
||||
<ContextMenu.Divider />
|
||||
<GetInfoAction disabled={items.length === 0} items={items} />
|
||||
<ContextMenu.Divider />
|
||||
<EditPlaylistAction items={items} />
|
||||
<DeletePlaylistAction items={items} />
|
||||
<EditPlaylistAction disabled={!canEditPlaylist} items={items} />
|
||||
<DeletePlaylistAction disabled={!canDeletePlaylist} items={items} />
|
||||
</ContextMenu.Content>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user