diff --git a/extension/js/content_scripts/webmail/generic/webmail-element-replacer.ts b/extension/js/content_scripts/webmail/generic/webmail-element-replacer.ts index db51b273ac9..044e101f120 100644 --- a/extension/js/content_scripts/webmail/generic/webmail-element-replacer.ts +++ b/extension/js/content_scripts/webmail/generic/webmail-element-replacer.ts @@ -14,6 +14,7 @@ export abstract class WebmailElementReplacer { public abstract reinsertReplyBox: (replyMsgId: string) => void; public abstract scrollToReplyBox: (replyMsgId: string) => void; public abstract scrollToCursorInReplyBox: (replyMsgId: string, cursorOffsetTop: number) => void; + public abstract addSecureActionsToMessageMenu: () => void; public runIntervalFunctionsPeriodically = () => { const intervalFunctions = this.getIntervalFunctions(); diff --git a/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts b/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts index f2775edc7f4..56add5bfd16 100644 --- a/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts +++ b/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts @@ -147,11 +147,20 @@ export class GmailElementReplacer extends WebmailElementReplacer { } }; + public addSecureActionsToMessageMenu = () => { + $(document).on('click', 'div.aHU.hx', event => { + const $actionsBtn = $(event.currentTarget).find(this.sel.msgActionsBtn); + if ($actionsBtn.length && !$('.action_menu_message_button').length) { + this.addMenuButton('reply', '#r'); + this.addMenuButton('forward', '#r3'); + } + }); + }; + private everything = () => { this.replaceArmoredBlocks().catch(Catch.reportErr); this.replaceAttachments().catch(Catch.reportErr); this.replaceComposeDraftLinks(); - this.replaceActionsMenu(); this.replaceConvoBtns(); this.replaceStandardReplyBox().catch(Catch.reportErr); this.evaluateStandardComposeRecipients().catch(Catch.reportErr); @@ -290,13 +299,6 @@ export class GmailElementReplacer extends WebmailElementReplacer { ); }; - private replaceActionsMenu = () => { - if ($('.action_menu_message_button').length <= 0) { - this.addMenuButton('reply', '#r'); - this.addMenuButton('forward', '#r3'); - } - }; - private replaceConvoBtns = (force = false) => { const convoUpperIconsContainer = $('div.hj:visible'); const convoUpperIcons = $('span.pYTkkf-JX-ank-Rtc0Jf'); diff --git a/extension/js/content_scripts/webmail/gmail/gmail-webmail-startup.ts b/extension/js/content_scripts/webmail/gmail/gmail-webmail-startup.ts index 583af380062..a6992cba791 100644 --- a/extension/js/content_scripts/webmail/gmail/gmail-webmail-startup.ts +++ b/extension/js/content_scripts/webmail/gmail/gmail-webmail-startup.ts @@ -45,6 +45,7 @@ export class GmailWebmailStartup { const messageRenderer = await MessageRenderer.newInstance(acctEmail, new Gmail(acctEmail), relayManager, factory); this.replacer = new GmailElementReplacer(factory, clientConfiguration, acctEmail, messageRenderer, injector, notifications, relayManager); await notifications.showInitial(acctEmail); + this.replacer.addSecureActionsToMessageMenu(); this.replacer.runIntervalFunctionsPeriodically(); }; diff --git a/extension/js/content_scripts/webmail/thunderbird/thunderbird-element-replacer.ts b/extension/js/content_scripts/webmail/thunderbird/thunderbird-element-replacer.ts index 039f78d5c62..ca24d40322d 100644 --- a/extension/js/content_scripts/webmail/thunderbird/thunderbird-element-replacer.ts +++ b/extension/js/content_scripts/webmail/thunderbird/thunderbird-element-replacer.ts @@ -19,6 +19,7 @@ export class ThunderbirdElementReplacer extends WebmailElementReplacer { public reinsertReplyBox: (replyMsgId: string) => void; public scrollToReplyBox: (replyMsgId: string) => void; public scrollToCursorInReplyBox: (replyMsgId: string, cursorOffsetTop: number) => void; + public addSecureActionsToMessageMenu: () => void; private emailBodyFromThunderbirdMail: string; public getIntervalFunctions = (): IntervalFunction[] => {