solid-ui-react icon indicating copy to clipboard operation
solid-ui-react copied to clipboard

loaded profile cannot be obtained from session hook, and skipping the loading breaks the SessionContext logout updates

Open pduchesne opened this issue 9 months ago • 0 comments

Search terms you've used

profile, logout

Bug description

There is a problem with the way the profiles are used in the session init. The problem is two-fold :

  • profiles are loaded by default on session init, and set in a state that is part of the SessionContext. However these profiles are not exposed by the useSession hook, making them useless, and therefore wasting an HTTP request on login : https://github.com/inrupt/solid-ui-react/blob/52cbbc4169abf494a0d00a2c8d6b16a8e6668386/src/hooks/useSession/index.tsx#L37-L47
  • the skipLoadingProfiles flag can be used to remove that behaviour. However, it turns out the profile state is the only variable that triggers a session context update when logging out (the session object does not get updated by a logout, only its internal isLoggedIn field) https://github.com/inrupt/solid-ui-react/blob/52cbbc4169abf494a0d00a2c8d6b16a8e6668386/src/context/sessionContext/index.tsx#L190-L200

So trying to disable the profile loading actually disables the logout updates one can expect from a SessionProvider, thereby mandating the explicit use of an onLogout callback.

Expected result

  • have the profile exposed through the useSession hook
  • be able to use skipLoadingProfiles while relying SessionProvider to trigger proper updates on logout

Additional information

Tested with 3.0.0

pduchesne avatar May 17 '24 10:05 pduchesne