Skip to content
This repository was archived by the owner on Dec 18, 2024. It is now read-only.
This repository was archived by the owner on Dec 18, 2024. It is now read-only.

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

Open
@pduchesne

Description

@pduchesne

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 :
    export default function useSession(): SessionInfo {
    const { session, sessionRequestInProgress, fetch, login, logout } =
    useContext(SessionContext);
    return {
    session,
    sessionRequestInProgress,
    fetch,
    login,
    logout,
    };
  • 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)
    return (
    <SessionContext.Provider
    value={{
    session,
    login: contextLogin,
    logout: contextLogout,
    sessionRequestInProgress,
    setSessionRequestInProgress,
    fetch,
    profile,
    }}

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions