operaDownloadButton.ts (1272B) - raw
1 import { assetCatalog, jsx, style } from "../composer" 2 import { defineModule } from "../types" 3 import { downloadLastOperaMedia } from "../imports" 4 import { interceptComponent } from "../utils" 5 6 7 export default defineModule({ 8 name: "Opera Download Button", 9 enabled: config => config.operaDownloadButton, 10 init() { 11 interceptComponent( 12 'context_chrome_header/src/ChromeHeaderRenderer', 13 'ChromeHeaderRenderer', 14 { 15 onRenderBaseHeader: (_component: any, _args: any[], render: () => void) => { 16 render() 17 jsx.beginRender(jsx.makeNodePrototype("image")) 18 jsx.setAttributeStyle("style", new style.Style({ 19 height: 32, 20 marginTop: 4, 21 marginLeft: 8, 22 marginRight: 12, 23 })) 24 jsx.setAttribute("src", assetCatalog.loadCatalog("share_sheet/res").download) 25 jsx.setAttributeFunction("onTap", () => downloadLastOperaMedia(false)) 26 jsx.setAttributeFunction("onLongPress", () => downloadLastOperaMedia(true)) 27 jsx.endRender() 28 } 29 } 30 ) 31 } 32 })