1import type { App } from "./elm/types"
2import * as Artwork from "./artwork"
3
4
5export function link(worker: Worker, app: App) {
6 app.ports.toUI.subscribe(event => {
7 worker.postMessage(event)
8 })
9
10 worker.onmessage = event => {
11 if (event.data.action) return handleAction(event.data.action, event.data.data)
12 if (event.data.tag) return app.ports.fromAlien.send(event.data)
13 }
14
15
16 function handleAction(action: string, data: unknown) {
17 switch (action) {
18 case "DOWNLOAD_ARTWORK": return Artwork.download(data)
19 }
20 }
21}