41 lines
840 B
Vue
41 lines
840 B
Vue
<template>
|
|
<div
|
|
class="group cursor-pointer hover:outline outline-primary relative rounded overflow-hidden flex items-center justify-center"
|
|
@click="watch"
|
|
>
|
|
<video :srcObject="stream" muted autoplay />
|
|
|
|
<PrimeTag
|
|
severity="secondary"
|
|
class="absolute bottom-2 text-sm opacity-70 group-hover:opacity-100"
|
|
rounded
|
|
>
|
|
{{ isMe ? 'You' : client.displayName }}
|
|
</PrimeTag>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import type { ChadClient } from '#shared/types'
|
|
|
|
const props = defineProps<{
|
|
client: ChadClient
|
|
stream: MediaStream
|
|
}>()
|
|
|
|
const { me } = useClients()
|
|
const fullscreenVideo = useFullscreenVideo()
|
|
|
|
const isMe = computed(() => {
|
|
return props.client.socketId === me.value?.socketId
|
|
})
|
|
|
|
function watch() {
|
|
fullscreenVideo.show(props.stream)
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|