From 76cd1945c4f87f40e7f72440bb92e247439642cd Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Mon, 24 Feb 2025 11:31:19 +0000 Subject: [PATCH] Merged in feat(SW-1677)-my-stay-update-contact-user (pull request #1386) Feat(SW-1677) my stay update contact user * feat(SW-1677): Hide membersettings that doesnt match the booking * feat(SW-1677) Edit my stay contact details as user Approved-by: Linus Flood --- components/Forms/Edit/Profile/index.tsx | 9 ++++- .../MyStay/Room/GuestDetails.tsx | 35 ++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/components/Forms/Edit/Profile/index.tsx b/components/Forms/Edit/Profile/index.tsx index 4c7b70fea..7e9578106 100644 --- a/components/Forms/Edit/Profile/index.tsx +++ b/components/Forms/Edit/Profile/index.tsx @@ -94,7 +94,14 @@ export default function Form({ user }: EditFormProps) { // Kept logout out of Next router forcing browser to navigate on logout url window.location.href = logout[lang] } else { - router.push(profile[lang]) + const myStayReturnRoute = localStorage.getItem("myStayReturnRoute") + if (myStayReturnRoute) { + const returnRoute = JSON.parse(myStayReturnRoute) + localStorage.removeItem("myStayReturnRoute") + router.push(returnRoute.path) + } else { + router.push(profile[lang]) + } router.refresh() // Can be removed on NextJs 15 } break diff --git a/components/HotelReservation/MyStay/Room/GuestDetails.tsx b/components/HotelReservation/MyStay/Room/GuestDetails.tsx index a4e011f38..c00104a0a 100644 --- a/components/HotelReservation/MyStay/Room/GuestDetails.tsx +++ b/components/HotelReservation/MyStay/Room/GuestDetails.tsx @@ -1,3 +1,5 @@ +"use client" +import { useRouter } from "next/navigation" import { useIntl } from "react-intl" import { DiamondIcon, EditIcon } from "@/components/Icons" @@ -5,6 +7,7 @@ import MembershipLevelIcon from "@/components/Levels/Icon" import Button from "@/components/TempDesignSystem/Button" import Body from "@/components/TempDesignSystem/Text/Body" import Caption from "@/components/TempDesignSystem/Text/Caption" +import useLang from "@/hooks/useLang" import styles from "./room.module.css" @@ -21,13 +24,34 @@ export default function GuestDetails({ isMobile?: boolean }) { const intl = useIntl() + const lang = useLang() + const router = useRouter() const containerClass = isMobile ? styles.guestDetailsMobile : styles.guestDetailsDesktop + const isMemberBooking = + booking.guest.membershipNumber === user?.membership?.membershipNumber + + function handleModifyGuestDetails() { + if (isMemberBooking) { + const expirationTime = Date.now() + 10 * 60 * 1000 + localStorage.setItem( + "myStayReturnRoute", + JSON.stringify({ + path: window.location.pathname, + expiry: expirationTime, + }) + ) + router.push(`/${lang}/scandic-friends/my-pages/profile/edit`) + } else { + console.log("not a member booking") // TODO: Implement non-member booking + } + } + return (
- {user?.membership && ( + {isMemberBooking && (
@@ -41,7 +65,7 @@ export default function GuestDetails({
- {user.membership.currentPoints} + {user.membership!.currentPoints}
@@ -71,10 +95,10 @@ export default function GuestDetails({ {booking.guest.firstName} {booking.guest.lastName} - {user?.membership && ( + {isMemberBooking && ( {intl.formatMessage({ id: "Member no." })}{" "} - {user.membership.membershipNumber} + {user.membership!.membershipNumber} )} {booking.guest.email} @@ -86,6 +110,7 @@ export default function GuestDetails({ variant="icon" color="burgundy" intent={isMobile ? "secondary" : "text"} + onClick={handleModifyGuestDetails} >