Skip to content

Commit

Permalink
get title for manually added video
Browse files Browse the repository at this point in the history
  • Loading branch information
stCarolas committed Jun 19, 2024
1 parent fc5c7e4 commit 16da4f9
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 17 deletions.
40 changes: 29 additions & 11 deletions src/components/MediaWidget/AddMediaPopup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { Playlist } from "../../logic/playlist/Playlist";
import { Song } from "./types";
import { WidgetData } from "../../types/WidgetData";

const youtube_url_regexp = /^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube(-nocookie)?\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/g;

export default function AddMediaPopup({ playlist }: { playlist: Playlist }) {
const [showNewMediaPopup, setShowNewMediaPopup] = useState(false);
const [savedPlaylists, setSavedPlaylists] = useState<Playlist[]>([]);
Expand All @@ -23,6 +25,30 @@ export default function AddMediaPopup({ playlist }: { playlist: Playlist }) {
return () => document.removeEventListener("toggleAddMediaPopup", toggle);
}, [showNewMediaPopup]);

function addVideo(videoId: string) {
return axios
.get(
`${process.env.REACT_APP_MEDIA_API_ENDPOINT}/media/available?videoId=${videoId}`,
)
.then((data) => data.data)
.then((list) => {
const songs = list.map((video) => {
let id = uuidv4();
let song = {
src: `https://www.youtube.com/watch?v=${videoId}`,
type: "video/youtube",
id: id,
originId: videoId, // todo remove originId?
owner: recipientId,
title: video.snippet.title,
};
return song;
});
songs.forEach((song: Song) => playlist.addSong(song));
return list.title;
});
}

function addPlaylistItems(playlistId: string) {
return axios
.get(
Expand All @@ -42,7 +68,7 @@ export default function AddMediaPopup({ playlist }: { playlist: Playlist }) {
};
return song;
});
songs.forEach((song:Song) => playlist.addSong(song));
songs.forEach((song: Song) => playlist.addSong(song));
return list.title;
});
}
Expand Down Expand Up @@ -74,16 +100,8 @@ export default function AddMediaPopup({ playlist }: { playlist: Playlist }) {
localStorage.setItem("playlists", JSON.stringify(filteredPlaylists));
});
} else {
let id = uuidv4();
let song = {
src: url,
type: "video/youtube",
id: id,
owner: recipientId,
title: "Manually added video",
originId: null
};
playlist.addSong(song);
const videoId = youtube_url_regexp.exec(url)?.at(6);
videoId && addVideo(videoId);
}
document.getElementById("new-media-input").value = "";
setShowNewMediaPopup(false);
Expand Down
4 changes: 0 additions & 4 deletions src/components/MediaWidget/MediaWidget.css
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,6 @@
margin-top: 10px;
}

.add-button-container button {
border-color: rgb(170, 170, 170);
}

iframe {
/* width: 500px !important; */
height: 300px !important;
Expand Down
6 changes: 4 additions & 2 deletions src/components/MediaWidget/PlaylistComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import AddMediaPopup from "./AddMediaPopup";
import { Playlist } from "../../logic/playlist/Playlist";
import { Song } from "./types";
import { WidgetData } from "../../types/WidgetData";
import { useTranslation } from "react-i18next";

export default function PlaylistComponent({
playlist,
Expand All @@ -18,6 +19,7 @@ export default function PlaylistComponent({
const [current, setCurrent] = useState<number | null>(null);
const [songs, setSongs] = useState<Song[]>([]);
const [urlToCopy, setUrlToCopy] = useState<string>("");
const { t } = useTranslation();

function onDragEnd(result) {
if (!result.destination) {
Expand Down Expand Up @@ -156,14 +158,14 @@ export default function PlaylistComponent({
</ul>
<div className="add-button-container">
<button
className="btn btn-outline-light add"
className="oda-btn-default"
onClick={() => {
document.dispatchEvent(
new CustomEvent("toggleAddMediaPopup"),
);
}}
>
<span className="material-symbols-sharp">add</span>
{t("widget-player-add-video")}
</button>
</div>
<div className={`link-popup ${urlToCopy ? "" : "hidden"}`}>
Expand Down
2 changes: 2 additions & 0 deletions src/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ i18n
"widget-alert-message-font-size":"Font size",
"widget-alert-message-color":"Color",
"widget-alert-use-greenscreen":"Use greenscreen",
"widget-player-add-video":"Add video or playlist",
"All":"All",
"Top":"Top",
"Last":"Last",
Expand Down Expand Up @@ -254,6 +255,7 @@ i18n
"widget-alert-message-font-size":"Размер шрифта",
"widget-alert-message-color":"Цвет",
"widget-alert-use-greenscreen":"Использовать greenscreen",
"widget-player-add-video":"Добавить видео или плейлист",
"All":"Все",
"Top":"Топ",
"Last":"Последние",
Expand Down

0 comments on commit 16da4f9

Please sign in to comment.