refactor: unify typing callbacks
This commit is contained in:
27
src/channels/typing.ts
Normal file
27
src/channels/typing.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export type TypingCallbacks = {
|
||||
onReplyStart: () => Promise<void>;
|
||||
onIdle?: () => void;
|
||||
};
|
||||
|
||||
export function createTypingCallbacks(params: {
|
||||
start: () => Promise<void>;
|
||||
stop?: () => Promise<void>;
|
||||
onStartError: (err: unknown) => void;
|
||||
onStopError?: (err: unknown) => void;
|
||||
}): TypingCallbacks {
|
||||
const onReplyStart = async () => {
|
||||
try {
|
||||
await params.start();
|
||||
} catch (err) {
|
||||
params.onStartError(err);
|
||||
}
|
||||
};
|
||||
|
||||
const onIdle = params.stop
|
||||
? () => {
|
||||
void params.stop().catch((err) => (params.onStopError ?? params.onStartError)(err));
|
||||
}
|
||||
: undefined;
|
||||
|
||||
return { onReplyStart, onIdle };
|
||||
}
|
||||
Reference in New Issue
Block a user