feat(config): add customizable footer

This commit is contained in:
Ali BARIN
2025-03-10 09:34:41 +00:00
parent 423317966e
commit 035ed6fee3
9 changed files with 172 additions and 0 deletions

View File

@@ -11,6 +11,15 @@ export default async (request, response) => {
const configParams = (request) => {
const {
enableFooter,
footerBackgroundColor,
footerCopyrightText,
footerDocsLink,
footerImprintLink,
footerLogoSvgData,
footerPrivacyPolicyLink,
footerTextColor,
footerTosLink,
logoSvgData,
palettePrimaryDark,
palettePrimaryLight,
@@ -19,6 +28,15 @@ const configParams = (request) => {
} = request.body;
return {
enableFooter,
footerBackgroundColor,
footerCopyrightText,
footerDocsLink,
footerImprintLink,
footerLogoSvgData,
footerPrivacyPolicyLink,
footerTextColor,
footerTosLink,
logoSvgData,
palettePrimaryDark,
palettePrimaryLight,

View File

@@ -25,6 +25,18 @@ describe('PATCH /api/v1/admin/config', () => {
const palettePrimaryMain = '#00adef';
const palettePrimaryDark = '#222222';
const palettePrimaryLight = '#f90707';
const enableFooter = true;
const footerCopyrightText = '© AB Software GmbH';
const footerBackgroundColor = '#FFFFFF';
const footerTextColor = '#000000';
const footerDocsLink = 'https://automatisch.io/docs';
const footerTosLink = 'https://automatisch.io/terms';
const footerPrivacyPolicyLink = 'https://automatisch.io/privacy';
const footerImprintLink = 'https://automatisch.io/imprint';
const footerLogoSvgData =
'<svg width="25" height="25" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"><rect width="100%" height="100%" fill="white" /><text x="10" y="40" font-family="Arial" font-size="40" fill="black">Sample Footer Logo</text></svg>';
const logoSvgData =
'<svg width="25" height="25" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"><rect width="100%" height="100%" fill="white" /><text x="10" y="40" font-family="Arial" font-size="40" fill="black">A</text></svg>';
@@ -34,6 +46,15 @@ describe('PATCH /api/v1/admin/config', () => {
palettePrimaryDark: palettePrimaryDark,
palettePrimaryLight: palettePrimaryLight,
logoSvgData: logoSvgData,
enableFooter,
footerCopyrightText,
footerBackgroundColor,
footerTextColor,
footerDocsLink,
footerTosLink,
footerPrivacyPolicyLink,
footerImprintLink,
footerLogoSvgData,
};
await updateConfig(appConfig);

View File

@@ -28,6 +28,15 @@ describe('GET /api/v1/automatisch/config', () => {
palettePrimaryMain: '#0059F7',
title: 'Sample Title',
enableTemplates: true,
enableFooter: true,
footerLogoSvgData: '<svg>Sample Footer Logo</svg>',
footerCopyrightText: '© AB Software GmbH',
footerBackgroundColor: '#FFFFFF',
footerTextColor: '#000000',
footerDocsLink: 'https://automatisch.io/docs',
footerTosLink: 'https://automatisch.io/terms',
footerPrivacyPolicyLink: 'https://automatisch.io/privacy',
footerImprintLink: 'https://automatisch.io/imprint',
});
const response = await request(app)
@@ -41,6 +50,16 @@ describe('GET /api/v1/automatisch/config', () => {
additionalDrawerLink: 'link',
additionalDrawerLinkIcon: 'icon',
additionalDrawerLinkText: 'text',
enableTemplates: true,
enableFooter: true,
footerLogoSvgData: '<svg>Sample Footer Logo</svg>',
footerCopyrightText: '© AB Software GmbH',
footerBackgroundColor: '#FFFFFF',
footerTextColor: '#000000',
footerDocsLink: 'https://automatisch.io/docs',
footerTosLink: 'https://automatisch.io/terms',
footerPrivacyPolicyLink: 'https://automatisch.io/privacy',
footerImprintLink: 'https://automatisch.io/imprint',
});
expect(response.body).toStrictEqual(expectedPayload);