diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/blob/openapi/index.js | 13 | ||||
-rw-r--r-- | app/assets/javascripts/lib/swagger.js | 9 |
2 files changed, 20 insertions, 2 deletions
diff --git a/app/assets/javascripts/blob/openapi/index.js b/app/assets/javascripts/blob/openapi/index.js index d81aa05c44e..94ae281cada 100644 --- a/app/assets/javascripts/blob/openapi/index.js +++ b/app/assets/javascripts/blob/openapi/index.js @@ -1,12 +1,21 @@ import { setAttributes } from '~/lib/utils/dom_utils'; import axios from '~/lib/utils/axios_utils'; -import { getBaseURL, relativePathToAbsolute, joinPaths } from '~/lib/utils/url_utility'; +import { + getBaseURL, + relativePathToAbsolute, + joinPaths, + setUrlParams, +} from '~/lib/utils/url_utility'; const SANDBOX_FRAME_PATH = '/-/sandbox/swagger'; const getSandboxFrameSrc = () => { const path = joinPaths(gon.relative_url_root || '', SANDBOX_FRAME_PATH); - return relativePathToAbsolute(path, getBaseURL()); + const absoluteUrl = relativePathToAbsolute(path, getBaseURL()); + if (window.gon?.relative_url_root) { + return setUrlParams({ relativeRootPath: window.gon.relative_url_root }, absoluteUrl); + } + return absoluteUrl; }; const createSandbox = () => { diff --git a/app/assets/javascripts/lib/swagger.js b/app/assets/javascripts/lib/swagger.js index ed646176604..fcdab18c623 100644 --- a/app/assets/javascripts/lib/swagger.js +++ b/app/assets/javascripts/lib/swagger.js @@ -1,6 +1,13 @@ import { SwaggerUIBundle } from 'swagger-ui-dist'; import { safeLoad } from 'js-yaml'; import { isObject } from '~/lib/utils/type_utility'; +import { getParameterByName } from '~/lib/utils/url_utility'; +import { resetServiceWorkersPublicPath } from '~/lib/utils/webpack'; + +const resetWebpackPublicPath = () => { + window.gon = { relative_url_root: getParameterByName('relativeRootPath') }; + resetServiceWorkersPublicPath(); +}; const renderSwaggerUI = (value) => { /* SwaggerUIBundle accepts openapi definition @@ -12,6 +19,8 @@ const renderSwaggerUI = (value) => { spec = safeLoad(spec, { json: true }); } + resetWebpackPublicPath(); + Promise.all([import(/* webpackChunkName: 'openapi' */ 'swagger-ui-dist/swagger-ui.css')]) .then(() => { SwaggerUIBundle({ |