in packages/redux-dynamic-modules-saga/src/SagaManager.ts [9:42]
export function getSagaManager(
sagaMiddleware: SagaMiddleware<any>
): IItemManager<ISagaRegistration<any>> {
const tasks = getMap<ISagaRegistration<any>, Task>(sagaEquals);
return {
getItems: (): ISagaRegistration<any>[] => [...tasks.keys],
add: (sagas: ISagaRegistration<any>[]) => {
if (!sagas) {
return;
}
sagas.forEach(saga => {
if (saga && !tasks.get(saga)) {
tasks.add(saga, runSaga(sagaMiddleware, saga));
}
});
},
remove: (sagas: ISagaRegistration<any>[]) => {
if (!sagas) {
return;
}
sagas.forEach(saga => {
if (tasks.get(saga)) {
const task = tasks.remove(saga);
task.cancel();
}
});
},
dispose: () => {
// Cancel everything
tasks.keys.forEach(k => tasks.get(k).cancel());
},
};
}