diff --git a/src/entrypoints/my-redirect.ts b/src/entrypoints/my-redirect.ts index 1677b25e..c8d020b1 100644 --- a/src/entrypoints/my-redirect.ts +++ b/src/entrypoints/my-redirect.ts @@ -5,7 +5,7 @@ import { extractSearchParamsObject, } from "../util/search-params"; import { getInstanceUrl } from "../data/instance_info"; -import { Redirect } from "../const"; +import { MOBILE_URL, Redirect } from "../const"; import { svgPencil } from "../components/svg-pencil"; import { isMobile } from "../data/is_mobile"; import { validateParam } from "../util/validate"; @@ -40,6 +40,12 @@ const createRedirectParams = (): string => { let changingInstance = false; +const getRedirectUrl = (baseUrl: string, params) => { + return window.redirect.redirect === "oauth" + ? `${baseUrl}/auth/external/callback${params}` + : `${baseUrl}/_my_redirect/${window.redirect.redirect}${params}`; +}; + const render = (showTroubleshooting: boolean) => { const instanceUrl = getInstanceUrl(); @@ -56,6 +62,12 @@ const render = (showTroubleshooting: boolean) => { return; } + if (!isMobile && navigator.userAgent.includes("Windows")) { + // Try opening the native app on Windows + const redirectUrlToNativeApp = getRedirectUrl(MOBILE_URL, params); + document.location.assign(redirectUrlToNativeApp); + } + const changeUrl = `/redirect/_change/?redirect=${encodeURIComponent( window.redirect.redirect + "/" + params )}`; @@ -66,10 +78,7 @@ const render = (showTroubleshooting: boolean) => { return; } - const redirectUrl = - window.redirect.redirect === "oauth" - ? `${instanceUrl}/auth/external/callback${params}` - : `${instanceUrl}/_my_redirect/${window.redirect.redirect}${params}`; + const redirectUrl = getRedirectUrl(instanceUrl, params); const openLink = document.querySelector(".open-link") as HTMLElement; openLink.outerHTML = `