Refactor input validation and add torrent state
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									f71519ecae
								
							
						
					
					
						commit
						285d35bc2a
					
				
							
								
								
									
										18
									
								
								src/App.vue
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/App.vue
									
									
									
									
									
								
							| @ -9,21 +9,9 @@ | |||||||
| export default { | export default { | ||||||
|   setup () { |   setup () { | ||||||
|     const items = [ |     const items = [ | ||||||
|       { |       { label: 'Home', icon: 'pi pi-home', to: '/' }, | ||||||
|         label: 'Home', |       { label: 'Host', icon: 'pi pi-upload', to: '/host' }, | ||||||
|         icon: 'pi pi-home', |       { label: 'Join', icon: 'pi pi-video', to: '/join' } | ||||||
|         to: '/' |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         label: 'Host', |  | ||||||
|         icon: 'pi pi-upload', |  | ||||||
|         to: '/host' |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         label: 'Join', |  | ||||||
|         icon: 'pi pi-video', |  | ||||||
|         to: '/join' |  | ||||||
|       } |  | ||||||
|     ] |     ] | ||||||
| 
 | 
 | ||||||
|     return { |     return { | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								src/main.js
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/main.js
									
									
									
									
									
								
							| @ -34,5 +34,17 @@ app.component('Toast', Toast) | |||||||
| // Register VCinemaApp components.
 | // Register VCinemaApp components.
 | ||||||
| app.component('FileSelect', FileSelect) | app.component('FileSelect', FileSelect) | ||||||
| 
 | 
 | ||||||
|  | app.provide('trackers', [ | ||||||
|  |   'wss://tracker.sloppyta.co:443/announce', | ||||||
|  |   'wss://tracker.files.fm:7073/announce', | ||||||
|  |   'wss://open.tube:443/tracker/socket', | ||||||
|  |   'wss://hub.bugout.link:443/announce', | ||||||
|  |   'ws://tracker.sloppyta.co:80/announce', | ||||||
|  |   'ws://tracker.lab.vvc.niif.hu:80/announce', | ||||||
|  |   'ws://tracker.files.fm:7072/announce', | ||||||
|  |   'ws://tracker.btsync.cf:6969/announce', | ||||||
|  |   'ws://hub.bugout.link:80/announce' | ||||||
|  | ]) | ||||||
|  | 
 | ||||||
| // Render to DOM.
 | // Render to DOM.
 | ||||||
| app.mount('#app') | app.mount('#app') | ||||||
|  | |||||||
| @ -7,31 +7,39 @@ | |||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import { useToast } from 'primevue/usetoast' | import { useToast } from 'primevue/usetoast' | ||||||
| import { ref } from 'vue' | import { inject, ref, reactive } from 'vue' | ||||||
|  | 
 | ||||||
|  | const validateFileInput = (files) => { | ||||||
|  |   if (files?.length !== 1 || !files[0].name.endsWith('.mp4') || files[0].type !== 'video/mp4') { | ||||||
|  |     return false | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return true | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| export default { | export default { | ||||||
|   setup () { |   setup () { | ||||||
|     const toast = useToast() |     const toast = useToast() | ||||||
| 
 |     const trackers = inject('trackers') | ||||||
|     const file = ref() |     const file = ref() | ||||||
|  |     const torrentState = reactive({ | ||||||
|  |       active: false | ||||||
|  |     }) | ||||||
| 
 | 
 | ||||||
|     const filesSelected = (files) => { |     const filesSelected = (files) => { | ||||||
|       if (files?.length !== 1) { |       if (!validateFileInput(files)) { | ||||||
|         toast.add({ severity: 'error', summary: 'Bad file input', detail: 'You must select only one file.', life: 3000 }) |         toast.add({ severity: 'error', summary: 'Bad file input', detail: 'You must select a single H.264 encoded MP4.', life: 3000 }) | ||||||
|         return |       } else { | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       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] |         file.value = files[0] | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|  |       console.log(trackers) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     return { |     return { | ||||||
|       filesSelected, |       filesSelected, | ||||||
|       file |       file, | ||||||
|  |       torrentState | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user