Skip to content

Commit c30e54c

Browse files
feat(cc-addon-credentials-beta.smart-keycloak): adapt to the new state shape
- Replace SKELETON_DATA with LOADING_STATE to match new state shape, - Move credentials under `tabs.default.content` instead of `tabs.default`, - Update `docLink` handling to be part of `LOADING_STATE`, - Refactor loaded state mapping to update `tabs.default.content` while preserving `tabs.default.docLink`.
1 parent 524cf56 commit c30e54c

File tree

1 file changed

+37
-32
lines changed

1 file changed

+37
-32
lines changed

src/components/cc-addon-credentials-beta/cc-addon-credentials-beta.smart-keycloak.js

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,41 @@ import '../cc-smart-container/cc-smart-container.js';
66
import { CcAddonCredentialsBetaClient } from './cc-addon-credentials-beta.client.js';
77
import './cc-addon-credentials-beta.js';
88

9-
/** @type {AddonCredential[]} */
10-
const SKELETON_DATA = [
11-
{
12-
code: 'user',
13-
value: 'fake-skeleton',
14-
},
15-
{
16-
code: 'password',
17-
value: 'fake-skeleton',
18-
},
19-
{
20-
code: 'ng',
21-
kind: 'multi-instances',
22-
value: {
23-
status: 'disabled',
9+
/** @type {AddonCredentialsBetaStateLoading} */
10+
const LOADING_STATE = {
11+
type: 'loading',
12+
tabs: {
13+
default: {
14+
content: [
15+
{
16+
code: 'user',
17+
value: 'fake-skeleton',
18+
},
19+
{
20+
code: 'password',
21+
value: 'fake-skeleton',
22+
},
23+
{
24+
code: 'ng',
25+
kind: 'multi-instances',
26+
value: {
27+
status: 'disabled',
28+
},
29+
},
30+
],
31+
docLink: {
32+
text: i18n('cc-addon-credentials-beta.doc-link.keycloak'),
33+
href: generateDocsHref('/addons/keycloak/#secured-multi-instances'),
34+
},
2435
},
2536
},
26-
];
37+
};
2738
const PROVIDER_ID = 'keycloak';
2839

2940
/**
3041
* @typedef {import('./cc-addon-credentials-beta.js').CcAddonCredentialsBeta} CcAddonCredentialsBeta
3142
* @typedef {import('./cc-addon-credentials-beta.types.js').AddonCredentialsBetaStateLoaded} AddonCredentialsBetaStateLoaded
43+
* @typedef {import('./cc-addon-credentials-beta.types.js').AddonCredentialsBetaStateLoading} AddonCredentialsBetaStateLoading
3244
* @typedef {import('../cc-addon-credentials-content/cc-addon-credentials-content.types.js').AddonCredential} AddonCredential
3345
* @typedef {import('../cc-addon-credentials-content/cc-addon-credentials-content.types.js').AddonCredentialNg} AddonCredentialNg
3446
* @typedef {import('../cc-addon-credentials-content/cc-addon-credentials-content.types.js').AddonCredentialNgEnabled} AddonCredentialNgEnabled
@@ -58,7 +70,7 @@ defineSmartComponent({
5870
'state',
5971
/** @param {AddonCredentialsBetaStateLoaded} state */
6072
(state) => {
61-
state.tabs.default = [...state.tabs.default].map((addonInfo) => {
73+
state.tabs.default.content = [...state.tabs.default.content].map((addonInfo) => {
6274
if (addonInfo.code === 'ng') {
6375
if (typeof newNgInfoOrCallback === 'function') {
6476
return newNgInfoOrCallback(addonInfo);
@@ -72,26 +84,19 @@ defineSmartComponent({
7284
);
7385
}
7486

75-
updateComponent('state', {
76-
type: 'loading',
77-
tabs: {
78-
default: SKELETON_DATA,
79-
},
80-
});
81-
updateComponent('docLink', {
82-
text: i18n('cc-addon-credentials-beta.doc-link.keycloak'),
83-
href: generateDocsHref('/addons/keycloak/#secured-multi-instances'),
84-
});
87+
updateComponent('state', LOADING_STATE);
8588

8689
api
8790
.getCredentials()
8891
.then((credentials) => {
89-
updateComponent('state', {
90-
type: 'loaded',
91-
tabs: {
92-
default: credentials,
92+
updateComponent(
93+
'state',
94+
/** @param {AddonCredentialsBetaStateLoaded|AddonCredentialsBetaStateLoading} state */
95+
(state) => {
96+
state.type = 'loaded';
97+
state.tabs.default.content = credentials;
9398
},
94-
});
99+
);
95100
})
96101
.catch((error) => {
97102
console.error(error);

0 commit comments

Comments
 (0)