build ok,
This commit is contained in:
13
002_source/cms/src/lib/settings/apply-default-settings.ts
Normal file
13
002_source/cms/src/lib/settings/apply-default-settings.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { Settings } from '@/types/settings';
|
||||
import { config } from '@/config';
|
||||
|
||||
export function applyDefaultSettings(settings: Partial<Settings>): Settings {
|
||||
return {
|
||||
colorScheme: config.site.colorScheme,
|
||||
primaryColor: config.site.primaryColor,
|
||||
direction: 'ltr',
|
||||
navColor: 'evident',
|
||||
layout: 'vertical',
|
||||
...settings,
|
||||
};
|
||||
}
|
29
002_source/cms/src/lib/settings/get-settings.ts
Normal file
29
002_source/cms/src/lib/settings/get-settings.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
'use server';
|
||||
|
||||
import { cookies } from 'next/headers';
|
||||
|
||||
import type { Settings } from '@/types/settings';
|
||||
import { logger } from '@/lib/default-logger';
|
||||
|
||||
/**
|
||||
* Retrieve the settings from client's cookies.
|
||||
* This should be used in Server Components.
|
||||
*/
|
||||
export async function getSettings(): Promise<Partial<Settings>> {
|
||||
const cookieStore = cookies();
|
||||
|
||||
const settingsStr = cookieStore.get('app.settings')?.value;
|
||||
let settings: Partial<Settings>;
|
||||
|
||||
if (settingsStr) {
|
||||
try {
|
||||
settings = JSON.parse(settingsStr) as Partial<Settings>;
|
||||
} catch {
|
||||
logger.error('Unable to parse the settings');
|
||||
}
|
||||
}
|
||||
|
||||
settings ||= {};
|
||||
|
||||
return settings;
|
||||
}
|
16
002_source/cms/src/lib/settings/set-settings.ts
Normal file
16
002_source/cms/src/lib/settings/set-settings.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
'use server';
|
||||
|
||||
import { cookies } from 'next/headers';
|
||||
|
||||
import type { Settings } from '@/types/settings';
|
||||
|
||||
/**
|
||||
* Store settings (partial patch) in client's cookies.
|
||||
* This should be used as Server Action.
|
||||
*
|
||||
* To remove a specific key, set its value to `null`.
|
||||
*/
|
||||
export async function setSettings(settings: Partial<Settings>): Promise<void> {
|
||||
const cookieStore = cookies();
|
||||
cookieStore.set('app.settings', JSON.stringify(settings));
|
||||
}
|
Reference in New Issue
Block a user