diff --git a/browser-extensions/chrome/contentScript.ts b/browser-extensions/chrome/contentScript.ts
index 6b45a8cb5..4a14b2972 100644
--- a/browser-extensions/chrome/contentScript.ts
+++ b/browser-extensions/chrome/contentScript.ts
@@ -37,11 +37,12 @@ window.addEventListener('popstate', () => {
});
/**
- * Listen for messages from the background script.
+ * Listen for messages from the background script context menu
+ * to open the AliasVault popup on a specific element.
*/
-window.addEventListener('message', (event) => {
- if (event.data.type === 'OPEN_ALIASVAULT_POPUP') {
- const elementIdentifier = event.data.elementIdentifier;
+chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
+ if (message.type === 'OPEN_ALIASVAULT_POPUP') {
+ const elementIdentifier = message.elementIdentifier;
if (elementIdentifier) {
const target = document.getElementById(elementIdentifier) ||
document.getElementsByName(elementIdentifier)[0];
@@ -51,4 +52,6 @@ window.addEventListener('message', (event) => {
}
}
}
+ // Must return true if response is sent asynchronously
+ return true;
});
\ No newline at end of file
diff --git a/browser-extensions/chrome/src/app/pages/CredentialsList.tsx b/browser-extensions/chrome/src/app/pages/CredentialsList.tsx
index ec1f2ecfb..898994268 100644
--- a/browser-extensions/chrome/src/app/pages/CredentialsList.tsx
+++ b/browser-extensions/chrome/src/app/pages/CredentialsList.tsx
@@ -165,22 +165,25 @@ const CredentialsList: React.FC = () => {
) : (
{filteredCredentials.map(cred => (
- - navigate(`/credentials/${cred.Id}`)}
- className="p-2 border dark:border-gray-600 rounded flex items-center bg-white dark:bg-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700">
-
{
- const target = e.target as HTMLImageElement;
- target.src = '/assets/images/service-placeholder.webp';
- }}
- />
-
-
{cred.ServiceName}
-
{cred.Username}
-
+ -
+
))}
diff --git a/browser-extensions/chrome/src/background/ContextMenu.ts b/browser-extensions/chrome/src/background/ContextMenu.ts
index 1fa55cb70..d8eee20c0 100644
--- a/browser-extensions/chrome/src/background/ContextMenu.ts
+++ b/browser-extensions/chrome/src/background/ContextMenu.ts
@@ -56,9 +56,19 @@ export function handleContextMenuClick(info: chrome.contextMenus.OnClickData, ta
}
if (info.menuItemId === "aliasvault-activate-form" && tab?.id) {
+ // First get the active element's identifier
chrome.scripting.executeScript({
target: { tabId: tab.id },
- func: activateAliasVaultForm,
+ func: getActiveElementIdentifier,
+ }, (results) => {
+ const elementIdentifier = results[0]?.result;
+ if (elementIdentifier) {
+ // Then send message to content script
+ chrome.tabs.sendMessage(tab.id, {
+ type: 'OPEN_ALIASVAULT_POPUP',
+ elementIdentifier
+ });
+ }
});
}
}
@@ -96,16 +106,10 @@ function copyPasswordToClipboard(generatedPassword: string) : void {
/**
* Activate AliasVault for the active input element.
*/
-function activateAliasVaultForm() : void {
+function getActiveElementIdentifier() : string {
const target = document.activeElement;
if (target instanceof HTMLInputElement) {
- // Get the element's identifier (id or name)
- const elementIdentifier = target.id || target.name || '';
- if (elementIdentifier) {
- window.postMessage({
- type: 'OPEN_ALIASVAULT_POPUP',
- elementIdentifier
- }, '*');
- }
+ return target.id || target.name || '';
}
+ return '';
}
\ No newline at end of file