refactor: Replace console logging with logger utility

- Add logger import across multiple view components
- Replace console.error/warn/log with logger methods
- Update error handling to use structured logging
- Improve type safety for error objects
- Add crypto-browserify polyfill for browser environment

The changes improve logging by:
1. Using consistent logging interface
2. Adding structured error logging
3. Improving error type safety
4. Centralizing logging configuration
5. Fixing browser compatibility issues

Affected files:
- Multiple view components
- vite.config.ts
- Build configuration
This commit is contained in:
Matthew Raymer
2025-03-11 09:35:55 +00:00
parent 515bb38db4
commit c9536dd643
1781 changed files with 81616 additions and 401 deletions

View File

@@ -143,7 +143,8 @@
<!--
This "group" of "modal" is the prompt for an answer.
Set "type" as follows: "confirm" for yes/no, and "notification" ones: "-permission", "-mute", "-off"
Set "type" as follows: "confirm" for yes/no, and "notification" ones:
"-permission", "-mute", "-off"
-->
<NotificationGroup group="modal">
<div class="fixed z-[100] top-0 inset-x-0 w-full">
@@ -331,6 +332,7 @@
import { Vue, Component } from "vue-facing-decorator";
import { logConsoleAndDb, retrieveSettingsForActiveAccount } from "./db/index";
import { NotificationIface } from "./constants/app";
import { logger } from "./utils/logger";
interface Settings {
notifyingNewActivityTime?: string;
@@ -344,38 +346,38 @@ export default class App extends Vue {
stopAsking = false;
// created() {
// console.log(
// logger.log(
// "Component created: Reactivity set up.",
// window.location.pathname,
// );
// }
// beforeCreate() {
// console.log("Component beforeCreate: Instance initialized.");
// logger.log("Component beforeCreate: Instance initialized.");
// }
// beforeMount() {
// console.log("Component beforeMount: Template is about to be rendered.");
// logger.log("Component beforeMount: Template is about to be rendered.");
// }
// mounted() {
// console.log("Component mounted: Template is now rendered.");
// logger.log("Component mounted: Template is now rendered.");
// }
// beforeUpdate() {
// console.log("Component beforeUpdate: DOM is about to be updated.");
// logger.log("Component beforeUpdate: DOM is about to be updated.");
// }
// updated() {
// console.log("Component updated: DOM has been updated.");
// logger.log("Component updated: DOM has been updated.");
// }
// beforeUnmount() {
// console.log("Component beforeUnmount: Cleaning up before removal.");
// logger.log("Component beforeUnmount: Cleaning up before removal.");
// }
// unmounted() {
// console.log("Component unmounted: Component removed from the DOM.");
// logger.log("Component unmounted: Component removed from the DOM.");
// }
truncateLongWords(sentence: string) {
@@ -388,42 +390,42 @@ export default class App extends Vue {
async turnOffNotifications(
notification: NotificationIface,
): Promise<boolean> {
console.log("Starting turnOffNotifications...");
logger.log("Starting turnOffNotifications...");
let subscription: PushSubscriptionJSON | null = null;
let allGoingOff = false;
try {
console.log("Retrieving settings for the active account...");
logger.log("Retrieving settings for the active account...");
const settings: Settings = await retrieveSettingsForActiveAccount();
console.log("Retrieved settings:", settings);
logger.log("Retrieved settings:", settings);
const notifyingNewActivity = !!settings?.notifyingNewActivityTime;
const notifyingReminder = !!settings?.notifyingReminderTime;
if (!notifyingNewActivity || !notifyingReminder) {
allGoingOff = true;
console.log("Both notifications are being turned off.");
logger.log("Both notifications are being turned off.");
}
console.log("Checking service worker readiness...");
logger.log("Checking service worker readiness...");
await navigator.serviceWorker?.ready
.then((registration) => {
console.log("Service worker is ready. Fetching subscription...");
logger.log("Service worker is ready. Fetching subscription...");
return registration.pushManager.getSubscription();
})
.then(async (subscript: PushSubscription | null) => {
if (subscript) {
subscription = subscript.toJSON();
console.log("PushSubscription retrieved:", subscription);
logger.log("PushSubscription retrieved:", subscription);
if (allGoingOff) {
console.log("Unsubscribing from push notifications...");
logger.log("Unsubscribing from push notifications...");
await subscript.unsubscribe();
console.log("Successfully unsubscribed.");
logger.log("Successfully unsubscribed.");
}
} else {
logConsoleAndDb("Subscription object is not available.");
console.log("No subscription found.");
logger.log("No subscription found.");
}
})
.catch((error) => {
@@ -432,11 +434,11 @@ export default class App extends Vue {
JSON.stringify(error),
true,
);
console.error("Error during subscription fetch:", error);
logger.error("Error during subscription fetch:", error);
});
if (!subscription) {
console.log("No subscription available. Notifying user...");
logger.log("No subscription available. Notifying user...");
this.$notify(
{
group: "alert",
@@ -446,7 +448,7 @@ export default class App extends Vue {
},
5000,
);
console.log("Exiting as there is no subscription to process.");
logger.log("Exiting as there is no subscription to process.");
return true;
}
@@ -455,12 +457,12 @@ export default class App extends Vue {
};
if (!allGoingOff) {
serverSubscription["notifyType"] = notification.title;
console.log(
logger.log(
`Server subscription updated with notifyType: ${notification.title}`,
);
}
console.log("Sending unsubscribe request to the server...");
logger.log("Sending unsubscribe request to the server...");
const pushServerSuccess = await fetch("/web-push/unsubscribe", {
method: "POST",
headers: {
@@ -475,9 +477,9 @@ export default class App extends Vue {
`Push server failed: ${response.status} ${errorBody}`,
true,
);
console.error("Push server error response:", errorBody);
logger.error("Push server error response:", errorBody);
}
console.log(`Server response status: ${response.status}`);
logger.log(`Server response status: ${response.status}`);
return response.ok;
})
.catch((error) => {
@@ -485,14 +487,14 @@ export default class App extends Vue {
"Push server communication failed: " + JSON.stringify(error),
true,
);
console.error("Error during server communication:", error);
logger.error("Error during server communication:", error);
return false;
});
const message = pushServerSuccess
? "Notification is off."
: "Notification is still on. Try to turn it off again.";
console.log("Server response processed. Message:", message);
logger.log("Server response processed. Message:", message);
this.$notify(
{
@@ -505,11 +507,11 @@ export default class App extends Vue {
);
if (notification.callback) {
console.log("Executing notification callback...");
logger.log("Executing notification callback...");
notification.callback(pushServerSuccess);
}
console.log(
logger.log(
"Completed turnOffNotifications with success:",
pushServerSuccess,
);
@@ -519,7 +521,7 @@ export default class App extends Vue {
"Error turning off notifications: " + JSON.stringify(error),
true,
);
console.error("Critical error in turnOffNotifications:", error);
logger.error("Critical error in turnOffNotifications:", error);
this.$notify(
{