From 84f5e74f00135b2dd0dddfa2070bf7bc03abd82b Mon Sep 17 00:00:00 2001 From: Tobias Johansson Date: Tue, 20 Aug 2024 15:04:02 +0000 Subject: [PATCH] Merged in feat/SW-104-add-card (pull request #410) Feat/SW-104 add card * feat: add api endpoints for adding and removing credit card * feat(SW-104): Added Sonner toast lib * feat(SW-104): Add route handlers for add card flow * feat(SW-104): Added link to route handler and trigger toast when query params from callback is set * feat(SW-104): Added translations for add card success toast * feat(SW-104): Refactored to use client request for initiate save card * fix(SW-104): Return proper status codes when initiating save card fails * fix(SW-104): remove delete card endpoint because it was added in SW-245 * fix(SW-104): remove console.log * fix(SW-104): Use api.post for save card request * fix(SW-104): move function declaration above export * fix(SW-104): handle response of save card and use Lang enum * fix(SW-104): added comment for why setTimeout is needed for toast and also removed lang prop * fix(SW-104): added type for AddCreditCardButton props * feat: add toasts * fix(SW-104): start using toasts from ToastHandler and fix problem with duplicate toasts * fix(SW-104): remove unnecessary wrapping div Approved-by: Michael Zetterberg --- .../my-pages/profile/@creditCards/page.tsx | 7 +- app/[lang]/(live)/layout.tsx | 2 + app/api/web/add-card-callback/[lang]/route.ts | 47 +++++++++ components/Icons/CloseLarge.tsx | 40 ++++++++ components/Icons/CrossCircle.tsx | 40 ++++++++ components/Icons/WarningTriangle.tsx | 40 ++++++++ components/Icons/get-icon-by-icon-name.ts | 9 ++ components/Icons/icon.module.css | 2 +- components/Icons/index.tsx | 3 + .../addCreditCardButton.module.css | 3 + .../Profile/AddCreditCardButton/index.tsx | 72 ++++++++++++-- components/TempDesignSystem/Toasts/index.tsx | 96 +++++++++++++++++++ .../TempDesignSystem/Toasts/toasts.module.css | 38 ++++++++ components/TempDesignSystem/Toasts/toasts.ts | 10 ++ .../TempDesignSystem/Toasts/variants.ts | 14 +++ i18n/dictionaries/da.json | 1 + i18n/dictionaries/de.json | 1 + i18n/dictionaries/en.json | 1 + i18n/dictionaries/fi.json | 3 +- i18n/dictionaries/no.json | 1 + i18n/dictionaries/sv.json | 1 + lib/api/endpoints.ts | 1 + lib/api/index.ts | 2 +- package-lock.json | 10 ++ package.json | 1 + server/routers/user/input.ts | 11 +++ server/routers/user/output.ts | 13 +++ server/routers/user/query.ts | 77 ++++++++++++++- types/components/icon.ts | 3 + .../myPages/myProfile/addCreditCardButton.ts | 3 + 30 files changed, 537 insertions(+), 15 deletions(-) create mode 100644 app/api/web/add-card-callback/[lang]/route.ts create mode 100644 components/Icons/CloseLarge.tsx create mode 100644 components/Icons/CrossCircle.tsx create mode 100644 components/Icons/WarningTriangle.tsx create mode 100644 components/Profile/AddCreditCardButton/addCreditCardButton.module.css create mode 100644 components/TempDesignSystem/Toasts/index.tsx create mode 100644 components/TempDesignSystem/Toasts/toasts.module.css create mode 100644 components/TempDesignSystem/Toasts/toasts.ts create mode 100644 components/TempDesignSystem/Toasts/variants.ts create mode 100644 types/components/myPages/myProfile/addCreditCardButton.ts diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx index 6fe1f7e01..a3cff5783 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx @@ -1,3 +1,4 @@ +import { env } from "@/env/server" import { serverClient } from "@/lib/trpc/server" import { CreditCard, Delete } from "@/components/Icons" @@ -18,6 +19,8 @@ export default async function CreditCardSlot({ params }: PageArgs) { const { formatMessage } = await getIntl() const creditCards = await serverClient().user.creditCards() + const { lang } = params + return (
@@ -41,7 +44,9 @@ export default async function CreditCardSlot({ params }: PageArgs) { ))} ) : null} - +
) } diff --git a/app/[lang]/(live)/layout.tsx b/app/[lang]/(live)/layout.tsx index 35144b8d9..fe70a0371 100644 --- a/app/[lang]/(live)/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -9,6 +9,7 @@ import TokenRefresher from "@/components/Auth/TokenRefresher" import AdobeSDKScript from "@/components/Current/AdobeSDKScript" import Footer from "@/components/Current/Footer" import VwoScript from "@/components/Current/VwoScript" +import { ToastHandler } from "@/components/TempDesignSystem/Toasts" import { preloadUserTracking } from "@/components/TrackingSDK" import { getIntl } from "@/i18n" import ServerIntlProvider from "@/i18n/Provider" @@ -59,6 +60,7 @@ export default async function RootLayout({ {header} {children} +