DEV: Remove old _firefoxPastingHack

DEV: Remove old _firefoxPastingHack

diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6
index 32058c6..1f08e21 100644
--- a/app/assets/javascripts/discourse/components/composer-editor.js.es6
+++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6
@@ -760,106 +760,6 @@ export default Ember.Component.extend({
         $("#mobile-uploader").click();
       });
     }
-
-    this._firefoxPastingHack();
-  },
-
-  // Believe it or not pasting an image in Firefox doesn't work without this code
-  _firefoxPastingHack() {
-    const uaMatch = navigator.userAgent.match(/Firefox\/(\d+)\.\d/);
-    if (uaMatch) {
-      let uaVersion = parseInt(uaMatch[1]);
-      if (uaVersion < 24 || 50 <= uaVersion) {
-        // The hack is no longer required in FF 50 and later.
-        // See: https://bugzilla.mozilla.org/show_bug.cgi?id=906420
-        return;
-      }
-      this.$().append(
-        Ember.$(
-          "<div id='contenteditable' contenteditable='true' style='height: 0; width: 0; overflow: hidden'></div>"
-        )
-      );
-      this.$("textarea").off("keydown.contenteditable");
-      this.$("textarea").on("keydown.contenteditable", event => {
-        // Catch Ctrl+v / Cmd+v and hijack focus to a contenteditable div. We can't
-        // use the onpaste event because for some reason the paste isn't resumed
-        // after we switch focus, probably because it is being executed too late.
-        if ((event.ctrlKey || event.metaKey) && event.keyCode === 86) {
-          // Save the current textarea selection.
-          const textarea = this.$("textarea")[0];
-          const selectionStart = textarea.selectionStart;
-          const selectionEnd = textarea.selectionEnd;
-
-          // Focus the contenteditable div.
-          const contentEditableDiv = this.$("#contenteditable");
-          contentEditableDiv.focus();
-
-          // The paste doesn't finish immediately and we don't have any onpaste
-          // event, so wait for 100ms which _should_ be enough time.
-          Ember.run.later(() => {
-            const pastedImg = contentEditableDiv.find("img");
-
-            if (pastedImg.length === 1) {
-              pastedImg.remove();
-            }
-
-            // For restoring the selection.
-            textarea.focus();
-            const textareaContent = $(textarea).val(),
-              startContent = textareaContent.substring(0, selectionStart),
-              endContent = textareaContent.substring(selectionEnd);
-
-            const restoreSelection = function(pastedText) {
-              $(textarea).val(startContent + pastedText + endContent);
-              textarea.selectionStart = selectionStart + pastedText.length;
-              textarea.selectionEnd = textarea.selectionStart;
-            };
-
-            if (contentEditableDiv.html().length > 0) {
-              // If the image wasn't the only pasted content we just give up and
-              // fall back to the original pasted text.
-              contentEditableDiv.find("br").replaceWith("\n");
-              restoreSelection(contentEditableDiv.text());
-            } else {
-              // Depending on how the image is pasted in, we may get either a
-              // normal URL or a data URI. If we get a data URI we can convert it
-              // to a Blob and upload that, but if it is a regular URL that
-              // operation is prevented for security purposes. When we get a regular
-              // URL let's just create an <img> tag for the image.
-              const imageSrc = pastedImg.attr("src");
-
-              if (imageSrc.match(/^data:image/)) {
-                // Restore the cursor position, and remove any selected text.
-                restoreSelection("");
-
-                // Create a Blob to upload.
-                const image = new Image();
-                image.onload = () => {
-                  // Create a new canvas.
-                  const canvas = document.createElementNS(
-                    "http://www.w3.org/1999/xhtml",
-                    "canvas"
-                  );
-                  canvas.height = image.height;
-                  canvas.width = image.width;
-                  const ctx = canvas.getContext("2d");
-                  ctx.drawImage(image, 0, 0);
-
-                  canvas.toBlob(blob =>
-                    this.$().fileupload("add", { files: blob })
-                  );
-                };
-                image.src = imageSrc;
-              } else {
-                restoreSelection("<img src='" + imageSrc + "'>");
-              }
-            }
-
-            contentEditableDiv.html("");
-          }, 100);
-        }
-      });
-    }
   },
 
   @on("willDestroyElement")

GitHub
sha: f4008305

2 Likes

This commit has been mentioned on Discourse Meta. There might be relevant details there: