2017-07-17 1 views
0

Actuellement, admin-on-reste supprime une ressource de son état local lorsqu'elle émet un appel API DELETE. Donc, il disparaît de l'interface utilisateur avant même qu'il ne rafraîchisse son état avec un GET. C'est cool.Redéfinition du réducteur CRUD_DELETE_SUCCESS pour les suppressions non immédiates

Parfois, une opération de suppression n'est pas immédiate. L'exemple du monde réel serait AWS - la suppression d'une instance EC2 prend du temps. La suppression d'une instance RDS prend 15 minutes. La suppression d'une instance cloudfront prend encore plus de temps.

Pour un sous-ensemble de mes API, je veux que le bouton DELETE mette à jour l'état local (le champ 'state' devient 'deleting') plutôt que de le supprimer.

En regardant this commit, tous les CRUD_DELETE_SUCCESS entraînent la suppression des ressources de la liste.

Je pense que je pourrais implémenter une action et un bouton personnalisés (et il y a peut-être plus de copier-pâtes pour ajouter une page de confirmation?) Mais je ne sais pas comment mettre à jour l'état local fetch: UPDATE action?

Quelqu'un a-t-il des idées sur la bonne façon de le faire en administration-repos?

+0

Il est frustrant que 'crudDelete' soit quelque chose qui peut être réglé sur un' 'mais il y a maintenant moyen de faire surface. – Jc2k

+0

Vous pouvez essayer d'ouvrir un problème. S'ils aiment vos idées, ils écoutent. Ou au moins fournir une justification claire quant à pourquoi ils n'écoutent pas. –

Répondre

0

Vous aurez probablement aussi besoin d'une saga personnalisée. Dans celui-ci, gérer votre action de suppression personnalisée avec la logique nécessaire pour vérifier si elle est terminée. Quand c'est le cas, envoyez le CRUD_DELETE_SUCCESS avec les données attendues (vous devrez explorer le code).

+0

Mais si j'expédie 'CRUD_DELETE_SUCCESS', est-ce que je ne déclencherai pas vraiment le peu de code que j'essayais d'éviter de déclencher? – Jc2k

0

Vous pouvez toujours attacher des actions personnalisées avec AOR. DELETING peut être une action envoyée par votre composant.

Vous pouvez attribuer un Réducteur pour effectuer des changements d'état quand il voit SUPPRIMER (set état d'enregistrement à la suppression) https://marmelab.com/admin-on-rest/Actions.html#using-a-custom-reducer

Une saga peut rediriger les utilisateurs vers la page Holding. AOR déclenche un DELETING_SUCCESS lorsque l'action de suppression est terminée et DELETING_FAILURE dans le cas contraire. Vous pouvez l'utiliser pour afficher une notification en fonction de l'état de la notification.

Vous gérez essentiellement tout ce cycle en contournant la logique existante.

+0

C'est à peu près la direction dans laquelle j'ai essayé d'aller - mais cela ressemble à beaucoup de copier-coller et de duplication. – Jc2k

+0

Je ne sais pas vraiment s'il y aura beaucoup de copier coller tant que votre flux de données est personnalisé (et séparé) de aor. Si vous voulez rejoindre le flux régulier à tout moment, vous pouvez aussi lancer le CRUD_DELETE_SUCCESS/FAILURE (comme indiqué par @gildas) à partir d'une action personnalisée et rejoindre le flux régulier. –

+0

Mais si je tire un 'CRUD_DELETE_SUCCESS', ne déclencherai-je pas le réducteur de la liste? (Voir [ici] (https://github.com/marmelab/admin-on-rest/commit/cd5a5a9e95f013cd929cfe6398fed7f603ce9d3d) – Jc2k