diff --git a/src/pages/gallery/index.tsx b/src/pages/gallery/index.tsx index 32b993f5e..00b3f9778 100644 --- a/src/pages/gallery/index.tsx +++ b/src/pages/gallery/index.tsx @@ -199,7 +199,7 @@ export default function Gallery(props: Props) { setCollectionAndItsLatestFile(collectionAndItsLatestFile); const favItemIds = await getFavItemIds(data); setFavItemIds(favItemIds); - await checkSubscriptionPurchase(setDialogMessage); + await checkSubscriptionPurchase(setDialogMessage, router); await syncWithRemote(); setIsFirstLoad(false); }; diff --git a/src/utils/billingUtil.ts b/src/utils/billingUtil.ts index 2c2c6f9a7..6ce0ec5dd 100644 --- a/src/utils/billingUtil.ts +++ b/src/utils/billingUtil.ts @@ -9,6 +9,7 @@ import billingService, { import { SUBSCRIPTION_VERIFICATION_ERROR } from './common/errorUtil'; import { getData, LS_KEYS } from './storage/localStorage'; import { MessageAttributes } from 'components/MessageDialog'; +import { NextRouter } from 'next/router'; export function convertBytesToGBs(bytes, precision?): string { return (bytes / (1024 * 1024 * 1024)).toFixed(precision ?? 2); @@ -161,32 +162,39 @@ export async function updatePaymentMethod(event, setDialogMessage, setLoading) { } export async function checkSubscriptionPurchase( - setDialogMessage: React.Dispatch> + setDialogMessage: React.Dispatch>, + router: NextRouter ) { - const urlParams = new URLSearchParams(window.location.search); - const sessionId = urlParams.get('session_id'); - if (sessionId === '-1') { - setDialogMessage({ - title: constants.SUBSCRIPTION_PURCHASE_CANCELLED, - close: { variant: 'danger' }, - }); - } else if (sessionId) { - try { - const subscription = await billingService.verifySubscription( - sessionId - ); + try { + const urlParams = new URLSearchParams(window.location.search); + const sessionId = urlParams.get('session_id'); + if (sessionId === '-1') { setDialogMessage({ - title: constants.SUBSCRIPTION_PURCHASE_SUCCESS_TITLE, - close: { variant: 'success' }, - content: constants.SUBSCRIPTION_PURCHASE_SUCCESS( - subscription?.expiryTime - ), - }); - } catch (e) { - setDialogMessage({ - title: SUBSCRIPTION_VERIFICATION_ERROR, - close: {}, + title: constants.SUBSCRIPTION_PURCHASE_CANCELLED, + close: { variant: 'danger' }, }); + } else if (sessionId) { + try { + const subscription = await billingService.verifySubscription( + sessionId + ); + setDialogMessage({ + title: constants.SUBSCRIPTION_PURCHASE_SUCCESS_TITLE, + close: { variant: 'success' }, + content: constants.SUBSCRIPTION_PURCHASE_SUCCESS( + subscription?.expiryTime + ), + }); + } catch (e) { + setDialogMessage({ + title: SUBSCRIPTION_VERIFICATION_ERROR, + close: {}, + }); + } } + } catch (e) { + //ignore + } finally { + router.push('gallery', undefined, { shallow: true }); } }