Skip to content

Commit

Permalink
Signal.send now returns tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
Anler Hernandez Peral committed Jan 20, 2016
1 parent fd351e9 commit 5b40c1b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 18 deletions.
19 changes: 7 additions & 12 deletions src/effects.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,21 @@ export function fromTask(task, successCallback, failureCallback) {
}

export function toTask(address, effect) {
return Rx.Observable.create(function toTaskObservable(observer) {
effect.subscribe(
action => {
Signal.send(address, action);
observer.onCompleted();
},
error => {
observer.onError(error);
}
);
});
return effect.flatMap(action => Signal.send(address, action));
}

export function merge(effects) {
return Rx.Observable.merge(...effects);
}

export function sendAsEffect(address, msg, effMsg) {
return Signal.send(address, msg).map(() => effMsg);
}

export default {
none,
fromTask,
toTask,
merge
merge,
sendAsEffect,
};
4 changes: 2 additions & 2 deletions src/html-events.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export function decodeOn(decoder, options) {
return on(
options,
decoder,
arg => Signal.send(address, handler(arg))
arg => Signal.sendSync(address, handler(arg))
);
};
}
Expand All @@ -70,7 +70,7 @@ export function messageOn(options) {
return on(
options,
R.identity,
ignoredArg => Signal.send(address, message)
ignoredArg => Signal.sendSync(address, message)
);
};
}
Expand Down
15 changes: 11 additions & 4 deletions src/signal.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,28 @@ export function Mailbox(initialValue) {
};
}

// forwardTo : (Address a, a -> a) -> a -> Task Never ()
// send : (Address a, a) -> a -> Task Never ()
export function send(address, message) {
return Rx.Observable.create(observer => {
address(message);
observer.onCompleted();
});
}

export function forwardTo(address, tagMessage) {
return function forwardedAddress(message) {
return send(address, tagMessage(message));
return sendSync(address, tagMessage(message));
};
}

// send : (Address a, a) -> a -> Task Never ()
export function send(address, message) {
export function sendSync(address, message) {
address(message);
}

export default {
Mailbox,
forwardTo,
send,
sendSync,
merge
};

0 comments on commit 5b40c1b

Please sign in to comment.