☰

DirectLink🐘!

εœ¨ι•Ώζ―›θ±‘η«™η‚ΉδΈ­η›΄θΎΎActivityHubι“ΎζŽ₯

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ скрипт, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталирано Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Tampermonkey, Greasemonkey ΠΈΠ»ΠΈ Violentmonkey.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ скрипт, трябва Π΄Π° инсталиратС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Tampermonkey .

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ скрипт, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталирано Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Tampermonkey ΠΈΠ»ΠΈ Violentmonkey.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ скрипт, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталирано Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Tampermonkey ΠΈΠ»ΠΈ Userscripts.

Π—Π° Π΄Π° инсталиратС скрипта, трябва Π΄Π° инсталиратС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Tampermonkey.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ скрипт, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталиран скриптов ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€.

(Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌ скриптов ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€, искам Π΄Π° Π³ΠΎ инсталирам!)

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° инсталиратС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Stylus.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° инсталиратС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Stylus.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° инсталиратС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Stylus.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталиран ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° потрСбитСлски стиловС.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталиран ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° потрСбитСлски стиловС.

Π—Π° Π΄Π° инсталиратС Ρ‚ΠΎΠ·ΠΈ стил, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ инсталиран ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° потрСбитСлски стиловС.

(Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌ инсталиран ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° стиловСтС, искам Π΄Π° Π³ΠΎ инсталирам!)

// ==UserScript==
// @name         DirectLink🐘!
// @namespace    editit
// @version      0.4.1
// @description  εœ¨ι•Ώζ―›θ±‘η«™η‚ΉδΈ­η›΄θΎΎActivityHubι“ΎζŽ₯
// @author       editit
// @match        *://o3o.ca/*
// @match        *://m.cmx.im/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // https://stackoverflow.com/a/47409362
    const inputTypes = [window.HTMLInputElement, window.HTMLSelectElement, window.HTMLTextAreaElement]
    const triggerInputChange = (node, value = "") => {
        // only process the change on elements we know have a value setter in their constructor
        if (inputTypes.indexOf(node.__proto__.constructor) > -1) {
            const setValue = Object.getOwnPropertyDescriptor(node.__proto__, "value").set
            const event = new Event("input", { bubbles: true })

            setValue.call(node, value)
            node.dispatchEvent(event)
        }
    }
    const kp1 = new KeyboardEvent("keydown", {
        bubbles: true,
        cancelable: true,
        keyCode: 13,
    })
    const kp2 = new KeyboardEvent("keyup", {
        bubbles: true,
        cancelable: true,
        keyCode: 13,
    })
    // https://stackoverflow.com/a/34896387
    document.addEventListener("click", function (e) {
        const target = e.target.closest("a.status-link.unhandled-link") // Or any other selector.

        if (target) {
            let h = target.href
            if (h.match(/^.*?\/\/[^\/]+\/((@[^\/]+)|(notes))\//) || h.match(/^.*?:\/\/bird\.makeup\/user\.*/) || h.match(/^.*?\/\/[^\/]+\/users\/[^\/]+\/statuses\/\d+/)) {
                e.preventDefault()
                console.log(h)
                triggerInputChange(document.querySelector("input.search__input"), h)
                document.querySelector("input.search__input").dispatchEvent(kp1)
                document.querySelector("input.search__input").dispatchEvent(kp2)
                return false
            } else {
            }
        }
    })
})();