• eluvatar@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Kinda wish it had DI, coming from Angular and C# it’s so helpful to have stateful services, I know one answer is to just use a global static, but that causes huge issues on the server side and it’s really easy to make mistakes there. It feels like contexts are the answer, but then you can’t use those services in load functions.

    I’m curious where do you store the current user data. In a static store? Return it from a load function and access it via the page store? Somewhere else?

    • silas@programming.devOPM
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Well, I usually fetch and return user data from a top-level +layout.js or +layout.server.js. Then my user data is always available in every layout or page through the data prop (and types are all handle automatically for this too).

      I then invalidate and re-fetch that data using invalidate(), invalidateAll(), and depends() if the user data becomes stale.

      Any state/data from the user that needs to stay server-side (like tokens) I keep in event.locals which is available in all .server.js files