34 lines
779 B
TypeScript
34 lines
779 B
TypeScript
/// <reference lib="webworker" />
|
|
|
|
import { getCoverUrl, getTags, type Tags } from '~/ui/composables/metadata'
|
|
|
|
export interface MetadataParsingSuccess {
|
|
id: string
|
|
status: 'success'
|
|
tags: Tags
|
|
coverUrl: string | undefined
|
|
}
|
|
|
|
export interface MetadataParsingFailure {
|
|
id: string
|
|
status: 'failure'
|
|
error: Error
|
|
}
|
|
|
|
export type MetadataParsingResult = MetadataParsingSuccess | MetadataParsingFailure
|
|
|
|
const parse = async (id: string, file: File) => {
|
|
try {
|
|
const tags = await getTags(file)
|
|
const coverUrl = await getCoverUrl(tags)
|
|
|
|
postMessage({ id, status: 'success', tags, coverUrl })
|
|
} catch (error) {
|
|
postMessage({ id, status: 'failure', error })
|
|
}
|
|
}
|
|
|
|
addEventListener('message', async (event) => {
|
|
parse(event.data.id, event.data.file)
|
|
})
|