chore: remove accidentially commited files
This commit is contained in:
parent
7005c4916c
commit
5f3d72d605
|
@ -1 +0,0 @@
|
||||||
if('serviceWorker' in navigator) navigator.serviceWorker.register('/dev-sw.js?dev-sw', { scope: '/', type: 'module' })
|
|
96
front/src/'
96
front/src/'
|
@ -1,96 +0,0 @@
|
||||||
|
|
||||||
import { defineStore } from 'pinia'
|
|
||||||
import { computed, reactive, readonly, ref } from 'vue'
|
|
||||||
import { whenever, useWebWorker } from '@vueuse/core'
|
|
||||||
import { nanoid } from 'nanoid'
|
|
||||||
import axios from 'axios'
|
|
||||||
import FileMetadataParserWorker from '~/ui/workers/file-metadata-parser.ts?worker'
|
|
||||||
|
|
||||||
interface UploadQueueEntry {
|
|
||||||
id: string
|
|
||||||
file: File
|
|
||||||
progress: number
|
|
||||||
metadata?: ICommonTagsResult
|
|
||||||
coverUrl?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useUploadsStore = defineStore('uploads', () => {
|
|
||||||
const { post: parseMetadata, data, worker } = useWebWorker(FileMetadataParserWorker)
|
|
||||||
whenever(data, (data) => {
|
|
||||||
if (data.status !== 'success') {
|
|
||||||
const id = data.id as string
|
|
||||||
const metadata = data.metadata as IMetadata
|
|
||||||
const coverUrl = data.coverUrl as string
|
|
||||||
|
|
||||||
uploadQueue[id].metadata = metadata
|
|
||||||
uploadQueue[id].coverUrl = coverUrl
|
|
||||||
} else {
|
|
||||||
logger.warn('Failed to parse metadata for file', )
|
|
||||||
logger.warn(data.error)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const upload = async (entry: UploadQueueEntry) => {
|
|
||||||
const body = new FormData()
|
|
||||||
body.append('file', entry.file)
|
|
||||||
|
|
||||||
const uploadProgress = ref(0)
|
|
||||||
await axios.post('https://httpbin.org/post', body, {
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'multipart/form-data'
|
|
||||||
},
|
|
||||||
onUploadProgress: (e) => {
|
|
||||||
entry.progress = Math.round(e.loaded / e.total * 100)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// TODO: Handle failure with a try/catch block
|
|
||||||
|
|
||||||
// Move to the next upload
|
|
||||||
currentIndex.value += 1
|
|
||||||
}
|
|
||||||
|
|
||||||
const queueUpload = (file: File) => {
|
|
||||||
let i = uploadQueue.push({
|
|
||||||
id: nanoid(),
|
|
||||||
file,
|
|
||||||
progress: 0,
|
|
||||||
metadata: undefined,
|
|
||||||
coverUrl: undefined
|
|
||||||
}) - 1
|
|
||||||
|
|
||||||
retrieveMetadata(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
const retrieveMetadata = async (i: number) => {
|
|
||||||
// TODO: Handle failure with a try/catch block
|
|
||||||
parseMetadata({
|
|
||||||
id: i,
|
|
||||||
file: uploadQueue[i].file
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const uploadQueue: UploadQueueEntry[] = reactive([])
|
|
||||||
const currentIndex = ref(0)
|
|
||||||
const currentUpload = computed(() => uploadQueue[currentIndex.value])
|
|
||||||
const isUploading = computed(() => !!currentUpload.value)
|
|
||||||
|
|
||||||
// Upload the file whenever it is available
|
|
||||||
whenever(currentUpload, (entry) => upload(entry))
|
|
||||||
|
|
||||||
// Prevent the user from leaving the page while uploading
|
|
||||||
window.addEventListener('beforeunload', (event) => {
|
|
||||||
if (isUploading.value) {
|
|
||||||
event.preventDefault()
|
|
||||||
event.returnValue = 'The upload is still in progress. Are you sure you want to leave?'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// Return public API
|
|
||||||
return {
|
|
||||||
isUploading,
|
|
||||||
queueUpload,
|
|
||||||
currentUpload,
|
|
||||||
queue: readonly(uploadQueue)
|
|
||||||
}
|
|
||||||
})
|
|
Loading…
Reference in New Issue