mikasowar / LinkedIn Spotter

// ==UserScript==
// @name     LinkedIn Spotter
// @version      1.1
// @author       Mikas
// @match        https://www.linkedin.com/mynetwork/
// @grant        GM_addStyle
// @require http://code.jquery.com/jquery-3.3.1.min.js
// @license MIT
// ==/UserScript==

var SEARCH_WORDS = [
    "HR",
    "Acquisition",
    "Talent",
    "Recruiter"
  ];
var AUTO_CLICK = [
    "Acquisition",
    "Recruiter"
  ];
  
  function checkForSearchWords(element) {
       let occupation = $(element).find(".discover-person-card__occupation").text(); 
    SEARCH_WORDS.forEach((e) => {
      if(occupation.includes(e)) {
        let $li = $(element).closest('li');
        let $button = $($li.find('[data-control-name="invite"]'));
        $button.css("color","green");
        $button.css("box-shadow","inset 0 0 0 2px green");
        $button.find(".artdeco-button__text").text("Match!");
        $li.css("box-shadow","0 0 0 2px green");
      }
    });
  }
  
  function checkForAutoClick(element) {
    let occupation = $(element).find(".discover-person-card__occupation").text(); 
    AUTO_CLICK.forEach((e) => {
      if(occupation.includes(e)) {
        let $li = $(element).closest('li');
        let $button = $($li.find('[data-control-name="invite"]'));
        $button.click();
      }
    });
  }
  
  function callback(mutationList, observer) {
    mutationList.forEach((mutation) => {
      mutation.addedNodes.forEach((node) =>{
        if(node.tagName == "LI"){
          checkForSearchWords(node);
          checkForAutoClick(node);
        }
      });
    });
  }
  
  $(document).ready(function(){
    console.log("LinkedIn Spotter has started!");
    const targetNode = $(".discover-entity-list").get(0);
    const config = {childList:true , subtree:false};
    let observer = new MutationObserver(callback);
      observer.observe(targetNode, config);
  });