1import type { App } from "./elm/types"
2
3
4// 🏔️
5
6
7let app: App
8
9
10
11// 🚀
12
13
14export function init(a: App) {
15 app = a
16
17 app.ports.requestSearch.subscribe(requestSearch)
18 app.ports.updateSearchIndex.subscribe(updateSearchIndex)
19}
20
21
22const search = new Worker(
23 "../../search.js",
24 { type: "module" }
25)
26
27
28search.onmessage = event => {
29 switch (event.data.action) {
30 case "PERFORM_SEARCH":
31 app.ports.receiveSearchResults.send(event.data.data)
32 break
33 }
34}
35
36
37
38// PORTS
39
40
41function requestSearch(searchTerm: string) {
42 search.postMessage({
43 action: "PERFORM_SEARCH",
44 data: searchTerm
45 })
46}
47
48
49function updateSearchIndex(tracksJson: string) {
50 search.postMessage({
51 action: "UPDATE_SEARCH_INDEX",
52 data: tracksJson
53 })
54}