warped_bloc_react
Version:
BLoC like State Management Solution For React
30 lines (27 loc) • 1.06 kB
text/typescript
import BlocState from "../../core/states/BlocState";
import InitialState from "../../core/states/InitialState";
import ErrorState from "../../core/states/ErrorState";
import LoadingState from "../../core/states/LoadingState";
import { DefaultCubit } from "./DefaultCubit"
import AsyncCubit, { CallbackType, ErrCallbackType } from "./interface/AsyncCubit";
export const DefaultAsyncCubit = (state?: BlocState): AsyncCubit => {
let cubit = DefaultCubit<BlocState>(state ?? new InitialState());
const handleDefaultStates = async (callback: CallbackType, errorCallback?: ErrCallbackType, showLoading: boolean = true,) => {
if (showLoading) {
cubit.emit(new LoadingState());
}
try {
await callback();
} catch (e) {
if (errorCallback) {
errorCallback(e)
} else {
cubit.emit(new ErrorState<any>("Error Has Occured"));
}
}
}
return {
...cubit,
handleDefaultStates,
}
}