import { DOMUtils, addStyle, log, utils } from "@/env"; import blockCSS from "./block.css?raw"; import { Panel } from "@components/setting/panel"; import Qmsg from "qmsg"; import { DouYinUrlHandler } from "@/router/DouYinUrlHandler"; export const MDouYinShareChallenge = { init() { addStyle(blockCSS); Panel.onceExec("m-dy-share-challenge-coverTopJump", () => { return this.coverTopJump(); }); Panel.execMenuOnce("m-dy-share-challenge-coverVideoCard", () => { return this.coverVideoCard(); }); }, /** * 阻止上面区域点击跳转至下载页面 */ coverTopJump() { log.info("阻止上面区域点击跳转至下载页面"); DOMUtils.on( document, "click", ".challenge-body", (event) => { DOMUtils.preventEvent(event); }, { capture: true, overrideTarget: false, } ); }, /** * 覆盖视频卡片点击事件 */ coverVideoCard() { log.info("覆盖视频卡片点击事件"); const callback = (event: MouseEvent | PointerEvent, $click: HTMLElement) => { DOMUtils.preventEvent(event); const rectFiber = utils.getReactInstance($click).reactFiber; if (!rectFiber) { log.error("获取reactFiber失败"); Qmsg.error("获取reactFiber失败"); return; } const listData = rectFiber?.return?.return?.return?.memoizedProps.listData; const index = rectFiber.index; const currentList = listData[index]; const url = DouYinUrlHandler.getVideoUrl(currentList["aweme_id"]); window.open(url, "_blank"); }; const result = DOMUtils.on(document, "click", "#pagelet-worklist li.item", callback, { capture: true, overrideTarget: false, }); return [result.off]; }, };