diff --git a/packages/common/env/src/global.ts b/packages/common/env/src/global.ts index 4a6a4411d..2ea19d7da 100644 --- a/packages/common/env/src/global.ts +++ b/packages/common/env/src/global.ts @@ -17,6 +17,9 @@ export type BUILD_CONFIG_TYPE = { isMobileWeb: boolean; // this is for the electron app + /** + * @deprecated need to be refactored + */ serverUrlPrefix: string; appVersion: string; editorVersion: string; diff --git a/packages/frontend/core/src/utils/popup.ts b/packages/frontend/core/src/utils/popup.ts index b1c46cef5..3aafc087a 100644 --- a/packages/frontend/core/src/utils/popup.ts +++ b/packages/frontend/core/src/utils/popup.ts @@ -3,20 +3,31 @@ import { apis } from '@affine/electron-api'; const logger = new DebugLogger('popup'); +const origin = BUILD_CONFIG.isElectron + ? BUILD_CONFIG.serverUrlPrefix + : location.origin; + +/** + * @deprecated need to be refactored as [UrlService] dependencies on [ServerConfigService] + */ export function popupWindow(target: string) { - target = /^https?:\/\//.test(target) - ? target - : BUILD_CONFIG.serverUrlPrefix + target; + const isFullUrl = /^https?:\/\//.test(target); + + const redirectProxy = origin + '/redirect-proxy'; + target = isFullUrl ? target : origin + target; + const targetUrl = new URL(target); let url: string; // safe to open directly if in the same origin - if (targetUrl.origin === location.origin) { + if (targetUrl.origin === origin) { url = target; } else { - const builder = new URL(BUILD_CONFIG.serverUrlPrefix + '/redirect-proxy'); - builder.searchParams.set('redirect_uri', target); - url = builder.toString(); + const search = new URLSearchParams({ + redirect_uri: target, + }); + + url = `${redirectProxy}?${search.toString()}`; } if (BUILD_CONFIG.isElectron) {