diff --git a/src/sentry/web/frontend/react_page.py b/src/sentry/web/frontend/react_page.py index 696ac919e1876b..2d8eb2375ad8d6 100644 --- a/src/sentry/web/frontend/react_page.py +++ b/src/sentry/web/frontend/react_page.py @@ -96,13 +96,16 @@ def handle_react( user_theme = f"theme-{react_config['user']['options']['theme']}" prefers_chonk_ui = False - if features.has("organizations:chonk-ui", org_context): - if features.has("organizations:chonk-ui-enforce", org_context): + if organization is not None and features.has("organizations:chonk-ui", organization): + if features.has("organizations:chonk-ui-enforce", organization): prefers_chonk_ui = True - elif react_config.get("user", None) and react_config["user"].get("options", {}).get( - "prefersChonkUI", False - ): - prefers_chonk_ui = react_config["user"]["options"]["prefersChonkUI"] + + if ( + prefers_chonk_ui is False + and react_config.get("user", None) + and react_config["user"].get("options", {}).get("prefersChonkUI", False) + ): + prefers_chonk_ui = react_config["user"]["options"]["prefersChonkUI"] context = { "CSRF_COOKIE_NAME": settings.CSRF_COOKIE_NAME, diff --git a/tests/sentry/web/frontend/test_react_page.py b/tests/sentry/web/frontend/test_react_page.py index 35e8f311e26fda..9d871521c46ccf 100644 --- a/tests/sentry/web/frontend/test_react_page.py +++ b/tests/sentry/web/frontend/test_react_page.py @@ -452,3 +452,60 @@ def test_preconnect(self) -> None: ' None: + user = self.create_user("bar@example.com") + org = self.create_organization(owner=user) + self.login_as(user) + + with self.feature( + { + "organizations:chonk-ui": [org.slug], + "organizations:chonk-ui-enforce": [org.slug], + } + ): + response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") + assert response.status_code == 200 + assert response.context["prefers_chonk_ui"] is True + + def test_prefers_chonk_ui_user_preference(self) -> None: + from sentry.users.models.user_option import UserOption + + user = self.create_user("bar@example.com") + org = self.create_organization(owner=user) + self.login_as(user) + + UserOption.objects.set_value(user=user, key="prefers_chonk_ui", value=True) + + with self.feature({"organizations:chonk-ui": [org.slug]}): + response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") + assert response.status_code == 200 + assert response.context["prefers_chonk_ui"] is True + + def test_prefers_chonk_ui_disabled(self) -> None: + user = self.create_user("bar@example.com") + org = self.create_organization(owner=user) + self.login_as(user) + + response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") + assert response.status_code == 200 + assert response.context["prefers_chonk_ui"] is False + + def test_prefers_chonk_ui_enforce_overrides_user_preference(self) -> None: + from sentry.users.models.user_option import UserOption + + user = self.create_user("bar@example.com") + org = self.create_organization(owner=user) + self.login_as(user) + + UserOption.objects.set_value(user=user, key="prefers_chonk_ui", value=False) + + with self.feature( + { + "organizations:chonk-ui": [org.slug], + "organizations:chonk-ui-enforce": [org.slug], + } + ): + response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") + assert response.status_code == 200 + assert response.context["prefers_chonk_ui"] is True