Fix login redirect: load user before navigating to dashboard
This commit is contained in:
@@ -195,7 +195,7 @@ export const getSavedRecommendations = () =>
|
|||||||
api.get<RecommendationItem[]>('/recommendations/saved').then((r) => r.data)
|
api.get<RecommendationItem[]>('/recommendations/saved').then((r) => r.data)
|
||||||
|
|
||||||
export const toggleSaveRecommendation = (id: string) =>
|
export const toggleSaveRecommendation = (id: string) =>
|
||||||
api.post<{ saved: boolean }>(`/recommendations/${id}/toggle-save`).then((r) => r.data)
|
api.post<{ saved: boolean }>(`/recommendations/${id}/save`).then((r) => r.data)
|
||||||
|
|
||||||
export const dislikeRecommendation = (id: string) =>
|
export const dislikeRecommendation = (id: string) =>
|
||||||
api.post<{ disliked: boolean }>(`/recommendations/${id}/dislike`).then((r) => r.data)
|
api.post<{ disliked: boolean }>(`/recommendations/${id}/dislike`).then((r) => r.data)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (token) {
|
if (token && !user) {
|
||||||
loadUser().finally(() => setLoading(false))
|
loadUser().finally(() => setLoading(false))
|
||||||
} else {
|
} else {
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
@@ -43,6 +43,13 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|||||||
const loginFn = async (newToken: string) => {
|
const loginFn = async (newToken: string) => {
|
||||||
localStorage.setItem('vynl_token', newToken)
|
localStorage.setItem('vynl_token', newToken)
|
||||||
setTokenState(newToken)
|
setTokenState(newToken)
|
||||||
|
// Load user immediately so ProtectedRoute sees them before navigate
|
||||||
|
try {
|
||||||
|
const userData = await getMe()
|
||||||
|
setUser(userData)
|
||||||
|
} catch {
|
||||||
|
// will retry via useEffect
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const logout = () => {
|
const logout = () => {
|
||||||
|
|||||||
@@ -74,8 +74,9 @@ export default function Discover() {
|
|||||||
excludeGenres.trim() || undefined,
|
excludeGenres.trim() || undefined,
|
||||||
count,
|
count,
|
||||||
)
|
)
|
||||||
setResults(response.recommendations)
|
console.log('Discover response:', response)
|
||||||
setRemaining(response.remaining_this_week)
|
setResults(response.recommendations || [])
|
||||||
|
setRemaining(response.remaining_this_week ?? null)
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
setError(
|
setError(
|
||||||
err.response?.data?.detail || 'Failed to generate recommendations. Please try again.'
|
err.response?.data?.detail || 'Failed to generate recommendations. Please try again.'
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import tailwindcss from '@tailwindcss/vite'
|
|||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [react(), tailwindcss()],
|
plugins: [react(), tailwindcss()],
|
||||||
server: {
|
server: {
|
||||||
|
allowedHosts: ["deepcutsai.com"],
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://backend:8000',
|
target: 'http://backend:8000',
|
||||||
|
|||||||
Reference in New Issue
Block a user