Skip to content
Snippets Groups Projects
Unverified Commit b50b06ec authored by Mahatthana (Kelvin) Nomsawadi's avatar Mahatthana (Kelvin) Nomsawadi Committed by GitHub
Browse files

Fix SSO users can't change language setting (#24091)

* Fix changing locale doesn't reload page

* Fix SSO users can't set language

* Address Alexander's feedback
parent c7d8b48d
No related branches found
No related tags found
No related merge requests found
import React, { useCallback } from "react";
import PropTypes from "prop-types";
import User from "metabase/entities/users";
import { usePrevious } from "metabase/hooks/use-previous";
const propTypes = {
user: PropTypes.object,
};
const UserProfileForm = ({ user }) => {
const handleSaved = useCallback(
({ locale }) => {
if (locale !== user.locale) {
window.location.reload();
}
},
[user],
);
const previousUser = usePrevious(user);
const handleSaved = useCallback(() => {
if (previousUser.locale !== user.locale) {
window.location.reload();
}
}, [previousUser?.locale, user?.locale]);
return <User.Form user={user} form={User.forms.user} onSaved={handleSaved} />;
return (
<User.Form user={user} form={User.forms.user(user)} onSaved={handleSaved} />
);
};
UserProfileForm.propTypes = propTypes;
......
......@@ -84,20 +84,18 @@ export default {
...PLUGIN_ADMIN_USER_FORM_FIELDS,
],
},
user: {
fields: user => {
const isSsoUser = !PLUGIN_IS_PASSWORD_USER.every(predicate =>
predicate(user),
);
user: user => {
const isSsoUser = !PLUGIN_IS_PASSWORD_USER.every(predicate =>
predicate(user),
);
const fields = isSsoUser
? [getLocaleField()]
: [...getNameFields(), getEmailField(), getLocaleField()];
if (isSsoUser) {
return [getLocaleField()];
}
// password user
return [...getNameFields(), getEmailField(), getLocaleField()];
},
disablePristineSubmit: true,
return {
fields,
disablePristineSubmit: true,
};
},
setup: () => ({
fields: [
......
......@@ -142,6 +142,9 @@ describe("user > settings", () => {
cy.button("Update").click();
cy.wait("@updateUserSettings");
// Assert that the page reloaded with the new language
cy.findByLabelText("Nama depan").should("exist");
// We need some UI element other than a string
cy.icon("gear").should("exist");
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment