mirror of
https://github.com/jhbruhn/respira.git
synced 2026-01-27 02:13:41 +00:00
fix: Address Copilot review feedback on event subscriptions
Add error handling and documentation to event subscriptions based on Copilot review feedback. Changes: - Added try-catch blocks to all event callbacks for graceful error handling - Added comments documenting that subscriptions persist for app lifetime - Improved JSDoc for onPatternDeleted function with lifecycle details - Added error logging to help debug potential issues Benefits: - Prevents silent failures in event callbacks - Clear documentation about subscription lifecycle - Better developer experience with error messages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
20e9fa13e7
commit
9299f5aed9
4 changed files with 47 additions and 9 deletions
|
|
@ -28,9 +28,17 @@ export const useEventStore = create<EventState>((set) => ({
|
|||
}));
|
||||
|
||||
/**
|
||||
* Subscribe to pattern deleted event
|
||||
* @param callback - Function to call when event is emitted
|
||||
* @returns Unsubscribe function
|
||||
* Subscribe to the pattern deleted event.
|
||||
*
|
||||
* The subscription remains active until the returned unsubscribe function is called.
|
||||
* If the unsubscribe function is not called, the listener will persist for the
|
||||
* lifetime of the event store (typically the lifetime of the application).
|
||||
*
|
||||
* Call the returned unsubscribe function when the listener is no longer needed,
|
||||
* especially for short-lived components or non-module-level subscriptions.
|
||||
*
|
||||
* @param callback - Function to call when the event is emitted.
|
||||
* @returns Unsubscribe function that removes the listener when invoked.
|
||||
*/
|
||||
export const onPatternDeleted = (callback: () => void): (() => void) => {
|
||||
let prevCount = useEventStore.getState().patternDeletedCount;
|
||||
|
|
|
|||
|
|
@ -194,7 +194,17 @@ export const useMachineCacheStore = create<MachineCacheState>((set, get) => ({
|
|||
},
|
||||
}));
|
||||
|
||||
// Subscribe to pattern deleted event
|
||||
// Subscribe to pattern deleted event.
|
||||
// This subscription is intended to persist for the lifetime of the application,
|
||||
// so the unsubscribe function returned by `onPatternDeleted` is intentionally
|
||||
// not stored or called.
|
||||
onPatternDeleted(() => {
|
||||
useMachineCacheStore.getState().clearResumeState();
|
||||
try {
|
||||
useMachineCacheStore.getState().clearResumeState();
|
||||
} catch (error) {
|
||||
console.error(
|
||||
"[MachineCacheStore] Failed to clear resume state on pattern deleted event:",
|
||||
error,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -128,7 +128,17 @@ export const useMachineUploadStore = create<MachineUploadState>((set) => ({
|
|||
},
|
||||
}));
|
||||
|
||||
// Subscribe to pattern deleted event
|
||||
// Subscribe to pattern deleted event.
|
||||
// This subscription is intended to persist for the lifetime of the application,
|
||||
// so the unsubscribe function returned by `onPatternDeleted` is intentionally
|
||||
// not stored or called.
|
||||
onPatternDeleted(() => {
|
||||
useMachineUploadStore.getState().reset();
|
||||
try {
|
||||
useMachineUploadStore.getState().reset();
|
||||
} catch (error) {
|
||||
console.error(
|
||||
"[MachineUploadStore] Failed to reset on pattern deleted event:",
|
||||
error,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -123,7 +123,17 @@ export const useUploadedPatternOffset = () =>
|
|||
export const usePatternRotation = () =>
|
||||
usePatternStore((state) => state.patternRotation);
|
||||
|
||||
// Subscribe to pattern deleted event
|
||||
// Subscribe to pattern deleted event.
|
||||
// This subscription is intended to persist for the lifetime of the application,
|
||||
// so the unsubscribe function returned by `onPatternDeleted` is intentionally
|
||||
// not stored or called.
|
||||
onPatternDeleted(() => {
|
||||
usePatternStore.getState().clearUploadedPattern();
|
||||
try {
|
||||
usePatternStore.getState().clearUploadedPattern();
|
||||
} catch (error) {
|
||||
console.error(
|
||||
"[PatternStore] Failed to clear uploaded pattern on pattern deleted event:",
|
||||
error,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue