(target)
| 396 | } |
| 397 | |
| 398 | async function postOnClicked(target) { |
| 399 | try { |
| 400 | // extract url from target post and download or open it |
| 401 | let articleNode = postGetArticleNode(target); |
| 402 | let { url, mediaIndex } = await postGetUrl(target, articleNode); |
| 403 | |
| 404 | // download or open media url |
| 405 | if (url.length > 0) { |
| 406 | // check url |
| 407 | if (target.getAttribute("class").includes("download-btn")) { |
| 408 | let mediaName = url |
| 409 | .split("?")[0] |
| 410 | .split("\\") |
| 411 | .pop() |
| 412 | .split("/") |
| 413 | .pop(); |
| 414 | mediaName = mediaName.substring(0, mediaName.lastIndexOf(".")); |
| 415 | let datetime = new Date( |
| 416 | articleNode.querySelector("time").getAttribute("datetime") |
| 417 | ); |
| 418 | let posterName = |
| 419 | articleNode.querySelector("header a") || |
| 420 | findPostName(articleNode); |
| 421 | posterName = posterName.getAttribute("href").replace(/\//g, ""); |
| 422 | let postId = findPostId(articleNode); |
| 423 | let filename = filenameFormat( |
| 424 | postFilenameTemplate, |
| 425 | posterName, |
| 426 | datetime, |
| 427 | mediaName, |
| 428 | postId, |
| 429 | mediaIndex |
| 430 | ); |
| 431 | downloadResource(url, filename); |
| 432 | } else { |
| 433 | // open url in new tab |
| 434 | openResource(url); |
| 435 | } |
| 436 | } |
| 437 | } catch (e) { |
| 438 | console.log(`Uncatched in postOnClicked(): ${e}\n${e.stack}`); |
| 439 | return null; |
| 440 | } |
| 441 | } |
| 442 | |
| 443 | function postGetArticleNode(target) { |
| 444 | let articleNode = target; |
no test coverage detected