forked from trent_larson/crowd-funder-for-time-pwa
refactor: replace console.log with logger utility
- Replace all console.log statements with appropriate logger methods in QRScannerDialog.vue - Replace console.log statements with logger methods in WebDialogQRScanner.ts - Fix TypeScript type for failsafeTimeout from 'any' to 'unknown' - Update LogCollector.ts to use 'unknown' type instead of 'any' - Add eslint-disable comments for console overrides in LogCollector This change improves logging consistency across the application by using the centralized logger utility, which provides better error handling, log persistence, and environment-aware logging.
This commit is contained in:
@@ -10,20 +10,20 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
private isScanning = false;
|
||||
private container: HTMLElement | null = null;
|
||||
private sessionId: number | null = null;
|
||||
private failsafeTimeout: any = null;
|
||||
private failsafeTimeout: unknown = null;
|
||||
|
||||
constructor(private options?: QRScannerOptions) {}
|
||||
|
||||
async checkPermissions(): Promise<boolean> {
|
||||
try {
|
||||
console.log("[QRScanner] Checking camera permissions...");
|
||||
logger.log("[QRScanner] Checking camera permissions...");
|
||||
const permissions = await navigator.permissions.query({
|
||||
name: "camera" as PermissionName,
|
||||
});
|
||||
console.log("[QRScanner] Permission state:", permissions.state);
|
||||
logger.log("[QRScanner] Permission state:", permissions.state);
|
||||
return permissions.state === "granted";
|
||||
} catch (error) {
|
||||
console.error("[QRScanner] Error checking camera permissions:", error);
|
||||
logger.error("[QRScanner] Error checking camera permissions:", error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,9 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
try {
|
||||
this.isScanning = true;
|
||||
this.sessionId = Date.now();
|
||||
console.log(`[WebDialogQRScanner] Opening dialog, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] Opening dialog, session: ${this.sessionId}`,
|
||||
);
|
||||
|
||||
// Create and mount dialog component
|
||||
this.container = document.createElement("div");
|
||||
@@ -147,23 +149,31 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
}
|
||||
},
|
||||
onClose: () => {
|
||||
console.log(`[WebDialogQRScanner] onClose received from dialog, session: ${this.sessionId}`);
|
||||
this.stopScan('dialog onClose');
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] onClose received from dialog, session: ${this.sessionId}`,
|
||||
);
|
||||
this.stopScan("dialog onClose");
|
||||
},
|
||||
options: this.options,
|
||||
sessionId: this.sessionId,
|
||||
});
|
||||
|
||||
this.dialogComponent = this.dialogInstance.mount(this.container) as InstanceType<typeof QRScannerDialog>;
|
||||
this.dialogComponent = this.dialogInstance.mount(
|
||||
this.container,
|
||||
) as InstanceType<typeof QRScannerDialog>;
|
||||
|
||||
// Failsafe: force cleanup after 60s if dialog is still open
|
||||
this.failsafeTimeout = setTimeout(() => {
|
||||
if (this.isScanning) {
|
||||
console.warn(`[WebDialogQRScanner] Failsafe triggered, forcing cleanup for session: ${this.sessionId}`);
|
||||
this.stopScan('failsafe timeout');
|
||||
logger.warn(
|
||||
`[WebDialogQRScanner] Failsafe triggered, forcing cleanup for session: ${this.sessionId}`,
|
||||
);
|
||||
this.stopScan("failsafe timeout");
|
||||
}
|
||||
}, 60000);
|
||||
console.log(`[WebDialogQRScanner] Failsafe timeout set for session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] Failsafe timeout set for session: ${this.sessionId}`,
|
||||
);
|
||||
} catch (error) {
|
||||
this.isScanning = false;
|
||||
const wrappedError =
|
||||
@@ -177,20 +187,26 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
}
|
||||
}
|
||||
|
||||
async stopScan(reason: string = 'manual') : Promise<void> {
|
||||
async stopScan(reason: string = "manual"): Promise<void> {
|
||||
if (!this.isScanning) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
console.log(`[WebDialogQRScanner] stopScan called, reason: ${reason}, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] stopScan called, reason: ${reason}, session: ${this.sessionId}`,
|
||||
);
|
||||
if (this.dialogComponent) {
|
||||
await this.dialogComponent.close();
|
||||
console.log(`[WebDialogQRScanner] dialogComponent.close() called, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] dialogComponent.close() called, session: ${this.sessionId}`,
|
||||
);
|
||||
}
|
||||
if (this.dialogInstance) {
|
||||
this.dialogInstance.unmount();
|
||||
console.log(`[WebDialogQRScanner] dialogInstance.unmount() called, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] dialogInstance.unmount() called, session: ${this.sessionId}`,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
const wrappedError =
|
||||
@@ -202,7 +218,9 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
if (this.failsafeTimeout) {
|
||||
clearTimeout(this.failsafeTimeout);
|
||||
this.failsafeTimeout = null;
|
||||
console.log(`[WebDialogQRScanner] Failsafe timeout cleared, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] Failsafe timeout cleared, session: ${this.sessionId}`,
|
||||
);
|
||||
}
|
||||
this.cleanupContainer();
|
||||
}
|
||||
@@ -215,16 +233,20 @@ export class WebDialogQRScanner implements QRScannerService {
|
||||
private cleanupContainer(): void {
|
||||
if (this.container && this.container.parentNode) {
|
||||
this.container.parentNode.removeChild(this.container);
|
||||
console.log(`[WebDialogQRScanner] Dialog container removed from DOM, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] Dialog container removed from DOM, session: ${this.sessionId}`,
|
||||
);
|
||||
} else {
|
||||
console.log(`[WebDialogQRScanner] Dialog container NOT removed from DOM, session: ${this.sessionId}`);
|
||||
logger.log(
|
||||
`[WebDialogQRScanner] Dialog container NOT removed from DOM, session: ${this.sessionId}`,
|
||||
);
|
||||
}
|
||||
this.container = null;
|
||||
}
|
||||
|
||||
async cleanup(): Promise<void> {
|
||||
try {
|
||||
await this.stopScan('cleanup');
|
||||
await this.stopScan("cleanup");
|
||||
} catch (error) {
|
||||
const wrappedError =
|
||||
error instanceof Error ? error : new Error(String(error));
|
||||
|
||||
Reference in New Issue
Block a user