From fa06f38d4784519c9790e9961e442c0394200023 Mon Sep 17 00:00:00 2001 From: Somay Chauhan Date: Mon, 29 Jul 2024 19:01:31 +0530 Subject: [PATCH] fix: refresh connect atoms on token change (#15933) * added dropdown * change comment * fix: added types --------- Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Co-authored-by: Keith Williams --- packages/platform/examples/base/package.json | 3 +- .../platform/examples/base/src/pages/_app.tsx | 28 +++++++++++++++++- .../base/src/pages/api/get-managed-users.ts | 29 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 packages/platform/examples/base/src/pages/api/get-managed-users.ts diff --git a/packages/platform/examples/base/package.json b/packages/platform/examples/base/package.json index 535a4ab5f2..415480d036 100644 --- a/packages/platform/examples/base/package.json +++ b/packages/platform/examples/base/package.json @@ -14,7 +14,8 @@ "next": "14.0.4", "prisma": "^5.7.1", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "react-select": "^5.8.0" }, "devDependencies": { "@types/node": "^20.3.1", diff --git a/packages/platform/examples/base/src/pages/_app.tsx b/packages/platform/examples/base/src/pages/_app.tsx index ca83d84598..813e101f3a 100644 --- a/packages/platform/examples/base/src/pages/_app.tsx +++ b/packages/platform/examples/base/src/pages/_app.tsx @@ -1,14 +1,17 @@ +import type { Data } from "@/pages/api/get-managed-users"; import "@/styles/globals.css"; import type { AppProps } from "next/app"; import { Poppins } from "next/font/google"; import { usePathname } from "next/navigation"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; +import Select from "react-select"; import { CalProvider, BookerEmbed } from "@calcom/atoms"; import "@calcom/atoms/globals.min.css"; const poppins = Poppins({ subsets: ["latin"], weight: ["400", "800"] }); +type TUser = Data["users"][0]; function generateRandomEmail() { const localPartLength = 10; @@ -27,14 +30,26 @@ export default function App({ Component, pageProps }: AppProps) { const [accessToken, setAccessToken] = useState(""); const [email, setUserEmail] = useState(""); const [username, setUsername] = useState(""); + const [selectedUser, setSelectedUser] = useState(null); + const [options, setOptions] = useState([]); + const router = useRouter(); const pathname = usePathname(); + useEffect(() => { + fetch("/api/get-managed-users", { + method: "get", + }).then(async (res) => { + const data = await res.json(); + setOptions( + data.users.map((item: Data["users"][0]) => ({ ...item, value: item.id, label: item.username })) + ); + }); + }, []); useEffect(() => { const randomEmail = generateRandomEmail(); fetch("/api/managed-user", { method: "POST", - body: JSON.stringify({ email: randomEmail }), }).then(async (res) => { const data = await res.json(); @@ -43,8 +58,19 @@ export default function App({ Component, pageProps }: AppProps) { setUsername(data.username); }); }, []); + useEffect(() => { + if (!!selectedUser) { + setAccessToken(selectedUser.accessToken); + setUserEmail(selectedUser.email); + setUsername(selectedUser.username); + } + }, [selectedUser]); + return (
+ {options.length > 0 && ( +