-
Notifications
You must be signed in to change notification settings - Fork 2
[CA-4747] Profile editor should update consents with key in snakecase #280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CA-4747] Profile editor should update consents with key in snakecase #280
Conversation
/** | ||
* @todo this can be removed when https://github.com/ReachFive/identity-web-core-sdk/pull/260 will be merged | ||
* L'idéal serait que la clé d'un consentement soit en valeur d'une propriété "key" et non une clé de la structure Map utilisée. | ||
* le mieux serait même que `consents` soit un array et non un map. | ||
* Mais bon, difficile de changer ça maintenant sans créer un breaking change pour les utilisateurs de l'api ou du sdk core... | ||
*/ | ||
.then(({ consents, ...profile }) => ({ | ||
...profile, | ||
consents: consents | ||
? Object.fromEntries( | ||
Object.entries(consents).map(([key, value]) => [ | ||
key, | ||
camelCaseProperties(value) as UserConsent | ||
]) | ||
) | ||
: undefined | ||
}) as Profile) /** @todo check api response key format in sdk core */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cette partie sert juste à palier au fait que le SDK Core format la réponse api en camelcase mais en faisant exception des concents et de toute la structure enfant.
J'ai fait une PR sur le SDK Core pour que seul la clé d'un consentement soit préservée en snakecase. Mais j'ai peur que ça introduise un breaking change pour d'éventuelles intégrations avec le SDK Core...
@@ -80,6 +83,7 @@ export default function consentField({ | |||
...props, | |||
required, | |||
defaultValue: { granted: props.defaultValue ?? false }, | |||
mapping: new PathMapping(snakeCasePath(props.path ?? props.key)), // Consent key should be snake_case |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le coeur du problème. PathMapping sert à faire la mapping entre le modèles et les champs d'un formulaire. Par défaut ça fait une conversion camelcase du le nom des propriétés...
(les joies de l'usine à gaz que sont les formulaire sur le SDK UI...)
CA-4747
L'idéal serait que la clé d'un consentement soit en valeur d'une propriété "key" et non une clé de la structure Map utilisée.
Le mieux serait même que
consents
soit un array et non un map.Mais bon, difficile de changer ça maintenant sans créer un breaking change pour les utilisateurs de l'api ou du sdk core...