diff --git a/src/front/Components/Layouts/Subscription/SubscriptionSuccess/index.tsx b/src/front/Components/Layouts/Subscription/SubscriptionSuccess/index.tsx index 926aca9f..ed557b9b 100644 --- a/src/front/Components/Layouts/Subscription/SubscriptionSuccess/index.tsx +++ b/src/front/Components/Layouts/Subscription/SubscriptionSuccess/index.tsx @@ -20,20 +20,49 @@ export default function SubscriptionSuccess() { const [customer, setCustomer] = useState(null); const loadSubscription = useCallback(async () => { - const jwt = JwtService.getInstance().decodeJwt(); - const subscription = await Subscriptions.getInstance().get({ where: { office: { uid: jwt?.office_Id } } }); - if (!subscription[0]) return; - setSubscription(subscription[0]); - const customer = await Stripe.getInstance().getCustomerBySubscriptionId(subscription[0].stripe_subscription_id!); - setCustomer(customer); + try { + const jwt = JwtService.getInstance().decodeJwt(); + if (!jwt || !jwt.office_Id) { + console.error("No valid JWT token found"); + return; + } + + const subscription = await Subscriptions.getInstance().get({ + where: { office: { uid: jwt.office_Id } } + }); + if (!subscription[0]) return; + + setSubscription(subscription[0]); + const customer = await Stripe.getInstance().getCustomerBySubscriptionId( + subscription[0].stripe_subscription_id! + ); + setCustomer(customer); + } catch (error) { + console.error("Error loading subscription:", error); + } }, []); const refreshToken = useCallback(async () => { - CookieService.getInstance().deleteCookie("leCoffreAccessToken"); - const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken"); - if (!refreshToken) return; - await JwtService.getInstance().forceRefreshToken(refreshToken); - await loadSubscription(); + try { + const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken"); + if (!refreshToken) { + console.error("No refresh token found"); + return; + } + + const success = await JwtService.getInstance().forceRefreshToken(refreshToken); + if (!success) { + console.error("Failed to refresh token"); + return; + } + + // Attendre un peu pour s'assurer que le cookie est bien défini + await new Promise(resolve => setTimeout(resolve, 100)); + + await loadSubscription(); + } catch (error) { + console.error("Error refreshing token:", error); + } }, [loadSubscription]); const getFrequency = useCallback(() => { diff --git a/src/front/Stores/CustomerStore.ts b/src/front/Stores/CustomerStore.ts index 2a3ff88e..94edfa01 100644 --- a/src/front/Stores/CustomerStore.ts +++ b/src/front/Stores/CustomerStore.ts @@ -23,16 +23,22 @@ export default class UserStore { public async connect(accessToken: string, refreshToken: string) { try { - //Save tokens in cookies + // Assigner les tokens à l'instance + this.accessToken = accessToken; + this.refreshToken = refreshToken; + + // Sauvegarder les tokens dans les cookies CookieService.getInstance().setCookie("leCoffreAccessToken", accessToken); CookieService.getInstance().setCookie("leCoffreRefreshToken", refreshToken); this.event.emit("connection", this.accessToken); + return true; } catch (error) { - console.error(error); + console.error("Error connecting user:", error); + this.accessToken = null; + this.refreshToken = null; return false; } - return true; } public async disconnect() {