Skip to content

Commit

Permalink
fix(config): add options defined during runtime (#9845)
Browse files Browse the repository at this point in the history
Refs #9844
  • Loading branch information
glowcloud committed Apr 18, 2024
1 parent bcd7388 commit 60670d1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/core/config/defaults.js
Expand Up @@ -15,7 +15,7 @@ const defaultOptions = Object.freeze({
maxDisplayedTags: -1,
filter: false,
validatorUrl: "https://validator.swagger.io/validator",
oauth2RedirectUrl: `${window.location.protocol}//${window.location.host}${window.location.pathname.substring(0, window.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`,
oauth2RedirectUrl: undefined,
persistAuthorization: false,
configs: {},
custom: {},
Expand Down
1 change: 1 addition & 0 deletions src/core/config/index.js
Expand Up @@ -3,5 +3,6 @@ export { default as storeOptionsFactorization } from "./factorization/store"
export { default as optionsFromQuery } from "./sources/query"
export { default as optionsFromURL } from "./sources/url"
export { default as optionsFromSystem } from "./sources/system"
export { default as optionsFromRuntime } from "./sources/runtime"
export { default as defaultOptions } from "./defaults"
export { default as mergeOptions } from "./merge"
18 changes: 18 additions & 0 deletions src/core/config/sources/runtime.js
@@ -0,0 +1,18 @@
/**
* @prettier
*
* Receives options at runtime.
*/

/* eslint-disable no-undef */
const optionsFromRuntime = () => () => {
const options = {}

if (globalThis.location) {
options.oauth2RedirectUrl = `${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0, globalThis.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`
}

return options
}

export default optionsFromRuntime
6 changes: 4 additions & 2 deletions src/core/index.js
Expand Up @@ -34,6 +34,7 @@ import {
optionsFromQuery,
optionsFromURL,
optionsFromSystem,
optionsFromRuntime,
mergeOptions,
inlinePluginOptionsFactorization,
storeOptionsFactorization
Expand All @@ -42,7 +43,8 @@ import {

export default function SwaggerUI(userOptions) {
const queryOptions = optionsFromQuery()(userOptions)
let mergedOptions = mergeOptions({}, defaultOptions, userOptions, queryOptions)
const runtimeOptions = optionsFromRuntime()()
let mergedOptions = mergeOptions({}, defaultOptions, runtimeOptions, userOptions, queryOptions)
const storeOptions = storeOptionsFactorization(mergedOptions)
const InlinePlugin = inlinePluginOptionsFactorization(mergedOptions)

Expand All @@ -57,7 +59,7 @@ export default function SwaggerUI(userOptions) {
.then((urlOptions) => {
const urlOptionsFailedToFetch = urlOptions === null

mergedOptions = mergeOptions({}, defaultOptions, systemOptions, userOptions, urlOptions, queryOptions)
mergedOptions = mergeOptions({}, defaultOptions, runtimeOptions, systemOptions, userOptions, urlOptions, queryOptions)
store.setConfigs(mergedOptions)
system.configsActions.loaded()

Expand Down

0 comments on commit 60670d1

Please sign in to comment.