mirror of
https://git.vectorsigma.ru/public/tubearchivist.git
synced 2026-08-05 20:49:28 +00:00
* Add development docker-compose file * Add /new/ path in nginx conf * Add frontend production setup * Fix lint * Refac move prod docker compose into non suffixed file * Fix run.sh fileendings on windows * Fix docker file naming consistancies * Add frontend dev setup * Add docker compose dev command * Refac remove docker network * Fix potential error causes * Chore update react-router-dom * Add redirect to login after logout * Refac allow basic auth for session login in api * Fix loginresponsetype optional property * Refac move isAdmin check into page Base * Refac use node lts for dev container * Refac remove old setup in readme * Refac move getisAdmin into loader and rename * Refac remove manual csrf cookie handing from actions and loader * Fix post requiring csrf header & cookie * Fix remove empty files * Refac revert dockerfile changes * Refac revert gitatrributes changes * Refac revert docker changes * Refac revert nginx changes * Refac revert docker change * Refac move frontend into frontend folder * Add production steps to dockerfile * Refac implement endpoint renaming * Refac remove frontend dockerfile * Add credentials include for dev env * Fix allow cors with credentials for dev environment * Fix images in dev mode * Add credentials for dev mode to all loader and actions, except signin * Revert cors config * Revert cors config * Fix nginx not serving /youtube/ * Fix video url missing api * Fix media url missing api * Add application settings page * Add continue vids * Add csrf to delete requests * Refac use api/video endpoint with filter to home, channel, playlist pages * Add channel nav request * Add channel playlists * Fix filterbar for playlist in channel * Add playlist_nav to video page * Add downloads aggs * Refac remove basic auth * Fix credentials include in signin * Refac user config to user me config * Add ApiToken get
95 lines
2.5 KiB
TypeScript
95 lines
2.5 KiB
TypeScript
import iconClose from '/img/icon-close.svg';
|
|
import iconArrowTop from '/img/icon-arrow-top.svg';
|
|
import iconArrowUp from '/img/icon-arrow-up.svg';
|
|
import iconArrowDown from '/img/icon-arrow-down.svg';
|
|
import iconArrowBottom from '/img/icon-arrow-bottom.svg';
|
|
import iconRemove from '/img/icon-remove.svg';
|
|
import updateCustomPlaylist from '../api/actions/updateCustomPlaylist';
|
|
|
|
type MoveVideoMenuProps = {
|
|
playlistId?: string;
|
|
videoId: string;
|
|
setCloseMenu: (status: boolean) => void;
|
|
setRefresh: (status: boolean) => void;
|
|
};
|
|
|
|
const MoveVideoMenu = ({ playlistId, videoId, setCloseMenu, setRefresh }: MoveVideoMenuProps) => {
|
|
if (playlistId === undefined) {
|
|
return [];
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<div className="video-popup-menu">
|
|
<img
|
|
src={iconClose}
|
|
className="video-popup-menu-close-button"
|
|
title="Close menu"
|
|
onClick={() => setCloseMenu(true)}
|
|
/>
|
|
<h3>Move Video</h3>
|
|
|
|
<img
|
|
className="move-video-button"
|
|
data-context="top"
|
|
onClick={async () => {
|
|
await updateCustomPlaylist('top', playlistId, videoId);
|
|
|
|
setRefresh(true);
|
|
}}
|
|
src={iconArrowTop}
|
|
title="Move to top"
|
|
/>
|
|
<img
|
|
className="move-video-button"
|
|
data-context="up"
|
|
onClick={async () => {
|
|
await updateCustomPlaylist('up', playlistId, videoId);
|
|
|
|
setRefresh(true);
|
|
}}
|
|
src={iconArrowUp}
|
|
title="Move up"
|
|
/>
|
|
<img
|
|
className="move-video-button"
|
|
data-context="down"
|
|
onClick={async () => {
|
|
await updateCustomPlaylist('down', playlistId, videoId);
|
|
|
|
setRefresh(true);
|
|
}}
|
|
src={iconArrowDown}
|
|
title="Move down"
|
|
/>
|
|
|
|
<img
|
|
className="move-video-button"
|
|
data-context="bottom"
|
|
onClick={async () => {
|
|
await updateCustomPlaylist('bottom', playlistId, videoId);
|
|
|
|
setRefresh(true);
|
|
}}
|
|
src={iconArrowBottom}
|
|
title="Move to bottom"
|
|
/>
|
|
|
|
<img
|
|
className="move-video-button"
|
|
data-context="remove"
|
|
onClick={async () => {
|
|
await updateCustomPlaylist('remove', playlistId, videoId);
|
|
|
|
setRefresh(true);
|
|
}}
|
|
src={iconRemove}
|
|
title="Remove from playlist"
|
|
/>
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default MoveVideoMenu;
|