diff --git a/lib/src/Components/Auth/useAuth.tsx b/lib/src/Components/Auth/useAuth.tsx index 043df072..fc69408f 100644 --- a/lib/src/Components/Auth/useAuth.tsx +++ b/lib/src/Components/Auth/useAuth.tsx @@ -1,4 +1,5 @@ import { createContext, useState, useContext, useEffect, useCallback } from 'react' +import { useNavigate } from 'react-router-dom' import type { InviteApi } from '#types/InviteApi' import type { UserApi } from '#types/UserApi' @@ -49,6 +50,7 @@ const AuthContext = createContext({ * @category Auth */ export const AuthProvider = ({ userApi, inviteApi, children }: AuthProviderProps) => { + const navigate = useNavigate() const [user, setUser] = useState(null) const [token, setToken] = useState() const [loading, setLoading] = useState(true) @@ -80,13 +82,17 @@ export const AuthProvider = ({ userApi, inviteApi, children }: AuthProviderProps try { const user = await userApi.login(credentials.email, credentials.password) setToken(user?.access_token) + const fullUser = await loadUser() const inviteCode = localStorage.getItem('inviteCode') if (inviteCode) { // If an invite code is stored, redeem it - await inviteApi.redeemInvite(inviteCode) + const invitingProfileId = await inviteApi.redeemInvite(inviteCode) localStorage.removeItem('inviteCode') // Clear invite code after redeeming + if (invitingProfileId) { + navigate(`/item/${invitingProfileId}`) + } } - return await loadUser() + return fullUser } catch (error) { setLoading(false) throw error diff --git a/lib/src/Components/Onboarding/InvitePage.tsx b/lib/src/Components/Onboarding/InvitePage.tsx index a7104fa1..77bb382e 100644 --- a/lib/src/Components/Onboarding/InvitePage.tsx +++ b/lib/src/Components/Onboarding/InvitePage.tsx @@ -28,18 +28,17 @@ export function InvitePage({ inviteApi }: Props) { const invitingProfileId = await inviteApi.redeemInvite(id) if (invitingProfileId) { toast.success('Invite redeemed successfully!') - navigate(`/item/${id}`) + navigate(`/item/${invitingProfileId}`) } else { toast.error('Failed to redeem invite') + navigate('/') } - navigate('/') } if (isLoadingAuthentication) return if (isAuthenticated) { void redeemInvite() - navigate('/') } else { // Save invite code in local storage localStorage.setItem('inviteCode', id)