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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proof of concept react query #6417

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft

Conversation

freddi301
Copy link
Collaborator

@freddi301 freddi301 commented Nov 18, 2024

This is a pull request for a proof of concept of adopting a react rest api library.
It is meant as a discussion play-ground that eventually could evolve to a proper PR.

Motivation

Now remote calls lifecycle is handled manually with redux-saga.
Adopting a library that handles remote calls lifecycle:

  • reduces boilerplate, see comparison 5048596.
  • provides whole lifecycle management out of the box (caching, retry, intercept, loading and error states etc)

@freddi301
Copy link
Collaborator Author

as of now "kubb" codeine library is used to demonstrate the developer experience. It is not suited for the project, another library should be found or written.

@freddi301
Copy link
Collaborator Author

Allora Fred, in linea di massima siam d'accordo che react-query rimuove del boilerplate e gestisce già lui parecchi use-case senza reinventare la ruota ogni volta rendendoci la vita facile. Il problema però è che tutta l'app IO è stata ideata per utilzzare redux-saga per quel che riguarda le chiamate asincrone, più in particolare c'è un problema fondamntale riguardo la sessione scaduta e il refresh del token. Attualmente l'owner del renew token e refresh sessione sono i ragazzi del team Autenticazione & Identità che hanno astratto una saga ad alto livello chiamata withRefreshApiCall che è un metodo utilizzato da TUTTE le chiamate API da app IO che astrae tutto quello che riguarda la gestione dei 401 e del refresh della sessione, se guardi la sua implementazione è fatto ad-hoc per redux-saga che innesca a sua volta altre saghe che fanno comparire la famosa schermata di sessione scaduta all'utente innescando il flusso di rinnovo sessione tramite la richiesta biometrica all'utente.
Dall'implementazione fatta nella tua PR di POC questo non viene gestito e quindi succederebbe che se l'utente scade la sessione mentre fa una di quelle chiamate a CGN implementate con react-query, quindi il BE ci restituisce 401 e non riuscendo a gestirlo, verrebbe trattato come un "errore generico" piuttosto che innescare tutto il processo di rinnovo sessione con autenticazione biometrica.
Insomma, l'effort diventerebbe trasversale e non circoscritto al nostro dominio e quindi a meno che il team di Autenticazione & Identità non dedichi del tempo a predisporre una cosa del genere con un middleware anche per react-query, lo vedo purtroppo una soluzione impraticabile su app IO da fare al momento.
Reputa comunque che questa decisione va fatta oltre che via chat slack, bisognerebbe scrivere una RFC in cui si fa il paragone tra il prima e dopo, si spiega il perchè è meglio l'uno piuttosto che l'altro e si evidenziano i vari pros & cons di ogni soluzione e tutti i membri del team app IO scrivono un loro parere a riguardo per poi trarne una decisione finale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant