From b64725f8544c038ac23332aa75f7fe77ee51f86f Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Fri, 23 Aug 2024 13:42:54 +0800 Subject: [PATCH] fix add credential on safari --- apps/web/src/api.tsx | 16 +++++++++------- apps/web/src/app/(app)/credentials.tsx | 26 +++++++++++--------------- packages/ui/src/dropdown-menu.tsx | 2 +- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/apps/web/src/api.tsx b/apps/web/src/api.tsx index 4ca20f0c..4f314f6a 100644 --- a/apps/web/src/api.tsx +++ b/apps/web/src/api.tsx @@ -114,14 +114,15 @@ export const PROVIDER_DISPLAY_NAMES: Record = { }; export const addCredential = action(async (provider: AuthProvider) => { - const w = window.open(await loginURLForProvider(provider)); - if (!w) throw { error: "window-open-failed" }; - - const searchParams = await new Promise((res, rej) => { - const onBeforeUnload = () => rej(); - - w.addEventListener("beforeunload", onBeforeUnload); + const w = window.open(await loginURLForProvider(provider), "_blank"); + if (!w) { + toast.error( + "Failed to open login window. Make sure your browser isn't blocking popups.", + ); + throw { error: "window-open-failed" }; + } + const searchParams = await new Promise((res) => { window.addEventListener("message", (e) => { if (e.source !== w) return; @@ -183,6 +184,7 @@ export const getCredentials = cache(async () => { return c; }, "credentials"); +import { toast } from "solid-sonner"; import { createStorage } from "unstorage"; import cloudflareKVHTTPDriver from "unstorage/drivers/cloudflare-kv-http"; diff --git a/apps/web/src/app/(app)/credentials.tsx b/apps/web/src/app/(app)/credentials.tsx index ba57ec7b..3bd6bcfa 100644 --- a/apps/web/src/app/(app)/credentials.tsx +++ b/apps/web/src/app/(app)/credentials.tsx @@ -54,21 +54,21 @@ function AddCredentialButton() { return ( - Add Connection + Add Credential {(provider) => ( - doAddCredential(provider).then((cred) => + onClick={() => { + doAddCredential(provider).then((cred) => { toast.success( <> Credential {cred.user.displayName} added for{" "} {PROVIDER_DISPLAY_NAMES[provider]} , - ), - ) - } + ); + }); + }} > {PROVIDER_DISPLAY_NAMES[provider]} @@ -85,7 +85,10 @@ function CredentialsList() { return (
    - s.pending)}> + +

    No connections found

    +
    + s.pending)}> {(submission) => (
  • @@ -101,14 +104,7 @@ function CredentialsList() {
  • )}
    - - No connections found -

    - } - > + {(connection) => { const removeSubmission = useSubmission( removeCredential, diff --git a/packages/ui/src/dropdown-menu.tsx b/packages/ui/src/dropdown-menu.tsx index e220e9f3..dbb2e3a9 100644 --- a/packages/ui/src/dropdown-menu.tsx +++ b/packages/ui/src/dropdown-menu.tsx @@ -51,7 +51,7 @@ const DropdownMenuItem = ( return (