mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-23 04:51:49 +08:00
fix(env): is mobile flag (#8005)
only 'mobile' entry has isMobile = true flag
This commit is contained in:
Vendored
+7
-10
@@ -2,19 +2,16 @@
|
||||
import type { DocCollection } from '@blocksuite/store';
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
__appInfo: {
|
||||
electron: boolean;
|
||||
schema: string;
|
||||
windowName: string;
|
||||
};
|
||||
}
|
||||
// eslint-disable-next-line no-var
|
||||
var __appInfo: {
|
||||
electron: boolean;
|
||||
schema: string;
|
||||
windowName: string;
|
||||
};
|
||||
}
|
||||
|
||||
//#region runtime variables
|
||||
export const isBrowser = typeof window !== 'undefined';
|
||||
export const isServer = !isBrowser && typeof navigator === 'undefined';
|
||||
export const isDesktop = isBrowser && !!window.__appInfo?.electron;
|
||||
export const isElectron = !!globalThis.__appInfo?.electron;
|
||||
//#endregion
|
||||
export const DEFAULT_WORKSPACE_NAME = 'Demo Workspace';
|
||||
export const UNTITLED_WORKSPACE_NAME = 'Untitled';
|
||||
|
||||
Vendored
+40
-53
@@ -2,7 +2,7 @@
|
||||
import { assertEquals } from '@blocksuite/global/utils';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { isDesktop, isServer } from './constant.js';
|
||||
import { isElectron } from './constant.js';
|
||||
import { UaHelper } from './ua-helper.js';
|
||||
|
||||
export const runtimeFlagsSchema = z.object({
|
||||
@@ -10,6 +10,7 @@ export const runtimeFlagsSchema = z.object({
|
||||
serverUrlPrefix: z.string(),
|
||||
appVersion: z.string(),
|
||||
editorVersion: z.string(),
|
||||
distribution: z.enum(['browser', 'desktop', 'admin', 'mobile']),
|
||||
appBuildType: z.union([
|
||||
z.literal('stable'),
|
||||
z.literal('beta'),
|
||||
@@ -35,18 +36,19 @@ export const runtimeFlagsSchema = z.object({
|
||||
|
||||
export type RuntimeConfig = z.infer<typeof runtimeFlagsSchema>;
|
||||
|
||||
type BrowserBase = {
|
||||
/**
|
||||
* @example https://app.affine.pro
|
||||
* @example http://localhost:3000
|
||||
*/
|
||||
origin: string;
|
||||
isDesktop: boolean;
|
||||
isBrowser: true;
|
||||
isServer: false;
|
||||
export type Environment = {
|
||||
isDebug: boolean;
|
||||
|
||||
// browser special properties
|
||||
// Edition
|
||||
isDesktopEdition: boolean;
|
||||
isMobileEdition: boolean;
|
||||
|
||||
// Platform/Entry
|
||||
isElectron: boolean;
|
||||
isDesktopWeb: boolean;
|
||||
isMobileWeb: boolean;
|
||||
|
||||
// Device
|
||||
isLinux: boolean;
|
||||
isMacOs: boolean;
|
||||
isIOS: boolean;
|
||||
@@ -55,37 +57,9 @@ type BrowserBase = {
|
||||
isFireFox: boolean;
|
||||
isMobile: boolean;
|
||||
isChrome: boolean;
|
||||
chromeVersion?: number;
|
||||
};
|
||||
|
||||
type NonChromeBrowser = BrowserBase & {
|
||||
isChrome: false;
|
||||
};
|
||||
|
||||
type ChromeBrowser = BrowserBase & {
|
||||
isSafari: false;
|
||||
isFireFox: false;
|
||||
isChrome: true;
|
||||
chromeVersion: number;
|
||||
};
|
||||
|
||||
type Browser = NonChromeBrowser | ChromeBrowser;
|
||||
|
||||
type Server = {
|
||||
isDesktop: false;
|
||||
isBrowser: false;
|
||||
isServer: true;
|
||||
isDebug: boolean;
|
||||
};
|
||||
|
||||
interface Desktop extends ChromeBrowser {
|
||||
isDesktop: true;
|
||||
isBrowser: true;
|
||||
isServer: false;
|
||||
isDebug: boolean;
|
||||
}
|
||||
|
||||
export type Environment = Browser | Server | Desktop;
|
||||
|
||||
function setupRuntimeConfig() {
|
||||
if (!process.env.RUNTIME_CONFIG) {
|
||||
return;
|
||||
@@ -106,31 +80,43 @@ export function setupGlobal() {
|
||||
|
||||
let environment: Environment;
|
||||
const isDebug = process.env.NODE_ENV === 'development';
|
||||
if (isServer) {
|
||||
|
||||
if (!globalThis.navigator) {
|
||||
environment = {
|
||||
isDesktop: false,
|
||||
isBrowser: false,
|
||||
isServer: true,
|
||||
isDesktopEdition: false,
|
||||
isMobileEdition: false,
|
||||
isElectron: false,
|
||||
isDesktopWeb: false,
|
||||
isMobileWeb: false,
|
||||
isMobile: false,
|
||||
isDebug,
|
||||
} satisfies Server;
|
||||
isLinux: false,
|
||||
isMacOs: false,
|
||||
isSafari: false,
|
||||
isWindows: false,
|
||||
isFireFox: false,
|
||||
isChrome: false,
|
||||
isIOS: false,
|
||||
};
|
||||
} else {
|
||||
const uaHelper = new UaHelper(navigator);
|
||||
const uaHelper = new UaHelper(globalThis.navigator);
|
||||
|
||||
environment = {
|
||||
origin: window.location.origin,
|
||||
isDesktop,
|
||||
isBrowser: true,
|
||||
isServer: false,
|
||||
isDesktopEdition: runtimeConfig.distribution !== 'mobile',
|
||||
isMobileEdition: runtimeConfig.distribution === 'mobile',
|
||||
isDesktopWeb: runtimeConfig.distribution === 'browser',
|
||||
isMobileWeb: runtimeConfig.distribution === 'mobile',
|
||||
isElectron,
|
||||
isDebug,
|
||||
isMobile: uaHelper.isMobile,
|
||||
isLinux: uaHelper.isLinux,
|
||||
isMacOs: uaHelper.isMacOs,
|
||||
isSafari: uaHelper.isSafari,
|
||||
isWindows: uaHelper.isWindows,
|
||||
isFireFox: uaHelper.isFireFox,
|
||||
isMobile: uaHelper.isMobile,
|
||||
isChrome: uaHelper.isChrome,
|
||||
isIOS: uaHelper.isIOS,
|
||||
} as Browser;
|
||||
};
|
||||
// Chrome on iOS is still Safari
|
||||
if (environment.isChrome && !environment.isIOS) {
|
||||
assertEquals(environment.isSafari, false);
|
||||
@@ -141,9 +127,10 @@ export function setupGlobal() {
|
||||
isFireFox: false,
|
||||
isChrome: true,
|
||||
chromeVersion: uaHelper.getChromeVersion(),
|
||||
} satisfies ChromeBrowser;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
globalThis.environment = environment;
|
||||
|
||||
globalThis.$AFFINE_SETUP = true;
|
||||
|
||||
Reference in New Issue
Block a user