From 51d2da399eb5155043fab495e85b58f4beb70586 Mon Sep 17 00:00:00 2001
From: regalijan <r@regalijan.com>
Date: Thu, 19 Oct 2023 16:49:36 -0400
Subject: [PATCH] First pass at allowing image pasting on the infraction modal

---
 components/NewInfractionModal.tsx | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/components/NewInfractionModal.tsx b/components/NewInfractionModal.tsx
index 6c3c51e..3a13331 100644
--- a/components/NewInfractionModal.tsx
+++ b/components/NewInfractionModal.tsx
@@ -14,6 +14,32 @@ import {
 } from "@chakra-ui/react";
 
 export default function (props: { isOpen: boolean; onClose: () => void }) {
+  addEventListener("paste", (e) => {
+    if (!props.isOpen) return;
+
+    const evidenceElement = document.getElementById(
+      "evidence"
+    ) as HTMLInputElement;
+
+    if (!evidenceElement.files && e.clipboardData?.files) {
+      evidenceElement.files = e.clipboardData.files;
+      return;
+    }
+
+    if (!evidenceElement.files || !e.clipboardData?.files.length) return;
+
+    if (typeof window["DataTransfer"] === "undefined")
+      return alert("Your browser is too old to paste images in.");
+
+    const dataTransfer = new DataTransfer();
+
+    for (const file of evidenceElement.files) dataTransfer.items.add(file);
+
+    dataTransfer.items.add(e.clipboardData.files[0]);
+
+    evidenceElement.files = dataTransfer.files;
+  });
+
   function reset() {
     (
       document.getElementById("punishment") as unknown as HTMLSelectElement