// ==UserScript== // @name Fix Gmail Email Search // @namespace https://github.com/gserafini/fix-gmail-email-search-userscript/ // @version 1.4.2 // @description Improved version of the old "Emails" quick search functionality in Gmail, one click to view all emails you've sent or received from any address // @author Gabriel Serafini // @license MIT // @donate If you like this, PayPal a little love to gserafini@gmail.com // @screenshot https://raw.githubusercontent.com/gserafini/fix-gmail-email-search-userscript/master/fix-gmail-email-search-screenshot.png // @icon https://raw.githubusercontent.com/gserafini/fix-gmail-email-search-userscript/master/SearchEmails_icon.png // @match *://mail.google.com/* // @match *://contacts.google.com/widget/hovercard/* // @match *://gmail.com/* // @include *gmail.com/* // @include *mail.google.com/* // @include *contacts.google.com/widget/hovercard/* // @grant none // @require https://code.jquery.com/jquery-3.3.1.min.js // @downloadURL none // ==/UserScript== var $ = window.jQuery; (function() { 'use strict'; $(function() { // Handler for .ready() called. $('body').prepend(''); function get_email_search_icon_link(email_address) { var icon = '' + '' + ''; return icon; } function insert_email_search_icon() { // This may change over time, so will need to update it periodically most likely $('.gD').not('.email_search_icon+.gD') .each( function (index) { // console.log("Found email for possible searching: " + $(this).attr('email')); $(this) .before(get_email_search_icon_link($(this).attr('email'))) } ); // Find all emails in pop-up contact cards and also inside emails $('a[href^="mailto:"]').not('.email_search_icon+a[href^="mailto:"]').not('div[contenteditable="true"] a[href^="mailto:"]') .each( function (index) { var email_address = $(this).attr('href').replace("mailto:",""); // console.log("Found email for possible searching: " + email_address); $(this) .before(get_email_search_icon_link(email_address)); } ); } // Poll periodically for newly created divs setInterval(insert_email_search_icon, 300); $('body').on('click', '.email_search_icon', function() { event.stopPropagation(); if (window.self==window.top) { $('input[name="q"]').val($(this).attr('email')); $('button[aria-label="Search Mail"]').click(); // console.log("Search icon clicked! Searching for " + $(this).attr('email') + "..."); } else { // console.log("Search email for " + $(this).attr('email') + " link clicked in hovercard"); window.parent.postMessage("searchForEmail="+$(this).attr('email'),"*"); } }); if (window.self==window.top) { $(window).on("message onmessage", function(e) { var event = e.originalEvent; if (event.origin === "https://contacts.google.com" && event.data.indexOf("searchForEmail=") != -1) { // console.log(event.data); var email_address = event.data; email_address = email_address.replace("searchForEmail=",""); // console.log("Found email to search for: " + email_address); $('input[name="q"]').val(email_address); $('button[aria-label="Search Mail"]').click(); // console.log("Search icon clicked in hovercard! Searching for " + email_address + "..."); } }); } }); })();