Greasy Fork is available in English.
Script to help you stay 🅿️ushin 🅿️ on WhatsappWeb
// ==UserScript==
// @name P Pusher
// @namespace http://tampermonkey.net/
// @version 1.1.2
// @description Script to help you stay 🅿️ushin 🅿️ on WhatsappWeb
// @author Arnav Menon
// @license MIT
// @match https://web.whatsapp.com/*
// @run-at document-start
// @grant GM_setValue
// @grant GM_getValue
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js
// ==/UserScript==
(function() {
'use strict';
var $ = $ || window.$,
addListenerInterval = null,
p_string = '',
chat_name = '',
is_debug = true;
//Log debug
var debugMessage = function(mes){
if(is_debug){
console.info(mes);
}
};
//ALert error
var showError = function(err){
alert(err);
console.error(err);
};
//Alter user input
var onInput = function(){
var _this = $(this);
var _input = $.trim(_this.text());
var p_emoji = String.fromCodePoint(0x1F17F);
p_string=_input.replace(/[pP]/g, p_emoji);
_this.val(p_string);
};
//Check for Enter key press
var onEnterKeyPressed = function( event ) {
if (event.which == 13 ) {
event.preventDefault();
var _this = $(this);
debugMessage('Message after pushin p: '+p_string);
sendP(_this, p_string);
}
};
//Send altered message
var sendP = function(inputTarget, message){
inputTarget.focus();
document.execCommand("selectAll");
document.execCommand("insertText", false, message);
if($('footer button:has(span):last span').data('icon') == 'send'){
$('footer button:has(span):last').click();
}
else{
showError('Not able to push P');
}
}
//Bind functions to push p
var addPushinP = function(){
if(!chat_name){
showError('Cannot get selected chatbox');
return;
}
var $_input_body = $('footer div.copyable-text.selectable-text');
$_input_body
.on('input', onInput)
.on('keydown', onEnterKeyPressed);
};
//Add listener when user selects new chatbox in WAweb
addListenerInterval = setInterval(function(){
var $chat_sidebar_div = $('#pane-side');
if($chat_sidebar_div.length){
var contacts = document.querySelector('div[role="grid"]').children;
if(!contacts || contacts.length === 0){
showError('Not able to get chatbox list from sidebar');
return;
}
var chat_class = contacts[0].className;
$('#pane-side').on('click','div.'+ chat_class, function(){
var pre_chat_name = '';
$(this).find('span').each(function(i,x){
if(x.hasAttribute('title')) {
pre_chat_name = x.title;
return false;
}
});
if(pre_chat_name !== ''){
chat_name = encodeURI(pre_chat_name);
debugMessage('Chat selected: ');
debugMessage(chat_name);
}
else{showError('Not able to get selected chatbox');}
addPushinP();
});
clearInterval(addListenerInterval);
}
}, 1000);
})();