Frontend
Sagas

Please refer Redux-Saga (opens in a new tab)

Example:

/**
 * @type: saga
 * name: blog.saga.updatedItem
 */
 
import { LocalAction, viewItem } from '@metafox/framework';
import { takeEvery } from 'redux-saga/effects';
 
function* updatedItem({ payload: { id } }: LocalAction<{ id: string }>) {
  yield* viewItem('blog', 'blog', id);
}
 
const sagas = [takeEvery('@updatedItem/blog', updatedItem)];
 
export default sagas;
 

metafox build/start command collect all sagas file using annotation @type: saga saga root pattern (opens in a new tab)

Whenever a new saga file be added or removed, run yarn metafox reload to bundle saga file again.

All sagas bundled at file ./app/src/bundle/produce.tsx, example files

 
import coreSagaHandleActionFeedbackSaga from
    '@metafox/framework/sagas/handleActionFeedback';
import CoreRequestSaga from
    '@metafox/framework/sagas/handleRequest';
import sagaReloadEntitySaga from
    '@metafox/core/reducers/reloadEntity';
import abortControllerSaga from
    '@metafox/core/sagas/abortController';
import coreChooseThemeSaga from
    '@metafox/core/sagas/chooseTheme';
import sagaCoreCloseDialogSaga from
    '@metafox/core/sagas/closeDialog';
 
const sagas = [
    coreSagaHandleActionFeedbackSaga,
    CoreRequestSaga,
    sagaReloadEntitySaga,
    abortControllerSaga,
    coreChooseThemeSaga,
    sagaCoreCloseDialogSaga
]
 
export default function injector(config: any) {
    config.sagas=sagas;
}