mirror of
https://github.com/FranP-code/heart-save.git
synced 2025-10-13 00:13:54 +00:00
initial script
This commit is contained in:
59
README.md
Normal file
59
README.md
Normal 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
20
content-script.js
Normal 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
56
injected.js
Normal 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
21
manifest.json
Normal 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/*"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user