Forráskód Böngészése

Merge pull request #16062 from overleaf/jdt-ieee-eslint-fix

fix: missing setting on test causing eslint failure
GitOrigin-RevId: fff96acd389cfe30a1e89404a08a87543f503089
Jimmy Domagala-Tang 2 éve
szülő
commit
5c84ea8895

+ 1 - 0
services/web/app/src/infrastructure/ExpressLocals.js

@@ -377,6 +377,7 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) {
       adminEmail: Settings.adminEmail,
       dropboxAppName:
         Settings.apis.thirdPartyDataStore?.dropboxAppName || 'Overleaf',
+      ieeeBrandId: IEEE_BRAND_ID,
       hasSamlBeta: req.session.samlBeta,
       hasAffiliationsFeature: Features.hasFeature('affiliations'),
       hasSamlFeature: Features.hasFeature('saml'),

+ 6 - 4
services/web/frontend/js/features/editor-left-menu/components/settings/settings-overall-theme.tsx

@@ -6,6 +6,7 @@ import SettingsMenuSelect, { Option } from './settings-menu-select'
 import { useProjectSettingsContext } from '../../context/project-settings-context'
 import type { OverallThemeMeta } from '../../../../../../types/project-settings'
 import type { OverallTheme } from '../../../source-editor/extensions/theme'
+import { ExposedSettings } from '../../../../../../types/exposed-settings'
 
 export default function SettingsOverallTheme() {
   const { t } = useTranslation()
@@ -24,10 +25,11 @@ export default function SettingsOverallTheme() {
     [overallThemes]
   )
 
-  // TODO: check for IEEE brand by:
-  // - const brandVariation = getMeta('ol-brandVariation') as any[]
-  // - settings.overleaf != null && !isIEEE(brandVariation)
-  if (!overallThemes) {
+  const brandVariation = getMeta('ol-brandVariation') as any
+  const { ieeeBrandId } = getMeta('ol-ExposedSettings') as ExposedSettings
+  const isIEEEBranded = brandVariation?.brand_id === ieeeBrandId
+
+  if (!overallThemes || isIEEEBranded) {
     return null
   }
 

+ 1 - 0
services/web/frontend/stories/decorators/scope.tsx

@@ -138,6 +138,7 @@ const initialize = () => {
     hasLinkedProjectFileFeature: true,
     hasLinkedProjectOutputFileFeature: true,
     hasSamlFeature: true,
+    ieeeBrandId: 15,
     isOverleaf: true,
     labsEnabled: true,
     maxEntitiesPerProject: 10,

+ 2 - 0
services/web/test/frontend/components/editor-left-menu/editor-left-menu.spec.tsx

@@ -46,6 +46,7 @@ describe('<EditorLeftMenu />', function () {
       window.metaAttributesCache.set('ol-anonymous', false)
       window.metaAttributesCache.set('ol-gitBridgeEnabled', true)
       window.metaAttributesCache.set('ol-showSupport', true)
+      window.metaAttributesCache.set('ol-ExposedSettings', { ieeeBrandId: 123 })
       window.metaAttributesCache.set('ol-user', {
         email: 'sherlock@holmes.co.uk',
         first_name: 'Sherlock',
@@ -849,6 +850,7 @@ describe('<EditorLeftMenu />', function () {
         },
       })
       window.metaAttributesCache.set('ol-anonymous', true)
+      window.metaAttributesCache.set('ol-ExposedSettings', { ieeeBrandId: 123 })
 
       cy.mount(
         <EditorProviders scope={scope}>

+ 32 - 0
services/web/test/frontend/features/editor-left-menu/components/settings/settings-overall-theme.test.tsx

@@ -5,6 +5,9 @@ import SettingsOverallTheme from '../../../../../../frontend/js/features/editor-
 import type { OverallThemeMeta } from '../../../../../../types/project-settings'
 import { renderWithEditorContext } from '../../../../helpers/render-with-context'
 
+const IEEE_BRAND_ID = 1234
+const OTHER_BRAND_ID = 2234
+
 describe('<SettingsOverallTheme />', function () {
   const overallThemes: OverallThemeMeta[] = [
     {
@@ -21,6 +24,9 @@ describe('<SettingsOverallTheme />', function () {
 
   beforeEach(function () {
     window.metaAttributesCache.set('ol-overallThemes', overallThemes)
+    window.metaAttributesCache.set('ol-ExposedSettings', {
+      ieeeBrandId: IEEE_BRAND_ID,
+    })
   })
 
   afterEach(function () {
@@ -38,4 +44,30 @@ describe('<SettingsOverallTheme />', function () {
       expect(option.getAttribute('value')).to.equal(theme.val)
     }
   })
+  describe('Branded Project', function () {
+    it('should hide overall theme picker for IEEE branded projects', function () {
+      window.metaAttributesCache.set('ol-brandVariation', {
+        brand_id: IEEE_BRAND_ID,
+      })
+      renderWithEditorContext(<SettingsOverallTheme />)
+      const select = screen.queryByText('Overall theme')
+      expect(select).to.not.exist
+    })
+
+    it('should show overall theme picker for branded projects that are not IEEE', function () {
+      window.metaAttributesCache.set('ol-brandVariation', {
+        brand_id: OTHER_BRAND_ID,
+      })
+      renderWithEditorContext(<SettingsOverallTheme />)
+      const select = screen.getByLabelText('Overall theme')
+      expect(select).to.exist
+    })
+
+    it('should show overall theme picker for non branded projects', function () {
+      window.metaAttributesCache.set('ol-brandVariation', undefined)
+      renderWithEditorContext(<SettingsOverallTheme />)
+      const select = screen.getByLabelText('Overall theme')
+      expect(select).to.exist
+    })
+  })
 })

+ 1 - 0
services/web/types/exposed-settings.ts

@@ -19,6 +19,7 @@ export type ExposedSettings = {
   hasLinkedProjectOutputFileFeature: boolean
   hasSamlBeta?: boolean
   hasSamlFeature: boolean
+  ieeeBrandId: number
   isOverleaf: boolean
   maxEntitiesPerProject: number
   projectUploadTimeout: number