auron
Version:
Interact with your ATProto labeler from your terminal
24 lines (21 loc) • 517 B
text/typescript
import ora from "ora";
export const withLoader = async <T>(
message: string,
fn: (updateMessage: (newMessage: string) => void) => Promise<T>
): Promise<T> => {
const spinner = ora(message).start();
const updateMessage = (newMessage: string) => {
spinner.text = newMessage;
};
const logMessage = (log: string) => {
console.log(log);
};
try {
const result = await fn(updateMessage);
spinner.succeed();
return result;
} catch (error) {
spinner.fail();
throw error;
}
};