Skip to content

Commit 1ee27f6

Browse files
committed
Error messages, correction to removing token from url
1 parent 349f842 commit 1ee27f6

3 files changed

Lines changed: 56 additions & 17 deletions

File tree

apps/obsidian/src/components/AdminPanelSettings.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,21 @@ export const AdminPanelSettings = () => {
5050
return;
5151
}
5252
const sessionData = await client.auth.getSession();
53-
if (!sessionData.data.session) return;
53+
if (!sessionData.data.session) {
54+
new Notice("Failed to connect to the database", 3000);
55+
return;
56+
}
5457
/* eslint-disable @typescript-eslint/naming-convention */
5558
const { access_token, refresh_token } = sessionData.data.session;
5659
const { data, error } = await client.rpc("create_secret_token", {
5760
v_payload: JSON.stringify({ access_token, refresh_token }),
5861
expiry_interval: "45s",
5962
});
6063
/* eslint-enable @typescript-eslint/naming-convention */
61-
if (error || typeof data !== "string") return;
64+
if (error || typeof data !== "string") {
65+
new Notice("Failed to connect to the database", 3000);
66+
return;
67+
}
6268
if (data) window.open(`${nextRoot()}/auth/token?t=${data}&url=/`, "_blank");
6369
};
6470

apps/roam/src/components/settings/AdminPanel.tsx

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
Tabs,
1313
} from "@blueprintjs/core";
1414
import { Select } from "@blueprintjs/select";
15+
import { render as renderToast } from "roamjs-components/components/Toast";
1516
import {
1617
getSupabaseContext,
1718
getLoggedInClient,
@@ -35,6 +36,7 @@ import {
3536
import { FeatureFlagPanel } from "./components/BlockPropSettingPanels";
3637
import type { FeatureFlags } from "./utils/zodSchema";
3738
import { nextRoot } from "@repo/utils/execContext";
39+
import { useDroppableMeasuring } from "@dnd-kit/core/dist/hooks/utilities";
3840

3941
const NodeRow = ({ node }: { node: PConceptFull }) => {
4042
return (
@@ -295,17 +297,38 @@ const FeatureFlagsTab = (): React.ReactElement => {
295297

296298
const handleLoginHandoff = async () => {
297299
const client = await getLoggedInClient();
298-
if (!client) return;
300+
if (!client) {
301+
renderToast({
302+
content: "Could not connect to database",
303+
intent: Intent.DANGER,
304+
id: "client-access",
305+
});
306+
return;
307+
}
299308
const sessionData = await client.auth.getSession();
300-
if (!sessionData.data.session) return;
309+
if (!sessionData.data.session) {
310+
internalError({
311+
error: "Client w/o session",
312+
type: "database-login",
313+
userMessage: "Could not connect to database",
314+
});
315+
return;
316+
}
301317
/* eslint-disable @typescript-eslint/naming-convention */
302318
const { access_token, refresh_token } = sessionData.data.session;
303319
const { data, error } = await client.rpc("create_secret_token", {
304320
v_payload: JSON.stringify({ access_token, refresh_token }),
305321
expiry_interval: "45s",
306322
});
307323
/* eslint-enable @typescript-eslint/naming-convention */
308-
if (error || typeof data !== "string") return;
324+
if (error || typeof data !== "string") {
325+
internalError({
326+
error: "Call to create-secret-token",
327+
type: "create-secret-token",
328+
userMessage: "Could not connect to database",
329+
});
330+
return;
331+
}
309332
if (data) window.open(`${nextRoot()}/auth/token?t=${data}&url=/`, "_blank");
310333
};
311334

apps/website/app/components/auth/LoginWithToken.tsx

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
import { createClient } from "~/utils/supabase/client";
44
import { useRouter, useSearchParams } from "next/navigation";
55
import { useState, useEffect, useCallback, useRef } from "react";
6+
import internalError from "~/utils/internalError";
67

78
export const LoginWithToken = () => {
89
const loginAttempted = useRef(false);
910
const searchParams = useSearchParams();
1011
const router = useRouter();
11-
const [secretToken] = useState(() => {
12-
const t = searchParams.get("t");
13-
if (t && typeof window !== "undefined") {
12+
const [secretToken] = useState(() => searchParams.get("t"));
13+
useEffect(() => {
14+
if (secretToken && typeof window !== "undefined") {
1415
const url = new URL(window.location.href);
1516
url.searchParams.delete("t");
1617
window.history.replaceState({}, "", url);
1718
}
18-
return t;
19-
});
19+
}, [secretToken]);
2020
const [url] = useState(searchParams.get("url"));
2121
const [done, setDone] = useState(false);
2222
const [error, setError] = useState<string | null>(
@@ -30,15 +30,23 @@ export const LoginWithToken = () => {
3030
token: secretToken!,
3131
});
3232
if (result.error) {
33-
setError(result.error.message);
33+
setError("Could not connect to DiscourseGraphs");
34+
internalError({ error: result.error, type: "get-secret-token" });
3435
return;
3536
}
3637
if (result.data == null) {
37-
setError("This token does not exist");
38+
setError("Could not retrieve information, please try again.");
39+
internalError({ error: "missing token", type: "get-secret-token" });
3840
return;
3941
}
4042
if (typeof result.data !== "string") {
41-
setError("Payload is not a string");
43+
setError(
44+
"DiscourseGraphs configuration error, the team has been warned",
45+
);
46+
internalError({
47+
error: "payload-not-string",
48+
type: "get-secret-token",
49+
});
4250
return;
4351
}
4452
const data = JSON.parse(result.data) as {
@@ -53,7 +61,10 @@ export const LoginWithToken = () => {
5361
!data.access_token ||
5462
!data.refresh_token
5563
) {
56-
setError("Malformed token information");
64+
setError(
65+
"DiscourseGraphs configuration error, the team has been warned",
66+
);
67+
internalError({ error: "misshaped-payload", type: "get-secret-token" });
5768
return;
5869
}
5970
const response = await client.auth.setSession(data);
@@ -63,9 +74,8 @@ export const LoginWithToken = () => {
6374
router.replace(url);
6475
}
6576
} catch (error) {
66-
setError(
67-
error instanceof Error ? error.message : "Unknown error occurred",
68-
);
77+
setError("Unkown error while logging you in.");
78+
internalError({ error, type: "token-login-exception" });
6979
} finally {
7080
setDone(true);
7181
}

0 commit comments

Comments
 (0)