Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions apps/desktop/src/lib/trpc/routers/auth/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { observable } from "@trpc/server/observable";
import { shell } from "electron";
import { env } from "main/env.main";
import { getDeviceName, getHashedDeviceId } from "main/lib/device-info";
import { PROTOCOL_SCHEME } from "shared/constants";
import { PLATFORM, PROTOCOL_SCHEME } from "shared/constants";
import { env as sharedEnv } from "shared/env.shared";
import { z } from "zod";
import { publicProcedure, router } from "../..";
Expand Down Expand Up @@ -67,7 +67,8 @@ export const createAuthRouter = () => {

/**
* Start OAuth sign-in flow.
* Opens browser for OAuth, token delivered via deep link callback.
* Opens browser for OAuth, token delivered via deep link on macOS
* or localhost callback on Linux (where deep links are unreliable).
*/
signIn: publicProcedure
.input(z.object({ provider: z.enum(AUTH_PROVIDERS) }))
Expand All @@ -88,10 +89,13 @@ export const createAuthRouter = () => {
connectUrl.searchParams.set("provider", input.provider);
connectUrl.searchParams.set("state", state);
connectUrl.searchParams.set("protocol", PROTOCOL_SCHEME);
connectUrl.searchParams.set(
"local_callback",
`http://127.0.0.1:${sharedEnv.DESKTOP_NOTIFICATIONS_PORT}/auth/callback`,
);
// Only send local_callback on Linux where deep links are unreliable
if (PLATFORM.IS_LINUX) {
connectUrl.searchParams.set(
"local_callback",
`http://127.0.0.1:${sharedEnv.DESKTOP_NOTIFICATIONS_PORT}/auth/callback`,
);
}
await shell.openExternal(connectUrl.toString());
return { success: true };
} catch (err) {
Expand Down
Loading