mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-10-06 03:14:39 +08:00
[message-list] Add support for double-clicking inline images to open
Summary: See title Test Plan: Run locally, verify that double clicking inline images opens them Reviewers: evan, juan, spang Reviewed By: juan, spang Differential Revision: https://phab.nylas.com/D3963
This commit is contained in:
parent
9cf703c6cd
commit
00299e446d
2 changed files with 10 additions and 3 deletions
|
@ -5,7 +5,7 @@ import {EventedIFrame} from 'nylas-component-kit';
|
||||||
import {Utils, QuotedHTMLTransformer, MessageStore} from 'nylas-exports';
|
import {Utils, QuotedHTMLTransformer, MessageStore} from 'nylas-exports';
|
||||||
import {autolink} from './autolinker';
|
import {autolink} from './autolinker';
|
||||||
import {autoscaleImages} from './autoscale-images';
|
import {autoscaleImages} from './autoscale-images';
|
||||||
import {addInlineDownloadPrompts} from './inline-download-prompts';
|
import {addInlineImageListeners} from './inline-image-listeners';
|
||||||
import EmailFrameStylesStore from './email-frame-styles-store';
|
import EmailFrameStylesStore from './email-frame-styles-store';
|
||||||
|
|
||||||
export default class EmailFrame extends React.Component {
|
export default class EmailFrame extends React.Component {
|
||||||
|
@ -70,7 +70,7 @@ export default class EmailFrame extends React.Component {
|
||||||
|
|
||||||
autolink(doc, {async: true});
|
autolink(doc, {async: true});
|
||||||
autoscaleImages(doc);
|
autoscaleImages(doc);
|
||||||
addInlineDownloadPrompts(doc);
|
addInlineImageListeners(doc);
|
||||||
|
|
||||||
for (const extension of MessageStore.extensions()) {
|
for (const extension of MessageStore.extensions()) {
|
||||||
if (!extension.renderedMessageBodyIntoDocument) {
|
if (!extension.renderedMessageBodyIntoDocument) {
|
||||||
|
|
|
@ -26,6 +26,13 @@ function _runOnImageNode(node) {
|
||||||
node.style.display = 'none';
|
node.style.display = 'none';
|
||||||
node.parentNode.insertBefore(downloadButton, node);
|
node.parentNode.insertBefore(downloadButton, node);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
node.addEventListener('load', () => {
|
||||||
|
const file = JSON.parse(safeDecode(node.dataset.nylasFile), Utils.registeredObjectReviver);
|
||||||
|
node.addEventListener('dblclick', () => {
|
||||||
|
Actions.fetchAndOpenFile(file);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +40,7 @@ export function encodedAttributeForFile(file) {
|
||||||
return safeEncode(JSON.stringify(file, Utils.registeredObjectReplacer));
|
return safeEncode(JSON.stringify(file, Utils.registeredObjectReplacer));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addInlineDownloadPrompts(doc) {
|
export function addInlineImageListeners(doc) {
|
||||||
const imgTagWalker = document.createTreeWalker(doc.body, NodeFilter.SHOW_ELEMENT, {
|
const imgTagWalker = document.createTreeWalker(doc.body, NodeFilter.SHOW_ELEMENT, {
|
||||||
acceptNode: (node) => {
|
acceptNode: (node) => {
|
||||||
if (node.nodeName === 'IMG') {
|
if (node.nodeName === 'IMG') {
|
Loading…
Add table
Reference in a new issue