mirror of
https://github.com/mediacms-io/mediacms.git
synced 2026-03-22 04:33:09 -04:00
chore(frontend): harden settings parsing and update store imports
This commit is contained in:
@@ -21,8 +21,9 @@ export function pagesConfig(
|
||||
|
||||
ret[key].enabled = settings[key]?.enabled === false ? false : true;
|
||||
|
||||
if (settings[key]?.title !== undefined) {
|
||||
ret[key].title = settings[key].title.trim();
|
||||
const title = settings[key]?.title;
|
||||
if (typeof title === 'string') {
|
||||
ret[key].title = title.trim();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,9 @@ export function taxonomiesConfig(settings?: DeepPartial<GlobalMediaCMS['site']['
|
||||
|
||||
ret[key].enabled = settings[key]?.enabled === false ? false : true; // @todo: Check this again
|
||||
|
||||
if (settings[key]?.title !== undefined) {
|
||||
ret[key].title = settings[key].title.trim();
|
||||
const title = settings[key]?.title;
|
||||
if (typeof title === 'string') {
|
||||
ret[key].title = title.trim();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import EventEmitter from 'events';
|
||||
import { BrowserCache } from '../classes/';
|
||||
import { BrowserEvents, exportStore } from '../helpers';
|
||||
import { config as mediaCmsConfig } from '../settings/config.js';
|
||||
import { config as mediaCmsConfig } from '../settings/config';
|
||||
|
||||
function uniqid() {
|
||||
let a = new Uint32Array(3);
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import EventEmitter from 'events';
|
||||
import { publishedOnDate, exportStore, getRequest, postRequest, deleteRequest, csrfToken } from '../helpers';
|
||||
|
||||
import { config as mediacmsConfig } from '../settings/config.js';
|
||||
import { config as mediacmsConfig } from '../settings/config';
|
||||
|
||||
const PlaylistPageStoreData = {};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import EventEmitter from 'events';
|
||||
import { exportStore, getRequest, deleteRequest, csrfToken } from '../helpers';
|
||||
|
||||
import { config as mediacmsConfig } from '../settings/config.js';
|
||||
import { config as mediacmsConfig } from '../settings/config';
|
||||
|
||||
class ProfilePageStore extends EventEmitter {
|
||||
constructor() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import EventEmitter from 'events';
|
||||
import { exportStore, getRequest } from '../helpers';
|
||||
import { config as mediacmsConfig } from '../settings/config.js';
|
||||
import { config as mediacmsConfig } from '../settings/config';
|
||||
|
||||
function getUrlVars() {
|
||||
var vars = {};
|
||||
|
||||
@@ -2,7 +2,7 @@ import EventEmitter from 'events';
|
||||
import { exportStore } from '../helpers/';
|
||||
import { BrowserCache } from '../classes/';
|
||||
|
||||
import { config as mediacmsConfig } from '../settings/config.js';
|
||||
import { config as mediacmsConfig } from '../settings/config';
|
||||
|
||||
let browserCache;
|
||||
|
||||
|
||||
@@ -14,4 +14,4 @@ export {
|
||||
ProfilePageStore,
|
||||
SearchFieldStore,
|
||||
VideoViewerStore,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -44,6 +44,18 @@ describe('utils/settings', () => {
|
||||
expect(cfg.recommended.title).toBe('Recommended');
|
||||
});
|
||||
|
||||
test('Ignores non-string titles and keeps defaults', () => {
|
||||
const cfg = pagesConfig({
|
||||
latest: { title: null as any },
|
||||
featured: { title: 123 as any },
|
||||
recommended: { title: true as any },
|
||||
});
|
||||
|
||||
expect(cfg.latest.title).toBe('Recent uploads');
|
||||
expect(cfg.featured.title).toBe('Featured');
|
||||
expect(cfg.recommended.title).toBe('Recommended');
|
||||
});
|
||||
|
||||
test('Ignores unknown keys in settings', () => {
|
||||
const cfg = pagesConfig({
|
||||
// @ts-ignore
|
||||
|
||||
@@ -30,6 +30,16 @@ describe('utils/settings', () => {
|
||||
expect(res.tags).toStrictEqual({ enabled: true, title: 'My Tags' });
|
||||
});
|
||||
|
||||
test('Should ignore non-string title values and keep defaults', () => {
|
||||
const res = taxonomiesConfig({
|
||||
tags: { title: null as any },
|
||||
categories: { title: 123 as any },
|
||||
});
|
||||
|
||||
expect(res.tags).toStrictEqual({ enabled: true, title: 'Tags' });
|
||||
expect(res.categories).toStrictEqual({ enabled: true, title: 'Categories' });
|
||||
});
|
||||
|
||||
test('Should ignore unknown taxonomy keys', () => {
|
||||
const input = {
|
||||
unknownKey: { enabled: true, title: 'X' },
|
||||
|
||||
Reference in New Issue
Block a user