Skip to content

Commit d8e13c1

Browse files
authored
Merge pull request #168 from medusajs/onboarding-flow
feat: onboarding flow
2 parents ee43930 + 2fe7b12 commit d8e13c1

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

src/lib/context/store-context.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from "medusa-react"
1212
import React, { useEffect, useState } from "react"
1313
import { useCartDropdown } from "./cart-dropdown-context"
14+
import { useSearchParams } from "next/navigation"
1415

1516
interface VariantInfoProps {
1617
variantId: string
@@ -57,6 +58,17 @@ export const StoreProvider = ({ children }: StoreProps) => {
5758
const removeLineItem = useDeleteLineItem(cart?.id!)
5859
const adjustLineItem = useUpdateLineItem(cart?.id!)
5960

61+
// check if the user is onboarding and sets the onboarding session storage
62+
const searchParams = useSearchParams()
63+
const onboardingCartId = searchParams.get("cart_id")
64+
const isOnboarding = searchParams.get("onboarding")
65+
66+
useEffect(() => {
67+
if (isOnboarding === "true") {
68+
sessionStorage.setItem("onboarding", "true")
69+
}
70+
}, [isOnboarding])
71+
6072
const storeRegion = (regionId: string, countryCode: string) => {
6173
if (!IS_SERVER) {
6274
localStorage.setItem(
@@ -195,7 +207,7 @@ export const StoreProvider = ({ children }: StoreProps) => {
195207

196208
useEffect(() => {
197209
const ensureCart = async () => {
198-
const cartId = getCart()
210+
const cartId = onboardingCartId || getCart()
199211
const region = getRegion()
200212

201213
if (cartId) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import Button from "@modules/common/components/button"
2+
3+
const OnboardingCta = ({ orderId }: { orderId: string }) => {
4+
const resetOnboarding = () => {
5+
window.sessionStorage.setItem("onboarding", "false")
6+
}
7+
8+
return (
9+
<div className="max-w-4xl h-full bg-white w-full mb-4">
10+
<div className="flex flex-col gap-y-6 center p-10 md:items-center">
11+
<span className="text-gray-700 text-xl">
12+
Your test order was successfully created! 🎉
13+
</span>
14+
<span className="text-gray-700 text-small-regular">
15+
You can now complete setting up your store in the admin.
16+
</span>
17+
<a
18+
href={`http://localhost:7001/a/orders/?order_id=${orderId}&onboarding_step=setup_finished_nextjs`}
19+
onClick={resetOnboarding}
20+
>
21+
<Button className="md:w-80">Complete setup in admin</Button>
22+
</a>
23+
</div>
24+
</div>
25+
)
26+
}
27+
28+
export default OnboardingCta

src/modules/order/templates/order-completed-template.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import Items from "@modules/order/components/items"
66
import OrderDetails from "@modules/order/components/order-details"
77
import OrderSummary from "@modules/order/components/order-summary"
88
import ShippingDetails from "@modules/order/components/shipping-details"
9-
import React from "react"
9+
import OnboardingCta from "@modules/order/components/onboarding-cta"
10+
import React, { useEffect, useState } from "react"
1011

1112
type OrderCompletedTemplateProps = {
1213
order: Order
@@ -15,9 +16,17 @@ type OrderCompletedTemplateProps = {
1516
const OrderCompletedTemplate: React.FC<OrderCompletedTemplateProps> = ({
1617
order,
1718
}) => {
19+
const [isOnboarding, setIsOnboarding] = useState<boolean>(false)
20+
21+
useEffect(() => {
22+
const onboarding = window.sessionStorage.getItem("onboarding")
23+
setIsOnboarding(onboarding === "true")
24+
}, [])
25+
1826
return (
1927
<div className="bg-gray-50 py-6 min-h-[calc(100vh-64px)]">
20-
<div className="content-container flex justify-center">
28+
<div className="content-container flex flex-col justify-center items-center">
29+
{isOnboarding && <OnboardingCta orderId={order.id} />}
2130
<div className="max-w-4xl h-full bg-white w-full">
2231
<OrderDetails order={order} />
2332
<Items

0 commit comments

Comments
 (0)