Skip to content

Instantly share code, notes, and snippets.

@slorber
Created March 30, 2016 14:50
Show Gist options
  • Save slorber/89763f3e9318be0613501918e86d0805 to your computer and use it in GitHub Desktop.
Save slorber/89763f3e9318be0613501918e86d0805 to your computer and use it in GitHub Desktop.
export default function* stampleFullScreenSaga() {
let openedStamples = [];
function* watchOpenedStamples() {
yield* takeEvery('*', function* (event) {
switch(event.name) {
case Names.STAMPLE_OPENED:
openedStamples = openedStamples.concat(event.data.stampleId);
break;
case Names.STAMPLE_CLOSED:
openedStamples = _.without(openedStamples,event.data.stampleId);
break;
}
})
}
function* closeOpenedStamplesOnNavigation() {
yield* takeEvery(Names.MAIN_CONTENT_SELECTED, function* (event) {
yield openedStamples.map(stampleId => put(events.stampleClosed(stampleId)));
});
}
function* closeOpenedStampleAfterDelete() {
yield* takeEvery(Names.STAMPLE_DELETED, function* (event) {
const deletedStampleId = event.data.stampleId;
if ( openedStamples.includes(deletedStampleId) ) {
yield put(events.stampleClosed(deletedStampleId));
}
});
}
yield [
call(closeOpenedStamplesOnNavigation),
call(closeOpenedStampleAfterDelete),
call(watchOpenedStamples)
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment