Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃殌[FEATURE]: Add option to specify Lifecycle Point to @Action() decorator #488

Open
rweng opened this issue Jul 11, 2018 · 5 comments
Open

Comments

@rweng
Copy link

rweng commented Jul 11, 2018

It would be handy to do s.th. like this:

class MyState {
  @Action(SyncDatabase)
  syncDatabase(ctx){ ctx.patchState({isSyncing: true}) }

  @Action(SyncDatabase, {on: 'SUCCESSFUL'})
  onSyncDone(ctx, action) { ctx.patchState({isSyncing: false}) }
}

I am not sure how exactly the API should look like, or whether it would also be useful to add another lifecycle hook for completed. Also, it would be handy to have to result of the Promise / Observable on the action.

I know it is possible to subscribe to the action stream and do this manually and this is just syntactic sugar. However, I feel like this would be a nice addition since for me it is more readable than having subscriptions on the action stream while at the same time reducing Action definitions (e.g. a separate SyncDatabaseDone).

What do you think?

@markwhitfeld
Copy link
Member

markwhitfeld commented Jul 11, 2018

I like this idea and have thought about it a few times. We could look at options over the api because I think there are a few ways to go here.
@amcdnl what do you think?

@amcdnl
Copy link
Member

amcdnl commented Jul 15, 2018

I like this! Lets blow out the API ideas!

@juliusstoerrle
Copy link
Contributor

juliusstoerrle commented Jul 16, 2018

Just throwing out some question coming in my mind:

What are the lifecycle events we want/ when are they called?
When did an action succeed? And what happens when we have to handlers one failing, one succeeding?

Is there a way to pass data along from one handler to another? (I guess the action object should be immutable)

@markwhitfeld
Copy link
Member

For the API, how about functions similar to the operators for the Action stream:

@Action(dispatched([FeedAnimals]))
//... 

@Action(cancelled([FeedAnimals]))
//... 

@Action(errored([FeedDucks, FeedPigs]))
//... 

@Action(successful([FeedAnimals]))
//... 

What do you think?

@filipjnc
Copy link

filipjnc commented Jul 28, 2018

I might be delusional but wouldn't this also help fix the issue #139?

@splincode splincode changed the title Feature Request: Add option to specify Lifecycle Point to @Action() decorator 馃殌[FEATURE]: Add option to specify Lifecycle Point to @Action() decorator Nov 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants