33 lines
2.0 KiB
Plaintext
33 lines
2.0 KiB
Plaintext
(import kiss_firefox.API)
|
||
(import js.lib.Promise)
|
||
(importAs js.html.XMLHttpRequest XHR)
|
||
(import js.html.HTMLCollection)
|
||
(import hollywoo_sourcer.Message)
|
||
(var :Dynamic document js.Lib.global.document)
|
||
(var :Dynamic window js.Lib.global.window)
|
||
|
||
(API.browser.runtime.onMessage.addListener
|
||
->[:Message message sender sendResponse]
|
||
(case message
|
||
((object type "requestSource")
|
||
(let [sourceUrl window.location.href
|
||
fieldLabelDivs (document.getElementsByClassName "field-label")
|
||
getCreditsHeadingDiv ->{
|
||
(doFor i (range fieldLabelDivs.length)
|
||
(when (= "Copyright/Attribution Notice: " .innerText (fieldLabelDivs.item i))
|
||
(return (fieldLabelDivs.item i))))
|
||
// If there is no explicit Copyright notice, get the author:
|
||
(doFor i (range fieldLabelDivs.length)
|
||
(when (= "Author: " .innerText (fieldLabelDivs.item i))
|
||
(return (fieldLabelDivs.item i))))
|
||
null
|
||
}
|
||
creditsHeadingDiv (getCreditsHeadingDiv)
|
||
creditsDiv (creditsHeadingDiv.parentElement.childNodes.item 1)
|
||
credit creditsDiv.innerText
|
||
fileSpans (document.getElementsByClassName "file")
|
||
fileUrls (for i (range fileSpans.length)
|
||
(Reflect.field (.item .childNodes (fileSpans.item i) 2) "href"))]
|
||
(awaitLet [response (API.browser.runtime.sendMessage (object type "downloadOpenGameArt" data [fileUrls credit sourceUrl]))]
|
||
(print response))))
|
||
(otherwise))) |