@@ -84,6 +101,7 @@ import {
} from "@videodb/player-vue";
import "@videodb/player-vue/dist/style.css";
import LoadingMessage from "./elements/LoadingMessage.vue";
+import ExternalLink from "../icons/ExternalLink.vue";
const props = defineProps({
content: {
@@ -97,6 +115,7 @@ const props = defineProps({
});
const isFullScreen = ref(false);
+const showSuccessMessage = ref(false);
const handleFullScreenChange = () => {
isFullScreen.value = !isFullScreen.value;
@@ -106,6 +125,37 @@ const handleFullScreenChange = () => {
document.exitFullscreen();
}
};
+
+const copyShareUrl = async () => {
+ try {
+ const shareUrl = `https://console.videodb.io/player?url=${props.content.video.stream_url}`;
+ await navigator.clipboard.writeText(shareUrl);
+
+ // Show success message
+ showSuccessMessage.value = true;
+
+ // Hide success message after 2 seconds
+ setTimeout(() => {
+ showSuccessMessage.value = false;
+ }, 2000);
+ } catch (err) {
+ console.error("Failed to copy share URL:", err);
+ // Fallback for older browsers
+ const textArea = document.createElement("textarea");
+ textArea.value = `https://console.videodb.io/player?url=${props.content.video.stream_url}`;
+ document.body.appendChild(textArea);
+ textArea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textArea);
+
+ // Show success message even for fallback
+ showSuccessMessage.value = true;
+ setTimeout(() => {
+ showSuccessMessage.value = false;
+ }, 2000);
+ }
+};
+