elf icon indicating copy to clipboard operation
elf copied to clipboard

Add Entity Actions to listen for any store action

Open 5im0n opened this issue 2 years ago • 3 comments

@ngneat/elf-entities

No response

Description

Add entity action as they are in Akita: https://datorama.github.io/akita/docs/entities/query-entity/#entity-actions

Proposed solution


import { selectEntityAction, EntityActions  } from '@ngneat/elf-entities';

// Listen for a specific action
store.query(selectEntityAction(EntityActions.Set)).subscribe(newIds => {})
store.query(selectEntityAction(EntityActions.Add)).subscribe(addedIds => {});
store.query(selectEntityAction(EntityActions.Update)).subscribe(updatedIds => {});
store.query(selectEntityAction(EntityActions.Remove)).subscribe(removedIds => {});

// listen for a subset of actions
store.query(selectEntityAction([EntityActions.Add, EntityActions.Remove])).subscribe(action => {});

// listen for all actions
store.query(selectEntityAction()).subscribe(action => {});

Alternatives considered

🤔

5im0n avatar Apr 25 '22 10:04 5im0n

@NetanelBasal, what do you suggest to implements this new feature ?

In Akita an observable is used to propagate entities event.

However in Elf every mutation functions is a pure function.

5im0n avatar Apr 27 '22 11:04 5im0n

Yes. We can exclude the core entity mutations for this benefit and emit the action in each.

NetanelBasal avatar Apr 27 '22 12:04 NetanelBasal

import { ofType } from '@ngneat/elf';
import { EntityActions } from '@ngneat/elf-entites';

store.actions$.pipe(ofType(EntityActions.Add)).subscribe()

NetanelBasal avatar Apr 27 '22 12:04 NetanelBasal

hi, is there any progress with this issue? it sounds like a very useful addition

doerig avatar Sep 08 '23 10:09 doerig

This is def a must for us in my current company

juancarlosgzs avatar Sep 24 '23 15:09 juancarlosgzs

https://ngneat.github.io/elf/docs/miscellaneous/entity-events

NetanelBasal avatar Jan 19 '24 11:01 NetanelBasal