From 5bcbf4e227d8b0c7cb2156b5c5acba9958203e3d Mon Sep 17 00:00:00 2001 From: Peifan Li Date: Fri, 21 Nov 2025 16:41:50 -0500 Subject: [PATCH] feat: Add video management functionality --- frontend/index.html | 17 +- frontend/public/apple-touch-icon.png | Bin 0 -> 3786 bytes frontend/public/favicon-96x96.png | Bin 0 -> 2015 bytes frontend/public/favicon.ico | Bin 360146 -> 15086 bytes frontend/public/favicon.svg | 36 ++++ frontend/public/favicon/apple-touch-icon.png | Bin 0 -> 3786 bytes frontend/public/favicon/favicon-96x96.png | Bin 0 -> 2015 bytes frontend/public/favicon/favicon.ico | Bin 0 -> 15086 bytes frontend/public/favicon/favicon.svg | 36 ++++ frontend/public/favicon/site.webmanifest | 21 +++ .../favicon/web-app-manifest-192x192.png | Bin 0 -> 4212 bytes .../favicon/web-app-manifest-512x512.png | Bin 0 -> 14759 bytes frontend/public/mytube-icon.svg | 3 - frontend/public/site.webmanifest | 21 +++ frontend/public/web-app-manifest-192x192.png | Bin 0 -> 4212 bytes frontend/public/web-app-manifest-512x512.png | Bin 0 -> 14759 bytes frontend/src/App.css | 154 ++++++++++++++++++ frontend/src/App.jsx | 10 ++ frontend/src/assets/logo.svg | 34 ++++ frontend/src/assets/react.svg | 1 - frontend/src/components/AuthorsList.jsx | 14 +- frontend/src/components/Header.jsx | 7 +- frontend/src/pages/ManagePage.jsx | 96 +++++++++++ frontend/src/pages/VideoPlayer.jsx | 2 +- 24 files changed, 432 insertions(+), 20 deletions(-) create mode 100644 frontend/public/apple-touch-icon.png create mode 100644 frontend/public/favicon-96x96.png create mode 100644 frontend/public/favicon.svg create mode 100644 frontend/public/favicon/apple-touch-icon.png create mode 100644 frontend/public/favicon/favicon-96x96.png create mode 100644 frontend/public/favicon/favicon.ico create mode 100644 frontend/public/favicon/favicon.svg create mode 100644 frontend/public/favicon/site.webmanifest create mode 100644 frontend/public/favicon/web-app-manifest-192x192.png create mode 100644 frontend/public/favicon/web-app-manifest-512x512.png delete mode 100644 frontend/public/mytube-icon.svg create mode 100644 frontend/public/site.webmanifest create mode 100644 frontend/public/web-app-manifest-192x192.png create mode 100644 frontend/public/web-app-manifest-512x512.png create mode 100644 frontend/src/assets/logo.svg delete mode 100644 frontend/src/assets/react.svg create mode 100644 frontend/src/pages/ManagePage.jsx diff --git a/frontend/index.html b/frontend/index.html index 4452528..82b523b 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,17 +2,12 @@ - - - - + + + + + + MyTube - Download & Watch YouTube Videos diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed0f10e9641099f7aeb08e06788615b4364e04a GIT binary patch literal 3786 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 RRb4Mvg0m<7J}%_qKLKzdoJ#-z literal 0 HcmV?d00001 diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico index de7724355607a0924fd7ca6d9efc767fc015e45d..47efbc61d7b57ac3e1ddbef91ecfb5021849ce53 100644 GIT binary patch literal 15086 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¥9>F0Rr3mG~S1;0OkQstsNI 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 FzX7FMYR&)v diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg new file mode 100644 index 0000000..bb18c52 --- /dev/null +++ b/frontend/public/favicon.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/public/favicon/apple-touch-icon.png b/frontend/public/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed0f10e9641099f7aeb08e06788615b4364e04a GIT binary patch literal 3786 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 RRb4Mvg0m<7J}%_qKLKzdoJ#-z literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/favicon.ico b/frontend/public/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..47efbc61d7b57ac3e1ddbef91ecfb5021849ce53 GIT binary patch literal 15086 zcmeHOZHSar6u#>!D@)*lT0+L|hEYa>u^3i}mIxw*fG7Q_z_%9Yj%OhrsX7hLw~dG5@0-kEvl;~nqr%)%V@aNfE1 zo^zga?tQ<`d)Js6Q)}kVHIz-J=Q(3uF~&4CC4V;Ua}idpk+?Mqe?{>__SNOSj<0u*$hylr{{-XgE_o;GvVRxU7)$yUktJ(n@PIq z2fM5w9>m|(Oz1}1K4MF@m zZfF4Z?C}qr7G;%R0eljkB<99nF>yp*rWJU4UkQsH?}yObyycj1|MU)cua&@^q#TNA z+;D7op_L2MRiL+04rVTeFy>L9J5iHg>*k&Q((y z7@!r>$Ov%pVz&QGOd6xHNs@NN+L2vrHg?4=I(!(IJv-kTNbl2F=_D!QJAhr|*1vMD zSfcoL^Cq2S9(oH-ciMoIf8|#BbT)&s7);V7aj!rWO7|}eLBH%sU%x&(52Nk>;X^>*wCB&y_N}=XP5<(%eLtCV9{laY z|CKBGeFXhw9!r;0^7?nzkOd2(V~|dg4o5lr7{l`}j!l~q7A{=^R<8!?>I&n~7>$)q zk~T&3Uq}D8hB|Q~aP+7%Q<9W6|8pQJ;Rlz4ni^o`N?_YIpu0PpX`iiG%+a70YNC2h zjK|CLUu0c8sd3UgP1O1q3QuI~+IxvZ&jLd(AK5bDj`glrSvTru&Fghf03w^A{}0GL z_}1|Ijz3~ecE!OMx(;pCy(u^0cT-3I-;jSMugEUjYvDcoI6l7t6pF9f?>7UyMy3;&?l5`CvcVmeU81rsRzv0- z?fgXBEPHefl3Df;XOQX?dO>I+kDodPUSx>v%KKtq& zNYA+LIhQ(m<6$fE>{W-JuRbULB|DDsm8s=DW39g9hWkx# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/public/favicon/site.webmanifest b/frontend/public/favicon/site.webmanifest new file mode 100644 index 0000000..7292fbf --- /dev/null +++ b/frontend/public/favicon/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "MyTube", + "short_name": "MyTube", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/frontend/public/favicon/web-app-manifest-192x192.png b/frontend/public/favicon/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a385581032e70a17ddee6fe596bd62419931ff GIT binary patch literal 4212 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 literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/web-app-manifest-512x512.png b/frontend/public/favicon/web-app-manifest-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..706fb3abab26ca8433a1449f8e96554decf16c77 GIT binary patch literal 14759 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 Oq@I?sX1Tiat^Wgra|-$Z literal 0 HcmV?d00001 diff --git a/frontend/public/mytube-icon.svg b/frontend/public/mytube-icon.svg deleted file mode 100644 index 0785dd5..0000000 --- a/frontend/public/mytube-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/public/site.webmanifest b/frontend/public/site.webmanifest new file mode 100644 index 0000000..7292fbf --- /dev/null +++ b/frontend/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "MyTube", + "short_name": "MyTube", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/frontend/public/web-app-manifest-192x192.png b/frontend/public/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a385581032e70a17ddee6fe596bd62419931ff GIT binary patch literal 4212 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 literal 0 HcmV?d00001 diff --git a/frontend/public/web-app-manifest-512x512.png b/frontend/public/web-app-manifest-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..706fb3abab26ca8433a1449f8e96554decf16c77 GIT binary patch literal 14759 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 Oq@I?sX1Tiat^Wgra|-$Z literal 0 HcmV?d00001 diff --git a/frontend/src/App.css b/frontend/src/App.css index c507479..8e77441 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -74,6 +74,14 @@ body { color: var(--primary-color); text-decoration: none; letter-spacing: -0.5px; + display: flex; + align-items: center; + gap: 10px; +} + +.logo-icon { + height: 40px; + width: auto; } /* Header Form */ @@ -1997,4 +2005,150 @@ body { display: inline-block; margin-left: 3px; font-weight: bold; +} + +/* Manage Page Styles */ +.manage-page { + padding: 2rem; + max-width: 1200px; + margin: 0 auto; + color: var(--text-primary); +} + +.manage-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem; +} + +.manage-header h1 { + font-size: 2rem; + color: var(--text-primary); + margin: 0; +} + +.back-link { + color: var(--primary-color); + text-decoration: none; + font-weight: 500; + transition: color 0.2s; +} + +.back-link:hover { + color: var(--primary-hover); + text-decoration: underline; +} + +.manage-controls { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem; + background: var(--bg-secondary); + padding: 1rem; + border-radius: 8px; + border: 1px solid var(--border-color); +} + +.manage-search { + flex: 1; + max-width: 400px; + padding: 0.75rem 1rem; + border-radius: 6px; + border: 1px solid var(--border-color); + background: var(--bg-primary); + color: var(--text-primary); + font-size: 1rem; +} + +.video-count { + color: var(--text-secondary); + font-size: 0.9rem; +} + +.manage-table { + width: 100%; + border-collapse: collapse; + background: var(--bg-secondary); + border-radius: 8px; + overflow: hidden; +} + +.manage-table th, +.manage-table td { + padding: 1rem; + text-align: left; + border-bottom: 1px solid var(--border-color); +} + +.manage-table th { + background: rgba(0, 0, 0, 0.2); + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + font-size: 0.85rem; + letter-spacing: 0.5px; +} + +.manage-table tr:last-child td { + border-bottom: none; +} + +.manage-table tr:hover { + background: rgba(255, 255, 255, 0.02); +} + +.manage-thumbnail { + width: 80px; + height: 60px; + object-fit: cover; + border-radius: 4px; +} + +.col-thumbnail { + width: 100px; +} + +.col-title { + font-weight: 500; +} + +.col-author { + color: var(--text-secondary); + width: 200px; +} + +.col-actions { + width: 100px; + text-align: right; +} + +.delete-btn-small { + background: rgba(255, 62, 62, 0.1); + color: #ff3e3e; + border: 1px solid rgba(255, 62, 62, 0.2); + padding: 0.5rem 1rem; + border-radius: 4px; + cursor: pointer; + font-size: 0.85rem; + transition: all 0.2s; +} + +.delete-btn-small:hover:not(:disabled) { + background: rgba(255, 62, 62, 0.2); + border-color: #ff3e3e; +} + +.delete-btn-small:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.no-videos-found { + text-align: center; + padding: 3rem; + color: var(--text-secondary); + background: var(--bg-secondary); + border-radius: 8px; } \ No newline at end of file diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 91ce1a9..0309277 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -7,6 +7,7 @@ import Header from './components/Header'; import AuthorVideos from './pages/AuthorVideos'; import CollectionPage from './pages/CollectionPage'; import Home from './pages/Home'; +import ManagePage from './pages/ManagePage'; import SearchResults from './pages/SearchResults'; import VideoPlayer from './pages/VideoPlayer'; @@ -681,6 +682,15 @@ function App() { /> } /> + + } + /> diff --git a/frontend/src/assets/logo.svg b/frontend/src/assets/logo.svg new file mode 100644 index 0000000..092bf01 --- /dev/null +++ b/frontend/src/assets/logo.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/frontend/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/src/components/AuthorsList.jsx b/frontend/src/components/AuthorsList.jsx index 2d7088e..96c81a1 100644 --- a/frontend/src/components/AuthorsList.jsx +++ b/frontend/src/components/AuthorsList.jsx @@ -11,7 +11,7 @@ const AuthorsList = ({ videos }) => { const uniqueAuthors = [...new Set(videos.map(video => video.author))] .filter(author => author) // Filter out null/undefined authors .sort((a, b) => a.localeCompare(b)); // Sort alphabetically - + setAuthors(uniqueAuthors); } else { setAuthors([]); @@ -40,7 +40,7 @@ const AuthorsList = ({ videos }) => {
    {authors.map(author => (
  • - setIsOpen(false)} // Close dropdown when an author is selected @@ -50,6 +50,16 @@ const AuthorsList = ({ videos }) => {
  • ))}
+
+ setIsOpen(false)} + style={{ fontWeight: 'bold', color: 'var(--primary-color)' }} + > + Manage Videos + +
); diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx index 66f9356..f3a449e 100644 --- a/frontend/src/components/Header.jsx +++ b/frontend/src/components/Header.jsx @@ -1,7 +1,9 @@ import { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; +import logo from '../assets/logo.svg'; const Header = ({ onSubmit, onSearch, activeDownloads = [] }) => { + // ... existing state ... const [videoUrl, setVideoUrl] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(''); @@ -16,6 +18,7 @@ const Header = ({ onSubmit, onSearch, activeDownloads = [] }) => { }, [activeDownloads]); const handleSubmit = async (e) => { + // ... existing submit handler ... e.preventDefault(); if (!videoUrl.trim()) { @@ -76,8 +79,8 @@ const Header = ({ onSubmit, onSearch, activeDownloads = [] }) => {
- My - Tube + MyTube Logo + MyTube
diff --git a/frontend/src/pages/ManagePage.jsx b/frontend/src/pages/ManagePage.jsx new file mode 100644 index 0000000..1e0444d --- /dev/null +++ b/frontend/src/pages/ManagePage.jsx @@ -0,0 +1,96 @@ +import { useState } from 'react'; +import { Link } from 'react-router-dom'; + +const BACKEND_URL = import.meta.env.VITE_BACKEND_URL; + +const ManagePage = ({ videos, onDeleteVideo }) => { + const [searchTerm, setSearchTerm] = useState(''); + const [deletingId, setDeletingId] = useState(null); + + const filteredVideos = videos.filter(video => + video.title.toLowerCase().includes(searchTerm.toLowerCase()) || + video.author.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const handleDelete = async (id) => { + if (window.confirm('Are you sure you want to delete this video?')) { + setDeletingId(id); + await onDeleteVideo(id); + setDeletingId(null); + } + }; + + const getThumbnailSrc = (video) => { + if (video.thumbnailPath) { + return `${BACKEND_URL}${video.thumbnailPath}`; + } + return video.thumbnailUrl || 'https://via.placeholder.com/120x90?text=No+Thumbnail'; + }; + + return ( +
+
+

Manage Videos

+ ← Back to Home +
+ +
+ setSearchTerm(e.target.value)} + className="manage-search" + /> +
+ {filteredVideos.length} videos found +
+
+ +
+ {filteredVideos.length > 0 ? ( + + + + + + + + + + + {filteredVideos.map(video => ( + + + + + + + ))} + +
ThumbnailTitleAuthorActions
+ {video.title} + {video.title}{video.author} + +
+ ) : ( +
+ No videos found matching your search. +
+ )} +
+
+ ); +}; + +export default ManagePage; diff --git a/frontend/src/pages/VideoPlayer.jsx b/frontend/src/pages/VideoPlayer.jsx index fb67ec6..af7bc6d 100644 --- a/frontend/src/pages/VideoPlayer.jsx +++ b/frontend/src/pages/VideoPlayer.jsx @@ -217,7 +217,7 @@ const VideoPlayer = ({ videos, onDeleteVideo, collections, onAddToCollection, on className="action-btn btn-secondary" onClick={handleAddToCollection} > - + Save + + Add to Collection