export function getSagaExtension()

in packages/redux-dynamic-modules-saga/src/SagaExtension.ts [16:63]


export function getSagaExtension<C>(
    sagaContext?: C,
    onError?: (error: Error) => void
): IExtension {
    let sagaMonitor = undefined;

    //@ts-ignore
    if (process.env.NODE_ENV === "development" && typeof window !== "undefined") {
        sagaMonitor = window["__SAGA_MONITOR_EXTENSION__"] || undefined;
    }

    // Setup the saga middleware
    let sagaMiddleware: SagaMiddleware<C> = createSagaMiddleware<any>({
        context: sagaContext,
        sagaMonitor,
        onError,
    });

    let _sagaManager: IItemManager<
        ISagaRegistration<any>
    > = getRefCountedManager(getSagaManager(sagaMiddleware), sagaEquals);

    return {
        middleware: [sagaMiddleware],

        onModuleManagerCreated: (moduleManager: IModuleManager) => {
            if (sagaContext) {
                sagaContext["moduleManager"] = moduleManager;
            }
        },

        onModuleAdded: (module: ISagaModule<any>): void => {
            if (module.sagas) {
                _sagaManager.add(module.sagas);
            }
        },

        onModuleRemoved: (module: ISagaModule<any>): void => {
            if (module.sagas) {
                _sagaManager.remove(module.sagas);
            }
        },

        dispose: () => {
            _sagaManager.dispose();
        },
    };
}