From 6eb023a63c3637b6140cbafb4f45c57c3736d8b2 Mon Sep 17 00:00:00 2001 From: JSC Date: Sun, 10 Aug 2025 19:30:08 +0200 Subject: [PATCH] feat: add playlist editing functionality; implement PlaylistEditPage and integrate with playlists service feat: enhance PlaylistsPage with search, sorting, and playlist creation features; improve UI components and state management --- src/App.tsx | 6 + src/components/player/CompactPlayer.tsx | 10 +- src/components/ui/textarea.tsx | 18 + src/lib/api/services/playlists.ts | 181 +++++++++ src/pages/PlaylistEditPage.tsx | 485 ++++++++++++++++++++++++ src/pages/PlaylistsPage.tsx | 415 +++++++++++++++++++- 6 files changed, 1106 insertions(+), 9 deletions(-) create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/lib/api/services/playlists.ts create mode 100644 src/pages/PlaylistEditPage.tsx diff --git a/src/App.tsx b/src/App.tsx index 12723af..e837aa2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,7 @@ import { AuthCallbackPage } from './pages/AuthCallbackPage' import { DashboardPage } from './pages/DashboardPage' import { SoundsPage } from './pages/SoundsPage' import { PlaylistsPage } from './pages/PlaylistsPage' +import { PlaylistEditPage } from './pages/PlaylistEditPage' import { ExtractionsPage } from './pages/ExtractionsPage' import { UsersPage } from './pages/admin/UsersPage' import { SettingsPage } from './pages/admin/SettingsPage' @@ -69,6 +70,11 @@ function AppRoutes() { } /> + + + + } /> diff --git a/src/components/player/CompactPlayer.tsx b/src/components/player/CompactPlayer.tsx index 836537a..f66b79f 100644 --- a/src/components/player/CompactPlayer.tsx +++ b/src/components/player/CompactPlayer.tsx @@ -97,10 +97,10 @@ export function CompactPlayer({ className }: CompactPlayerProps) { } }, [state.volume, executeAction]) - // Don't show if no current sound - if (!state.current_sound) { - return null - } + // // Don't show if no current sound + // if (!state.current_sound) { + // return null + // } return (
@@ -150,7 +150,7 @@ export function CompactPlayer({ className }: CompactPlayerProps) {
- {state.current_sound.name} + {state.current_sound?.name || 'No track selected'}
{state.playlist?.name} diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx new file mode 100644 index 0000000..7f21b5e --- /dev/null +++ b/src/components/ui/textarea.tsx @@ -0,0 +1,18 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Textarea({ className, ...props }: React.ComponentProps<"textarea">) { + return ( +