@admin-layout/client 12.0.16-alpha.24 → 12.0.16-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/UpdateSettings/UpdateSettings.server.d.ts +1 -1
- package/lib/components/UpdateSettings/UpdateSettings.server.d.ts.map +1 -1
- package/lib/components/UpdateSettings/UpdateSettings.server.js +36 -5
- package/lib/components/UpdateSettings/UpdateSettings.server.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ProSettings } from '../../interfaces';
|
|
2
1
|
import { IAppLoadContext } from '@common-stack/client-core';
|
|
3
2
|
import { IResourceParams } from '@common-stack/core';
|
|
3
|
+
import { ProSettings } from '../../interfaces';
|
|
4
4
|
export declare function settingsLoaderUtil({ request, context, params, }: {
|
|
5
5
|
request: Request;
|
|
6
6
|
context?: IAppLoadContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateSettings.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UpdateSettings.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuC/C,wBAAsB,kBAAkB,CAAC,EACrC,OAAO,EACP,OAAO,EACP,MAAM,GACT,EAAE;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B,GAAG,OAAO,CAAC;IACR,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC,CA0CD;AAED,eAAO,MAAM,MAAM,GAAU,+BAI1B;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B,oEAgEA,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,+BAI1B;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;;GAgCA,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {createCookie,json}from'@remix-run/node';import {merge}from'lodash-es';import {config}from'../../config/env-config.js';import {defaultSettings}from'../../config/defaultSettings.js';import'react';import'common';import'@cdm-logger/client';import {compareAndSaveSettingsDifferences}from'../../utils/settingsDifference.js';import {assignDefaults}from'../../utils/assignDefaults.js'
|
|
1
|
+
import {createCookie,json}from'@remix-run/node';import {GetPageSettingsDocument}from'common/graphql';import {merge}from'lodash-es';import {config}from'../../config/env-config.js';import {defaultSettings}from'../../config/defaultSettings.js';import'react';import'common';import'@cdm-logger/client';import {compareAndSaveSettingsDifferences}from'../../utils/settingsDifference.js';import {assignDefaults}from'../../utils/assignDefaults.js';// NOTE: We are temporarily using `defaultSettings`. This will be removed once `defaultSettings` is updated in the all packages.
|
|
2
2
|
const settingsCookie = createCookie('settings', {
|
|
3
3
|
maxAge: 60 * 60 * 24 * 30, // 1 month
|
|
4
4
|
httpOnly: false, // Allow client-side access
|
|
@@ -40,6 +40,12 @@ async function settingsLoaderUtil({ request, context, params, }) {
|
|
|
40
40
|
? JSON.parse(JSON.stringify(result?.data?.pageSettings?.settings))
|
|
41
41
|
: null;
|
|
42
42
|
let pageDefaultSettings = pageSettings?.uilayout || defaultSettings || {};
|
|
43
|
+
// TEMPORARY: Manually add hiddenMenuKeys to defaults until GraphQL schema is updated
|
|
44
|
+
pageDefaultSettings = {
|
|
45
|
+
...pageDefaultSettings,
|
|
46
|
+
hiddenMenuKeys: [],
|
|
47
|
+
hiddenMenuCategories: [],
|
|
48
|
+
};
|
|
43
49
|
try {
|
|
44
50
|
settings = await settingsCookie.parse(cookieHeader);
|
|
45
51
|
console.log('Parsed cookie settings:', settings);
|
|
@@ -66,34 +72,52 @@ async function settingsLoaderUtil({ request, context, params, }) {
|
|
|
66
72
|
}
|
|
67
73
|
const action = async ({ request, context, params, }) => {
|
|
68
74
|
try {
|
|
75
|
+
// 1. Fetch default settings from GraphQL (or fallback to local defaults)
|
|
69
76
|
const { apolloClient } = context;
|
|
70
77
|
const result = await fetchPageSettings(apolloClient);
|
|
71
78
|
const pageSettings = result?.data?.pageSettings?.settings
|
|
72
79
|
? JSON.parse(JSON.stringify(result.data.pageSettings.settings))
|
|
73
80
|
: null;
|
|
74
81
|
let pageDefaultSettings = pageSettings?.uilayout || defaultSettings || {};
|
|
82
|
+
// 2 TEMPORARY: Manually add hiddenMenuKeys to defaults until GraphQL schema is updated
|
|
83
|
+
pageDefaultSettings = {
|
|
84
|
+
...pageDefaultSettings,
|
|
85
|
+
hiddenMenuKeys: [],
|
|
86
|
+
hiddenMenuCategories: [],
|
|
87
|
+
};
|
|
88
|
+
// 3. Parse the incoming settings update from the client (usually only changed keys)
|
|
75
89
|
const jsonData = await request.json();
|
|
76
|
-
console.log('jsonData....', jsonData);
|
|
77
90
|
const payload = jsonData?.config || {};
|
|
91
|
+
// 4. Fill in any missing default keys in the payload (does not overwrite user values)
|
|
78
92
|
assignDefaults(payload, pageDefaultSettings);
|
|
93
|
+
// 5. Parse existing settings from the cookie (if present)
|
|
79
94
|
const cookieHeader = request.headers.get('Cookie');
|
|
80
95
|
let existingSettings;
|
|
81
96
|
let mergedSettings;
|
|
82
97
|
try {
|
|
83
98
|
existingSettings = await settingsCookie.parse(cookieHeader);
|
|
99
|
+
// 6. Merge existing settings with the new payload from the client
|
|
84
100
|
mergedSettings = merge({}, existingSettings, payload);
|
|
101
|
+
// 7. Ensure merged settings have all default keys (again, does not overwrite user values)
|
|
85
102
|
assignDefaults(mergedSettings, pageDefaultSettings);
|
|
86
103
|
}
|
|
87
104
|
catch (error) {
|
|
105
|
+
// If cookie parsing fails, fall back to just the payload
|
|
88
106
|
console.error('Error parsing settings cookie in action:', error);
|
|
89
107
|
existingSettings = null;
|
|
90
108
|
}
|
|
91
|
-
// Build
|
|
109
|
+
// 8. Build the final settings object: defaults → config.LAYOUT_SETTINGS → merged user settings
|
|
92
110
|
const fullSettings = merge({}, pageDefaultSettings, config.LAYOUT_SETTINGS, mergedSettings);
|
|
93
|
-
//
|
|
111
|
+
// TEMPORARY FIX: Manually override hiddenMenuKeys with payload value
|
|
112
|
+
// This ensures payload array replaces the prev array values
|
|
113
|
+
if (payload.hiddenMenuKeys !== undefined) {
|
|
114
|
+
fullSettings.hiddenMenuKeys = [...payload.hiddenMenuKeys];
|
|
115
|
+
}
|
|
116
|
+
// 9. Store only the differences from the defaults in the cookie (to minimize cookie size)
|
|
94
117
|
const diffSettings = await compareAndSaveSettingsDifferences(fullSettings, pageDefaultSettings);
|
|
95
|
-
//
|
|
118
|
+
// 10. Serialize the diff settings into a cookie string
|
|
96
119
|
const newCookie = await settingsCookie.serialize(diffSettings);
|
|
120
|
+
// 11. Return the full settings as JSON, and set the new cookie in the response headers
|
|
97
121
|
return json(fullSettings, {
|
|
98
122
|
headers: {
|
|
99
123
|
'Set-Cookie': newCookie,
|
|
@@ -101,6 +125,7 @@ const action = async ({ request, context, params, }) => {
|
|
|
101
125
|
});
|
|
102
126
|
}
|
|
103
127
|
catch (error) {
|
|
128
|
+
// If anything fails, log the error and return a 500 error response
|
|
104
129
|
console.error('Error in action:', error);
|
|
105
130
|
return json({ error: 'Failed to update settings' }, { status: 500 });
|
|
106
131
|
}
|
|
@@ -124,6 +149,12 @@ const loader = async ({ request, context, params, }) => {
|
|
|
124
149
|
? JSON.parse(JSON.stringify(result.data.pageSettings.settings))
|
|
125
150
|
: null;
|
|
126
151
|
let pageDefaultSettings = pageSettings?.uilayout || defaultSettings || {};
|
|
152
|
+
// TEMPORARY: Manually add hiddenMenuKeys to defaults until GraphQL schema is updated
|
|
153
|
+
pageDefaultSettings = {
|
|
154
|
+
...pageDefaultSettings,
|
|
155
|
+
hiddenMenuKeys: [], // Array format for menu visibility
|
|
156
|
+
hiddenMenuCategories: [], // Array format for category visibility
|
|
157
|
+
};
|
|
127
158
|
return json({
|
|
128
159
|
settings: merge({}, pageDefaultSettings, config.LAYOUT_SETTINGS),
|
|
129
160
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateSettings.server.js","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UpdateSettings.server.js","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"sourcesContent":[null],"names":[],"mappings":";AAsDC,oBAAW,GAAA,YAAA,CAAA,UAAA,EAAA;IACR,MAAQ,EAAA,EAAE,aAAY,EAAA;IACtB,QAAS,EAAA;AACZ,IA0CA,QAAA,EAAA,KAAA;AAED,IAAO,IAAA,EAAA,GAAA;IAKH,MAAO,EAAA,aAAU,GAAA,MAAA,CAAA,UAAA,GAAA,SAAA;;;AAGpB,eAAA,iBAAA,CAAA,YAAA,EAAA;AAkED,IAAO,IAAA;QAKI,aAAU,YAAA,CAAA,KAAA,CAAA;YACT,KAAE,EAAA,uBAAgB;YACjB,OAAA,EAAA;AACZ,gBAAA,OAAA,EAAA;;iBAgCC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/client",
|
|
3
|
-
"version": "12.0.16-alpha.
|
|
3
|
+
"version": "12.0.16-alpha.25",
|
|
4
4
|
"description": "Sample client for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"watch": "yarn build:lib:watch"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@common-stack/client-core": "7.1.1-alpha.
|
|
26
|
+
"@common-stack/client-core": "7.1.1-alpha.63",
|
|
27
27
|
"common": "12.0.16-alpha.24",
|
|
28
28
|
"serialize-error": "^8.0.0"
|
|
29
29
|
},
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"typescript": {
|
|
41
41
|
"definition": "lib/index.d.ts"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "8b62bff1ab82f6131580a877203778f33c4aa8c4"
|
|
44
44
|
}
|