Explorar o código

fix: replace broken CDN qrcode with npm import

gangvy hai 5 meses
pai
achega
7cfb6be96e
Modificáronse 4 ficheiros con 32 adicións e 27 borrados
  1. 11 0
      package-lock.json
  2. 1 0
      package.json
  3. 20 26
      src/app/app.ts
  4. 0 1
      src/index.html

+ 11 - 0
package-lock.json

@@ -23,6 +23,7 @@
         "@angular/cli": "^20.0.4",
         "@angular/compiler-cli": "^20.0.0",
         "@types/jasmine": "~5.1.0",
+        "@types/qrcode": "^1.5.6",
         "jasmine-core": "~5.7.0",
         "karma": "~6.4.0",
         "karma-chrome-launcher": "~3.2.0",
@@ -3523,6 +3524,16 @@
         "undici-types": "~7.19.0"
       }
     },
+    "node_modules/@types/qrcode": {
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz",
+      "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/ws": {
       "version": "8.18.1",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",

+ 1 - 0
package.json

@@ -35,6 +35,7 @@
     "@angular/cli": "^20.0.4",
     "@angular/compiler-cli": "^20.0.0",
     "@types/jasmine": "~5.1.0",
+    "@types/qrcode": "^1.5.6",
     "jasmine-core": "~5.7.0",
     "karma": "~6.4.0",
     "karma-chrome-launcher": "~3.2.0",

+ 20 - 26
src/app/app.ts

@@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
 import { CommonModule } from '@angular/common';
 import { LoginModalComponent } from './login-modal.component';
 
-declare var QRCode: any;
+import QRCode from 'qrcode';
 
 // ═══════════════════════════════════════════════════
 // APIG Payment Page — Angular Component
@@ -473,33 +473,27 @@ export class App implements OnInit {
     canvas.width = 200;
     canvas.height = 200;
 
-    if (typeof QRCode !== 'undefined' && QRCode?.toCanvas) {
-      try {
-        await QRCode.toCanvas(canvas, url, {
-          width: 200,
-          margin: 0,
-          color: { dark: '#000000', light: '#ffffff' }
-        });
-        console.log('QR rendered via canvas');
-        return;
-      } catch (e) {
-        console.warn('QRCode.toCanvas failed:', e);
+    try {
+      await QRCode.toCanvas(canvas, url, {
+        width: 200,
+        margin: 0,
+        color: { dark: '#000000', light: '#ffffff' }
+      });
+      console.log('QR rendered via canvas');
+    } catch (e) {
+      console.warn('QRCode.toCanvas failed, using img fallback:', e);
+      canvas.style.display = 'none';
+      const wrapper = canvas.parentElement;
+      if (wrapper) {
+        const img = document.createElement('img');
+        img.src = 'https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=' + encodeURIComponent(url);
+        img.width = 200;
+        img.height = 200;
+        img.alt = 'Payment QR Code';
+        img.style.display = 'block';
+        wrapper.appendChild(img);
       }
     }
-
-    // Fallback: img
-    console.log('Using img fallback for QR');
-    canvas.style.display = 'none';
-    const wrapper = canvas.parentElement;
-    if (wrapper) {
-      const img = document.createElement('img');
-      img.src = 'https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=' + encodeURIComponent(url);
-      img.width = 200;
-      img.height = 200;
-      img.alt = 'Payment QR Code';
-      img.style.display = 'block';
-      wrapper.appendChild(img);
-    }
   }
 
   cancelPayment(): void {

+ 0 - 1
src/index.html

@@ -6,7 +6,6 @@
   <base href="/">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="icon" type="image/x-icon" href="favicon.ico">
-  <script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.4/build/qrcode.min.js"></script>
 </head>
 <body>
   <app-root></app-root>