refactor: move inline callbacks to improve readability and enable easier testing #46
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
Currently, the
useConversationhook implements its callback logic inline, which makes the function difficult to predict, test, and maintain.To improve clarity and testability, I extracted the inline callbacks into separate named handlers:
Additionally, I replaced
React.useCallbackwith a directuseCallbackimport for consistency, and noted that our imports sometimes mix named and namespace styles.Why
With the previous inline implementation, it was not possible to mock or spy on the
useConversationlogic effectively.Extracting named handlers brings several benefits:
Testability – Each handler can be individually mocked or spied on with Vitest, allowing focused unit tests without triggering the full conversation hook.
Readability – The
useConversationconfiguration is now a clean object with references to named handlers instead of nested inline functions, making it easier to scan and understand at a glance.Debuggability – Stack traces now show meaningful function names (e.g., handleError, handleDisconnect) instead of anonymous functions, making it easier to track and resolve issues.