diff --git a/js/privatebin.js b/js/privatebin.js
index c0bfb32e..461b62c6 100644
--- a/js/privatebin.js
+++ b/js/privatebin.js
@@ -2101,8 +2101,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
// show preview
PasteViewer.setText($message.val());
if (AttachmentViewer.hasAttachmentData()) {
- let attachmentData = AttachmentViewer.getAttachmentData() || AttachmentViewer.getAttachmentLink().attr('href');
- AttachmentViewer.handleAttachmentPreview(AttachmentViewer.getAttachmentPreview(), attachmentData);
+ const attachment = AttachmentViewer.getAttachment();
+ AttachmentViewer.handleBlobAttachmentPreview(
+ AttachmentViewer.getAttachmentPreview(),
+ attachment[0], attachment[1]
+ );
}
PasteViewer.run();
@@ -2743,85 +2746,13 @@ jQuery.PrivateBin = (function($, RawDeflate) {
attachmentData = dataURL;
if (Editor.isPreview()) {
- me.handleAttachmentPreview($attachmentPreview, dataURL);
+ me.setAttachment(dataURL, loadedFile.name || '');
$attachmentPreview.removeClass('hidden');
}
};
fileReader.readAsDataURL(loadedFile);
}
- /**
- * handle the preview of files that can either be an image, video, audio or pdf element
- *
- * @name AttachmentViewer.handleAttachmentPreview
- * @function
- * @argument {jQuery} $targetElement element where the preview should be appended
- * @argument {string} file as a data URL
- */
- me.handleAttachmentPreview = function ($targetElement, data) {
- if (data) {
- // source: https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsDataURL()
- const mimeType = data.slice(
- data.indexOf('data:') + 5,
- data.indexOf(';base64,')
- );
-
- attachmentHasPreview = true;
- if (mimeType.match(/image\//i)) {
- $targetElement.html(
- $(document.createElement('img'))
- .attr('src', data)
- .attr('class', 'img-thumbnail')
- );
- } else if (mimeType.match(/video\//i)) {
- $targetElement.html(
- $(document.createElement('video'))
- .attr('controls', 'true')
- .attr('autoplay', 'true')
- .attr('class', 'img-thumbnail')
-
- .append($(document.createElement('source'))
- .attr('type', mimeType)
- .attr('src', data))
- );
- } else if (mimeType.match(/audio\//i)) {
- $targetElement.html(
- $(document.createElement('audio'))
- .attr('controls', 'true')
- .attr('autoplay', 'true')
-
- .append($(document.createElement('source'))
- .attr('type', mimeType)
- .attr('src', data))
- );
- } else if (mimeType.match(/\/pdf/i)) {
- // PDFs are only displayed if the filesize is smaller than about 1MB (after base64 encoding).
- // Bigger filesizes currently cause crashes in various browsers.
- // See also: https://code.google.com/p/chromium/issues/detail?id=69227
-
- // Firefox crashes with files that are about 1.5MB
- // The performance with 1MB files is bearable
- if (data.length > 1398488) {
- Alert.showError('File too large, to display a preview. Please download the attachment.'); //TODO: is this error really necessary?
- return;
- }
-
- // Fallback for browsers, that don't support the vh unit
- const clientHeight = $(window).height();
-
- $targetElement.html(
- $(document.createElement('embed'))
- .attr('src', data)
- .attr('type', 'application/pdf')
- .attr('class', 'pdfPreview')
- .css('height', clientHeight)
- );
- } else {
- attachmentHasPreview = false;
- }
- }
- };
-
/**
* handle the preview of files decoded to blob that can either be an image, video, audio or pdf element
*
diff --git a/tpl/bootstrap.php b/tpl/bootstrap.php
index 0e5d55bb..48001f12 100644
--- a/tpl/bootstrap.php
+++ b/tpl/bootstrap.php
@@ -72,7 +72,7 @@ if ($MARKDOWN):
endif;
?>
-
+
diff --git a/tpl/page.php b/tpl/page.php
index f8905ff5..512df89a 100644
--- a/tpl/page.php
+++ b/tpl/page.php
@@ -50,7 +50,7 @@ if ($MARKDOWN):
endif;
?>
-
+