From e161582c4af3b901c9d727fdf9b876554170c11f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=B6hm?= Date: Wed, 27 May 2026 02:18:24 +0200 Subject: [PATCH] Import qr-scanner the rails way. --- app/javascript/controllers/scanner_controller.js | 10 ++++++++-- app/views/layouts/application.html.erb | 3 --- config/importmap.rb | 1 + {public => vendor/javascript}/qr-scanner.js | 0 4 files changed, 9 insertions(+), 5 deletions(-) rename {public => vendor/javascript}/qr-scanner.js (100%) diff --git a/app/javascript/controllers/scanner_controller.js b/app/javascript/controllers/scanner_controller.js index f26bd4d..3c0ab13 100644 --- a/app/javascript/controllers/scanner_controller.js +++ b/app/javascript/controllers/scanner_controller.js @@ -1,5 +1,9 @@ import { Controller } from "@hotwired/stimulus"; +//import QrScanner from "qr-scanner"; // Rails findet jetzt über die Importmap deine Datei unter vendor/javascript/ +// KORREKTUR: Lädt das Modul ohne Namens-Zuweisung, da die Legacy-Datei keinen Default-Export besitzt +import "qr-scanner"; + export default class extends Controller { static targets = ["input", "preview", "modal"]; @@ -13,7 +17,9 @@ export default class extends Controller { const videoElement = this.previewTarget; - // Greift fehlerfrei auf die Klasse aus dem public-Ordner zu + // Scanner initialisieren (Direkt über die importierte Klasse ohne 'window.') + //this.qrScanner = new QrScanner( + // Greift jetzt absolut fehlerfrei auf die geladene Klasse zu this.qrScanner = new window.QrScanner( videoElement, (result) => { this.handleScanSuccess(result.data); }, @@ -26,8 +32,8 @@ export default class extends Controller { ); this.qrScanner.start().catch((err) => { + alert("Kamera-Zugriff blockiert! Bitte prüfe die Browser-Berechtigungen."); console.error("Kamera-Fehler:", err); - alert("Kamera konnte nicht gestartet werden."); this.modalTarget.classList.add("hidden"); }); } diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index b12c3e6..c9a97ec 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -16,9 +16,6 @@ - - - <%# Includes all stylesheet files in app/assets/stylesheets %> <%= stylesheet_link_tag :app, "data-turbo-track": "reload" %> <%= javascript_importmap_tags %> diff --git a/config/importmap.rb b/config/importmap.rb index 909dfc5..d2dc711 100644 --- a/config/importmap.rb +++ b/config/importmap.rb @@ -5,3 +5,4 @@ pin "@hotwired/turbo-rails", to: "turbo.min.js" pin "@hotwired/stimulus", to: "stimulus.min.js" pin "@hotwired/stimulus-loading", to: "stimulus-loading.js" pin_all_from "app/javascript/controllers", under: "controllers" +pin "qr-scanner", to: "qr-scanner.js" diff --git a/public/qr-scanner.js b/vendor/javascript/qr-scanner.js similarity index 100% rename from public/qr-scanner.js rename to vendor/javascript/qr-scanner.js