Compare commits

..

No commits in common. "c25301b3d28fd2eb15501b503d85913aac7f52b4" and "449cbb708db2e1a9388d4f1a22d31cdb64f412c1" have entirely different histories.

4 changed files with 28 additions and 2037 deletions

1992
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -29,9 +29,7 @@
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.0", "eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^7.0.0-0", "eslint-plugin-vue": "^7.0.0-0"
"node-sass": "^5.0.0",
"sass-loader": "^10.1.0"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View File

@ -1,46 +1,45 @@
<template> <template>
<Card class="dropZone" @dragover.prevent @drop.prevent @drop="selected" @click="$refs.fileInput.click()"> <Card class="upload" v-cloak @drop.prevent="fileDropped" @dragover.prevent>
<template #content> <template #content>
<div class="p-text-center"> <div class="p-text-center">
<i class="pi pi-upload"></i> <i class="pi pi-upload"></i>
<h2>{{ message }}</h2> <h2>Drag a H.264 encoded MP4 here to start a screen.</h2>
</div> </div>
</template> </template>
</Card> </Card>
<input type="file" hidden="true" ref="fileInput" @change="selected" />
</template> </template>
<script> <script>
import { useToast } from 'primevue/usetoast'
export default { export default {
emits: [ setup () {
'selected' const toast = useToast()
], function fileDropped (e) {
props: [ if (e.dataTransfer.files.length !== 1) {
'message' toast.add({ severity: 'error', summary: 'Bad file', detail: 'Please select only a single file.', life: 3000 })
], return
setup (props, context) { }
const selected = (event) => {
const files = event.dataTransfer ? event.dataTransfer.files : event.target.files const file = e.dataTransfer.files[0]
context.emit('selected', files) if (!file.name.endsWith('.mp4') || !file.type === 'video/mp4') {
toast.add({ severity: 'error', summary: 'Bad file', detail: 'File must be a H.264 encoded MP4.', life: 3000 })
}
} }
return { return {
selected fileDropped
} }
} }
} }
</script> </script>
<style lang="scss"> <style>
.dropZone { .upload {
cursor: pointer; color: rgba(0,0,0,0.4)
i, h2 {
color: #aaaaaa
}
} }
i.pi.pi-upload { i.pi.pi-upload {
font-size: 5em font-size: 5em;
} }
</style> </style>

View File

@ -1,38 +1,14 @@
<template> <template>
<div class="p-p-6"> <div class="p-p-6">
<h1 class="p-my-0">Host</h1> <h1 class="p-my-0">Host</h1>
<Upload v-if="!file" message="Drag a H.264 encoded MP4 here to start a screen." @selected="filesSelected" /> <Upload />
</div> </div>
</template> </template>
<script> <script>
import { useToast } from 'primevue/usetoast'
import { ref } from 'vue'
export default { export default {
setup () { setup () {
const toast = useToast()
const file = ref()
const filesSelected = (files) => {
if (files?.length !== 1) {
toast.add({ severity: 'error', summary: 'Bad file input', detail: 'You must select only one file.', life: 3000 })
return
}
if (!files[0].name.endsWith('.mp4') || files[0].type !== 'video/mp4') {
toast.add({ severity: 'error', summary: 'Bad file input', detail: 'Only H.264 encoded MP4s are supported.', life: 3000 })
return
}
file.value = files[0]
}
return {
filesSelected,
file
}
} }
} }
</script> </script>