提交室内导览交互与讲解优化
This commit is contained in:
48
src/config/dataSource.ts
Normal file
48
src/config/dataSource.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
export type DataSourceMode = 'static' | 'api' | 'sdk'
|
||||
|
||||
const allowedModes = new Set<DataSourceMode>(['static', 'api', 'sdk'])
|
||||
const defaultSdkScriptUrl = '/static/sgs-map-sdk/index.global.js'
|
||||
const defaultSgsEngineUrl = '/h5-sdk'
|
||||
const defaultSdkTimeoutMs = 5000
|
||||
|
||||
const normalizeMode = (mode: string | undefined): DataSourceMode => {
|
||||
if (mode && allowedModes.has(mode as DataSourceMode)) {
|
||||
return mode as DataSourceMode
|
||||
}
|
||||
|
||||
return 'static'
|
||||
}
|
||||
|
||||
const normalizeUrl = (url: string | undefined, fallback: string) => {
|
||||
const normalized = url?.trim()
|
||||
return normalized || fallback
|
||||
}
|
||||
|
||||
const normalizeTimeout = (timeoutValue: string | undefined) => {
|
||||
const timeout = Number(timeoutValue)
|
||||
return Number.isFinite(timeout) && timeout > 0 ? timeout : defaultSdkTimeoutMs
|
||||
}
|
||||
|
||||
const inferOrigin = (url: string) => {
|
||||
if (typeof window === 'undefined') return ''
|
||||
|
||||
try {
|
||||
return new URL(url, window.location.origin).origin
|
||||
} catch {
|
||||
return window.location.origin
|
||||
}
|
||||
}
|
||||
|
||||
export const dataSourceConfig = {
|
||||
mode: normalizeMode(import.meta.env.VITE_DATA_SOURCE_MODE),
|
||||
sgsSdkScriptUrl: normalizeUrl(import.meta.env.VITE_SGS_SDK_SCRIPT_URL, defaultSdkScriptUrl),
|
||||
sgsMapEngineUrl: normalizeUrl(import.meta.env.VITE_SGS_H5_ENGINE_URL, defaultSgsEngineUrl),
|
||||
sgsSdkTargetOrigin: import.meta.env.VITE_SGS_SDK_ORIGIN?.trim() || '',
|
||||
sgsSdkTimeoutMs: normalizeTimeout(import.meta.env.VITE_SGS_SDK_TIMEOUT_MS)
|
||||
}
|
||||
|
||||
export const isSgsSdkMode = () => dataSourceConfig.mode === 'sdk'
|
||||
|
||||
export const getSgsMapTargetOrigin = () => (
|
||||
dataSourceConfig.sgsSdkTargetOrigin || inferOrigin(dataSourceConfig.sgsMapEngineUrl)
|
||||
)
|
||||
Reference in New Issue
Block a user