SessionProvider: centralised state management

this replaces auth-provider, centralising user data

can be extended to keep additional data

allows for user data to propogate components throughout the app

provides useSession and useAuthenticatedSession()
This commit is contained in:
Oliver Bryan
2026-01-09 06:14:09 +00:00
parent 3d963579a3
commit ac0de68d47
13 changed files with 172 additions and 199 deletions

View File

@@ -1,4 +1,5 @@
import { type FormEvent, useState } from "react";
import { useAuthenticatedSession } from "@/components/session-provider";
import { Button } from "@/components/ui/button";
import {
Dialog,
@@ -28,7 +29,7 @@ export function CreateOrganisation({
trigger?: React.ReactNode;
completeAction?: (organisationId: number) => void | Promise<void>;
}) {
const userId = JSON.parse(localStorage.getItem("user") || "{}").id as number | undefined;
const { user } = useAuthenticatedSession();
const [open, setOpen] = useState(false);
const [name, setName] = useState("");
@@ -64,7 +65,7 @@ export function CreateOrganisation({
if (name.trim() === "" || name.trim().length > 16) return;
if (slug.trim() === "" || slug.trim().length > 16) return;
if (!userId) {
if (!user.id) {
setError("you must be logged in to create an organisation");
return;
}
@@ -75,7 +76,7 @@ export function CreateOrganisation({
name,
slug,
description,
userId,
userId: user.id,
onSuccess: async (data) => {
setOpen(false);
reset();