// ==UserScript==
// @name Fix Gmail Email Search
// @namespace https://github.com/gserafini/fix-gmail-email-search-userscript/
// @version 1.3.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==
(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:"]')
.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 + "...");
}
});
}
});
})();