Merge pull request #1985 from automatisch/aut-1061

feat: use dynamic DOCS URL
This commit is contained in:
Ali BARIN
2024-07-24 14:20:03 +02:00
committed by GitHub
6 changed files with 42 additions and 7 deletions

View File

@@ -7,6 +7,7 @@ export default async (request, response) => {
isCloud: appConfig.isCloud, isCloud: appConfig.isCloud,
isMation: appConfig.isMation, isMation: appConfig.isMation,
isEnterprise: await hasValidLicense(), isEnterprise: await hasValidLicense(),
docsUrl: appConfig.docsUrl,
}; };
renderObject(response, info); renderObject(response, info);

View File

@@ -10,6 +10,7 @@ describe('GET /api/v1/automatisch/info', () => {
vi.spyOn(appConfig, 'isCloud', 'get').mockReturnValue(false); vi.spyOn(appConfig, 'isCloud', 'get').mockReturnValue(false);
vi.spyOn(appConfig, 'isMation', 'get').mockReturnValue(false); vi.spyOn(appConfig, 'isMation', 'get').mockReturnValue(false);
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
vi.spyOn(appConfig, 'docsUrl', 'get').mockReturnValue('https://automatisch.io/docs');
const response = await request(app) const response = await request(app)
.get('/api/v1/automatisch/info') .get('/api/v1/automatisch/info')

View File

@@ -4,6 +4,7 @@ const infoMock = () => {
isCloud: false, isCloud: false,
isMation: false, isMation: false,
isEnterprise: true, isEnterprise: true,
docsUrl: 'https://automatisch.io/docs',
}, },
meta: { meta: {
count: 1, count: 1,

View File

@@ -2,13 +2,16 @@ import PropTypes from 'prop-types';
import * as React from 'react'; import * as React from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import Typography from '@mui/material/Typography'; import Typography from '@mui/material/Typography';
import { generateExternalLink } from '../../helpers/translationValues'; import { generateExternalLink } from 'helpers/translationValues';
import { WEBHOOK_DOCS } from '../../config/urls'; import { WEBHOOK_DOCS_PATH } from 'config/urls';
import TextField from '../TextField'; import TextField from 'components/TextField';
import useDocsUrl from 'hooks/useDocsUrl';
import { Alert } from './style'; import { Alert } from './style';
function WebhookUrlInfo(props) { function WebhookUrlInfo(props) {
const { webhookUrl, ...alertProps } = props; const { webhookUrl, ...alertProps } = props;
const webhookDocsUrl = useDocsUrl(WEBHOOK_DOCS_PATH);
return ( return (
<Alert icon={false} color="info" {...alertProps}> <Alert icon={false} color="info" {...alertProps}>
<Typography variant="body2" textAlign="center"> <Typography variant="body2" textAlign="center">
@@ -28,7 +31,7 @@ function WebhookUrlInfo(props) {
helperText={ helperText={
<FormattedMessage <FormattedMessage
id="webhookUrlInfo.helperText" id="webhookUrlInfo.helperText"
values={{ link: generateExternalLink(WEBHOOK_DOCS) }} values={{ link: generateExternalLink(webhookDocsUrl) }}
/> />
} }
/> />

View File

@@ -97,6 +97,8 @@ export const ADMIN_APP_AUTH_CLIENT = (appKey, id) =>
export const ADMIN_APP_AUTH_CLIENTS_CREATE = (appKey) => export const ADMIN_APP_AUTH_CLIENTS_CREATE = (appKey) =>
`${ADMIN_SETTINGS}/apps/${appKey}/auth-clients/create`; `${ADMIN_SETTINGS}/apps/${appKey}/auth-clients/create`;
export const DASHBOARD = FLOWS; export const DASHBOARD = FLOWS;
// External links
export const WEBHOOK_DOCS = // External links and paths
'https://automatisch.io/docs/apps/webhooks/connection'; // The paths are sensitive for their relativity.
export const WEBHOOK_DOCS_PATH =
'./apps/webhooks/connection';

View File

@@ -0,0 +1,27 @@
import useAutomatischInfo from 'hooks/useAutomatischInfo';
const appendTrailingSlash = (url) => {
if (!url) {
return undefined;
}
if (!url.endsWith('/')) {
return `${url}/`;
}
return url;
}
/**
* Per instance, there may be different documentation. However, the paths are assumed the same.
* The given DOCS_URL is made sure to have a trailing slash to have relative paths work as expected.
*/
export default function useDocsUrl(path) {
const { data: automatischInfo } = useAutomatischInfo();
const docsUrlWithTrailingSlash = appendTrailingSlash(automatischInfo?.docsUrl);
const docsUrl = docsUrlWithTrailingSlash || 'https://automatisch.io/docs/';
const absoluteUrl = new URL(path, docsUrl).toString();
return absoluteUrl;
}