chore: change logging level to debug for debug messages
This commit is contained in:
@@ -36,7 +36,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
// Generate a short random ID for this scanner instance
|
// Generate a short random ID for this scanner instance
|
||||||
this.id = Math.random().toString(36).substring(2, 8).toUpperCase();
|
this.id = Math.random().toString(36).substring(2, 8).toUpperCase();
|
||||||
this.options = options ?? {};
|
this.options = options ?? {};
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Initializing scanner with options:`,
|
`[WebInlineQRScanner:${this.id}] Initializing scanner with options:`,
|
||||||
{
|
{
|
||||||
...this.options,
|
...this.options,
|
||||||
@@ -49,7 +49,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
this.context = this.canvas.getContext("2d", { willReadFrequently: true });
|
this.context = this.canvas.getContext("2d", { willReadFrequently: true });
|
||||||
this.video = document.createElement("video");
|
this.video = document.createElement("video");
|
||||||
this.video.setAttribute("playsinline", "true"); // Required for iOS
|
this.video.setAttribute("playsinline", "true"); // Required for iOS
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] DOM elements created successfully`,
|
`[WebInlineQRScanner:${this.id}] DOM elements created successfully`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
this.cameraStateListeners.forEach((listener) => {
|
this.cameraStateListeners.forEach((listener) => {
|
||||||
try {
|
try {
|
||||||
listener.onStateChange(state, message);
|
listener.onStateChange(state, message);
|
||||||
logger.info(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Camera state changed to: ${state}`,
|
`[WebInlineQRScanner:${this.id}] Camera state changed to: ${state}`,
|
||||||
{
|
{
|
||||||
state,
|
state,
|
||||||
@@ -89,7 +89,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
async checkPermissions(): Promise<boolean> {
|
async checkPermissions(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
this.updateCameraState("initializing", "Checking camera permissions...");
|
this.updateCameraState("initializing", "Checking camera permissions...");
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Checking camera permissions...`,
|
`[WebInlineQRScanner:${this.id}] Checking camera permissions...`,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
const permissions = await navigator.permissions.query({
|
const permissions = await navigator.permissions.query({
|
||||||
name: "camera" as PermissionName,
|
name: "camera" as PermissionName,
|
||||||
});
|
});
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Permission state from Permissions API:`,
|
`[WebInlineQRScanner:${this.id}] Permission state from Permissions API:`,
|
||||||
permissions.state,
|
permissions.state,
|
||||||
);
|
);
|
||||||
@@ -165,7 +165,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
"initializing",
|
"initializing",
|
||||||
"Requesting camera permissions...",
|
"Requesting camera permissions...",
|
||||||
);
|
);
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Requesting camera permissions...`,
|
`[WebInlineQRScanner:${this.id}] Requesting camera permissions...`,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
(device) => device.kind === "videoinput",
|
(device) => device.kind === "videoinput",
|
||||||
);
|
);
|
||||||
|
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Found video devices:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Found video devices:`, {
|
||||||
count: videoDevices.length,
|
count: videoDevices.length,
|
||||||
devices: videoDevices.map((d) => ({ id: d.deviceId, label: d.label })),
|
devices: videoDevices.map((d) => ({ id: d.deviceId, label: d.label })),
|
||||||
userAgent: navigator.userAgent,
|
userAgent: navigator.userAgent,
|
||||||
@@ -188,7 +188,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try to get a stream with specific constraints
|
// Try to get a stream with specific constraints
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Requesting camera stream with constraints:`,
|
`[WebInlineQRScanner:${this.id}] Requesting camera stream with constraints:`,
|
||||||
{
|
{
|
||||||
facingMode: "environment",
|
facingMode: "environment",
|
||||||
@@ -210,7 +210,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
// Stop the test stream immediately
|
// Stop the test stream immediately
|
||||||
stream.getTracks().forEach((track) => {
|
stream.getTracks().forEach((track) => {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Stopping test track:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Stopping test track:`, {
|
||||||
kind: track.kind,
|
kind: track.kind,
|
||||||
label: track.label,
|
label: track.label,
|
||||||
readyState: track.readyState,
|
readyState: track.readyState,
|
||||||
@@ -275,12 +275,12 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
async isSupported(): Promise<boolean> {
|
async isSupported(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Checking browser support...`,
|
`[WebInlineQRScanner:${this.id}] Checking browser support...`,
|
||||||
);
|
);
|
||||||
// Check for secure context first
|
// Check for secure context first
|
||||||
if (!window.isSecureContext) {
|
if (!window.isSecureContext) {
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Camera access requires HTTPS (secure context)`,
|
`[WebInlineQRScanner:${this.id}] Camera access requires HTTPS (secure context)`,
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
@@ -300,7 +300,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
(device) => device.kind === "videoinput",
|
(device) => device.kind === "videoinput",
|
||||||
);
|
);
|
||||||
|
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Device support check:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Device support check:`, {
|
||||||
hasSecureContext: window.isSecureContext,
|
hasSecureContext: window.isSecureContext,
|
||||||
hasMediaDevices: !!navigator.mediaDevices,
|
hasMediaDevices: !!navigator.mediaDevices,
|
||||||
hasGetUserMedia: !!navigator.mediaDevices?.getUserMedia,
|
hasGetUserMedia: !!navigator.mediaDevices?.getUserMedia,
|
||||||
@@ -379,7 +379,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
// Log scan attempt every 100 frames or 1 second
|
// Log scan attempt every 100 frames or 1 second
|
||||||
if (this.scanAttempts % 100 === 0 || timeSinceLastScan >= 1000) {
|
if (this.scanAttempts % 100 === 0 || timeSinceLastScan >= 1000) {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Scanning frame:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Scanning frame:`, {
|
||||||
attempt: this.scanAttempts,
|
attempt: this.scanAttempts,
|
||||||
dimensions: {
|
dimensions: {
|
||||||
width: this.canvas.width,
|
width: this.canvas.width,
|
||||||
@@ -421,7 +421,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
!code.data ||
|
!code.data ||
|
||||||
code.data.length === 0;
|
code.data.length === 0;
|
||||||
|
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] QR Code detected:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] QR Code detected:`, {
|
||||||
data: code.data,
|
data: code.data,
|
||||||
location: code.location,
|
location: code.location,
|
||||||
attempts: this.scanAttempts,
|
attempts: this.scanAttempts,
|
||||||
@@ -512,13 +512,13 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
this.scanAttempts = 0;
|
this.scanAttempts = 0;
|
||||||
this.lastScanTime = Date.now();
|
this.lastScanTime = Date.now();
|
||||||
this.updateCameraState("initializing", "Starting camera...");
|
this.updateCameraState("initializing", "Starting camera...");
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Starting scan with options:`,
|
`[WebInlineQRScanner:${this.id}] Starting scan with options:`,
|
||||||
this.options,
|
this.options,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get camera stream with options
|
// Get camera stream with options
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Requesting camera stream...`,
|
`[WebInlineQRScanner:${this.id}] Requesting camera stream...`,
|
||||||
);
|
);
|
||||||
this.stream = await navigator.mediaDevices.getUserMedia({
|
this.stream = await navigator.mediaDevices.getUserMedia({
|
||||||
@@ -531,7 +531,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
this.updateCameraState("active", "Camera is active");
|
this.updateCameraState("active", "Camera is active");
|
||||||
|
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Camera stream obtained:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Camera stream obtained:`, {
|
||||||
tracks: this.stream.getTracks().map((t) => ({
|
tracks: this.stream.getTracks().map((t) => ({
|
||||||
kind: t.kind,
|
kind: t.kind,
|
||||||
label: t.label,
|
label: t.label,
|
||||||
@@ -550,14 +550,14 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
this.video.style.display = "none";
|
this.video.style.display = "none";
|
||||||
}
|
}
|
||||||
await this.video.play();
|
await this.video.play();
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Video element started playing`,
|
`[WebInlineQRScanner:${this.id}] Video element started playing`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit stream to component
|
// Emit stream to component
|
||||||
this.events.emit("stream", this.stream);
|
this.events.emit("stream", this.stream);
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Stream event emitted`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Stream event emitted`);
|
||||||
|
|
||||||
// Start QR code scanning
|
// Start QR code scanning
|
||||||
this.scanQRCode();
|
this.scanQRCode();
|
||||||
@@ -595,7 +595,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Stopping scan`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Stopping scan`, {
|
||||||
scanAttempts: this.scanAttempts,
|
scanAttempts: this.scanAttempts,
|
||||||
duration: Date.now() - this.lastScanTime,
|
duration: Date.now() - this.lastScanTime,
|
||||||
});
|
});
|
||||||
@@ -604,7 +604,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
if (this.animationFrameId !== null) {
|
if (this.animationFrameId !== null) {
|
||||||
cancelAnimationFrame(this.animationFrameId);
|
cancelAnimationFrame(this.animationFrameId);
|
||||||
this.animationFrameId = null;
|
this.animationFrameId = null;
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Animation frame cancelled`,
|
`[WebInlineQRScanner:${this.id}] Animation frame cancelled`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -613,13 +613,13 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
if (this.video) {
|
if (this.video) {
|
||||||
this.video.pause();
|
this.video.pause();
|
||||||
this.video.srcObject = null;
|
this.video.srcObject = null;
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Video element stopped`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Video element stopped`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop all tracks in the stream
|
// Stop all tracks in the stream
|
||||||
if (this.stream) {
|
if (this.stream) {
|
||||||
this.stream.getTracks().forEach((track) => {
|
this.stream.getTracks().forEach((track) => {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Stopping track:`, {
|
logger.debug(`[WebInlineQRScanner:${this.id}] Stopping track:`, {
|
||||||
kind: track.kind,
|
kind: track.kind,
|
||||||
label: track.label,
|
label: track.label,
|
||||||
readyState: track.readyState,
|
readyState: track.readyState,
|
||||||
@@ -631,7 +631,7 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
// Emit stream stopped event
|
// Emit stream stopped event
|
||||||
this.events.emit("stream", null);
|
this.events.emit("stream", null);
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Stream stopped event emitted`,
|
`[WebInlineQRScanner:${this.id}] Stream stopped event emitted`,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -643,17 +643,17 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
throw error;
|
throw error;
|
||||||
} finally {
|
} finally {
|
||||||
this.isScanning = false;
|
this.isScanning = false;
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Scan stopped successfully`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Scan stopped successfully`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addListener(listener: ScanListener): void {
|
addListener(listener: ScanListener): void {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Adding scan listener`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Adding scan listener`);
|
||||||
this.scanListener = listener;
|
this.scanListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
onStream(callback: (stream: MediaStream | null) => void): void {
|
onStream(callback: (stream: MediaStream | null) => void): void {
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Adding stream event listener`,
|
`[WebInlineQRScanner:${this.id}] Adding stream event listener`,
|
||||||
);
|
);
|
||||||
this.events.on("stream", callback);
|
this.events.on("stream", callback);
|
||||||
@@ -661,24 +661,24 @@ export class WebInlineQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
async cleanup(): Promise<void> {
|
async cleanup(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Starting cleanup`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Starting cleanup`);
|
||||||
await this.stopScan();
|
await this.stopScan();
|
||||||
this.events.removeAllListeners();
|
this.events.removeAllListeners();
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Event listeners removed`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Event listeners removed`);
|
||||||
|
|
||||||
// Clean up DOM elements
|
// Clean up DOM elements
|
||||||
if (this.video) {
|
if (this.video) {
|
||||||
this.video.remove();
|
this.video.remove();
|
||||||
this.video = null;
|
this.video = null;
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Video element removed`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Video element removed`);
|
||||||
}
|
}
|
||||||
if (this.canvas) {
|
if (this.canvas) {
|
||||||
this.canvas.remove();
|
this.canvas.remove();
|
||||||
this.canvas = null;
|
this.canvas = null;
|
||||||
logger.error(`[WebInlineQRScanner:${this.id}] Canvas element removed`);
|
logger.debug(`[WebInlineQRScanner:${this.id}] Canvas element removed`);
|
||||||
}
|
}
|
||||||
this.context = null;
|
this.context = null;
|
||||||
logger.error(
|
logger.debug(
|
||||||
`[WebInlineQRScanner:${this.id}] Cleanup completed successfully`,
|
`[WebInlineQRScanner:${this.id}] Cleanup completed successfully`,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user