initial script

This commit is contained in:
Matias Carpintini
2025-03-20 16:16:04 -03:00
commit 2edb9a45d3
5 changed files with 156 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

59
README.md Normal file
View File

@@ -0,0 +1,59 @@
# WhatsApp Heart Favorites
A Chrome extension that automatically stars messages when you react with a heart emoji on WhatsApp Web.
## Description
WhatsApp Heart Favorites enhances your WhatsApp Web experience by automatically starring messages that you react to with a heart emoji (❤️). This makes it easier to keep track of important messages without having to manually star them.
## Features
- Automatically stars messages when you add a heart reaction
- Works seamlessly with WhatsApp Web
- Lightweight and unobtrusive
## Installation
### From Chrome Web Store
1. Visit the Chrome Web Store (link to be added)
2. Click "Add to Chrome"
3. Confirm the installation
### Manual Installation
1. Download or clone this repository
2. Open Chrome and navigate to `chrome://extensions/`
3. Enable "Developer mode" in the top-right corner
4. Click "Load unpacked" and select the downloaded folder
5. The extension should now be installed and active
## Usage
1. Open WhatsApp Web (https://web.whatsapp.com/)
2. React to any message with a heart emoji (❤️)
3. The message will be automatically starred
## How It Works
The extension injects a script into WhatsApp Web that:
1. Accesses WhatsApp's internal JavaScript modules
2. Listens for reaction events
3. When a heart reaction is detected, it triggers the star message function
## Permissions
This extension requires the following permissions:
- `activeTab`: To interact with the WhatsApp Web page
- `scripting`: To inject scripts into the page
- Access to `https://web.whatsapp.com/*`: To function on WhatsApp Web
## Development
The extension consists of:
- `manifest.json`: Extension configuration
- `content-script.js`: Detects when WhatsApp Web is loaded and injects the main script
- `injected.js`: Contains the core functionality for detecting reactions and starring messages

20
content-script.js Normal file
View File

@@ -0,0 +1,20 @@
// This script runs in the context of the web page
function injectScript(filePath) {
const script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", chrome.runtime.getURL(filePath));
document.documentElement.appendChild(script);
script.remove();
}
// Check if WhatsApp Web is loaded
function checkWhatsAppLoaded() {
if (document.querySelector("h1")) {
clearInterval(checkInterval);
injectScript("injected.js");
console.log("WhatsApp Heart Favorites extension loaded");
}
}
// Check periodically if WhatsApp is loaded
const checkInterval = setInterval(checkWhatsAppLoaded, 1000);

56
injected.js Normal file
View File

@@ -0,0 +1,56 @@
(function () {
console.log("WhatsApp Heart Favorites script - Candidate Test");
// Initialize WhatsApp Store access
function initializeWAStore() {
// Wait for WhatsApp to initialize its modules
const storeCheckInterval = setInterval(() => {
if (window.Store) {
clearInterval(storeCheckInterval);
console.log("WhatsApp store already initialized");
setupReactionListener();
return;
}
if (typeof window.require === "function") {
try {
// Load the essential modules
window.Store = Object.assign({}, window.require("WAWebCollections"));
window.Store.Cmd = window.require("WAWebCmd").Cmd;
clearInterval(storeCheckInterval);
console.log("WhatsApp store initialized");
setupReactionListener();
} catch (error) {
console.error("Error initializing WhatsApp store:", error);
}
}
}, 1000);
}
// Set up listeners for heart reactions
function setupReactionListener() {
// TODO: Implement the reaction listener here
//
// CANDIDATE TASK: Write code that will star a message when you react to it with a heart emoji
//
// Hints:
// 1. You'll need to listen for reaction events using Store.Reactions
// 2. Check if the reaction is a heart emoji (❤️)
// 3. Use Store.Msg to get the message object
// 4. Use Store.Chat to get the chat object
// 5. Use Store.Cmd.sendStarMsgs to star the message
//
// Your code should detect when the user adds a heart reaction and then
// automatically star that message in the chat
//
// TIP: You can inspect WhatsApp modules directly in your Chrome console by typing:
// require("WAWebCmd") or any other module name. This will show you available methods,
// _events, and other properties that might be helpful for this task.
console.log("Reaction listener needs to be implemented");
}
// Initialize
initializeWAStore();
})();

21
manifest.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "WhatsApp Heart Favorites",
"description": "Automatically star messages when you react with a heart emoji",
"version": "1.0.0",
"manifest_version": 3,
"permissions": ["activeTab", "scripting"],
"host_permissions": ["https://web.whatsapp.com/*"],
"content_scripts": [
{
"matches": ["https://web.whatsapp.com/*"],
"run_at": "document_end",
"js": ["content-script.js"]
}
],
"web_accessible_resources": [
{
"resources": ["injected.js"],
"matches": ["https://web.whatsapp.com/*"]
}
]
}