diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index dac76a9250..7261f0b5af 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -1099,7 +1099,6 @@ "optional": "", "or": "", "organization_name": "", - "organize_projects": "", "organize_tags": "", "other": "", "other_causes_of_compile_timeouts": "", diff --git a/services/web/frontend/js/features/project-list/components/project-list-events.ts b/services/web/frontend/js/features/project-list/components/project-list-events.ts index eda62016ed..03e426bc7e 100644 --- a/services/web/frontend/js/features/project-list/components/project-list-events.ts +++ b/services/web/frontend/js/features/project-list/components/project-list-events.ts @@ -1,5 +1,4 @@ import { useCallback } from 'react' -import { useSplitTestContext } from '@/shared/context/split-test-context' import { sendMB } from '@/infrastructure/event-tracking' export type ExtraSegmentations = { @@ -39,16 +38,11 @@ export type ExtraSegmentations = { } export const useSendProjectListMB = () => { - const { splitTestVariants } = useSplitTestContext() - const hasDsNav = splitTestVariants['sidebar-navigation-ui-update'] as - | 'default' - | 'active' return useCallback( ( event: T, payload: ExtraSegmentations[T] - ) => - sendMB(event, { ...payload, 'sidebar-navigation-ui-update': hasDsNav }), - [hasDsNav] + ) => sendMB(event, payload), + [] ) } diff --git a/services/web/frontend/js/features/project-list/components/project-list-root.tsx b/services/web/frontend/js/features/project-list/components/project-list-root.tsx index 420b2454ab..a9736310f5 100644 --- a/services/web/frontend/js/features/project-list/components/project-list-root.tsx +++ b/services/web/frontend/js/features/project-list/components/project-list-root.tsx @@ -16,12 +16,8 @@ import getMeta from '@/utils/meta' import DefaultNavbar from '@/features/ui/components/bootstrap-5/navbar/default-navbar' import Footer from '@/features/ui/components/bootstrap-5/footer/footer' import WelcomePageContent from '@/features/project-list/components/welcome-page-content' -import ProjectListDefault from '@/features/project-list/components/project-list-default' import { ProjectListDsNav } from '@/features/project-list/components/project-list-ds-nav' -import { - DsNavStyleProvider, - useIsDsNav, -} from '@/features/project-list/components/use-is-ds-nav' +import { DsNavStyleProvider } from '@/features/project-list/components/use-is-ds-nav' function ProjectListRoot() { const { isReady } = useWaitForI18n() @@ -82,22 +78,8 @@ function ProjectListPageContent() { const { t } = useTranslation() - const hasDsNav = useIsDsNav() - if (isLoading) { - const loadingComponent = ( - - ) - - if (hasDsNav) { - return loadingComponent - } else { - return ( - -
{loadingComponent}
-
- ) - } + return } if (totalProjectsCount === 0) { @@ -106,18 +88,12 @@ function ProjectListPageContent() { ) - } else if (hasDsNav) { + } else { return ( ) - } else { - return ( - - - - ) } } diff --git a/services/web/frontend/js/features/project-list/components/sidebar/sidebar-filters.tsx b/services/web/frontend/js/features/project-list/components/sidebar/sidebar-filters.tsx index 799ccbd6f3..efcba056be 100644 --- a/services/web/frontend/js/features/project-list/components/sidebar/sidebar-filters.tsx +++ b/services/web/frontend/js/features/project-list/components/sidebar/sidebar-filters.tsx @@ -5,7 +5,6 @@ import { } from '../../context/project-list-context' import TagsList from './tags-list' import ProjectsFilterMenu from '../projects-filter-menu' -import { useIsDsNav } from '@/features/project-list/components/use-is-ds-nav' type SidebarFilterProps = { filter: Filter @@ -30,7 +29,6 @@ export function SidebarFilter({ filter, text }: SidebarFilterProps) { export default function SidebarFilters() { const { t } = useTranslation() - const hasDsNav = useIsDsNav() return (
    @@ -39,11 +37,9 @@ export default function SidebarFilters() { - {hasDsNav && ( -
  • -
    -
  • - )} +
  • +
    +
) diff --git a/services/web/frontend/js/features/project-list/components/sidebar/tags-list.tsx b/services/web/frontend/js/features/project-list/components/sidebar/tags-list.tsx index b149a6b44c..a07d82d12f 100644 --- a/services/web/frontend/js/features/project-list/components/sidebar/tags-list.tsx +++ b/services/web/frontend/js/features/project-list/components/sidebar/tags-list.tsx @@ -1,7 +1,6 @@ import { sortBy } from 'lodash' import { useTranslation } from 'react-i18next' import { DotsThreeVertical, Plus, TagSimple } from '@phosphor-icons/react' -import MaterialIcon from '../../../../shared/components/material-icon' import { UNCATEGORIZED_KEY, useProjectListContext, @@ -14,7 +13,6 @@ import { DropdownMenu, DropdownToggle, } from '@/features/ui/components/bootstrap-5/dropdown-menu' -import { useIsDsNav } from '@/features/project-list/components/use-is-ds-nav' export default function TagsList() { const { t } = useTranslation() @@ -35,7 +33,6 @@ export default function TagsList() { DeleteTagModal, } = useTag() - const isDsNav = useIsDsNav() return ( <>
  • @@ -74,11 +67,7 @@ export default function TagsList() { color: getTagColor(tag), }} > - {isDsNav ? ( - - ) : ( - - )} + {tag.name}{' '} @@ -94,7 +83,7 @@ export default function TagsList() { id={`${tag._id}-dropdown-toggle`} data-testid="tag-dropdown-toggle" > - {isDsNav && } + { setDismissedSurvey(true) @@ -22,6 +24,12 @@ export function SurveyWidgetDsNav() { return null } + // Hide the survey for users who have sidebar-navigation-ui-update: + // They've had it for months. We don't need their feedback anymore + if (hasDsNav && survey?.name === 'ds-nav') { + return null + } + return (
    diff --git a/services/web/locales/en.json b/services/web/locales/en.json index bb69866dd0..24103e7851 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -1461,7 +1461,6 @@ "organization_name": "Organization name", "organization_or_company_name": "Organization or company name", "organization_or_company_type": "Organization or company type", - "organize_projects": "Organize Projects", "organize_tags": "Organize Tags", "original_price": "Original price", "other": "Other", diff --git a/services/web/test/frontend/features/project-list/components/sidebar/tags-list.test.tsx b/services/web/test/frontend/features/project-list/components/sidebar/tags-list.test.tsx index a15d44538a..c1a97ca496 100644 --- a/services/web/test/frontend/features/project-list/components/sidebar/tags-list.test.tsx +++ b/services/web/test/frontend/features/project-list/components/sidebar/tags-list.test.tsx @@ -42,7 +42,7 @@ describe('', function () { it('displays the tags list', function () { const header = screen.getByTestId('organize-projects') - expect(header.textContent).to.equal('Organize Projects') + expect(header.textContent).to.equal('Organize Tags') screen.getByRole('button', { name: 'New Tag', diff --git a/services/web/test/frontend/features/project-list/components/survey-widget.test.tsx b/services/web/test/frontend/features/project-list/components/survey-widget.test.tsx index 91cc020d4e..798703d0af 100644 --- a/services/web/test/frontend/features/project-list/components/survey-widget.test.tsx +++ b/services/web/test/frontend/features/project-list/components/survey-widget.test.tsx @@ -1,8 +1,9 @@ import { expect } from 'chai' import { fireEvent, render, screen } from '@testing-library/react' -import SurveyWidget from '../../../../../frontend/js/features/project-list/components/survey-widget' +import { SurveyWidgetDsNav } from '../../../../../frontend/js/features/project-list/components/survey-widget-ds-nav' +import { SplitTestProvider } from '@/shared/context/split-test-context' -describe('', function () { +describe('', function () { beforeEach(function () { this.name = 'my-survey' this.preText = 'To help shape the future of Overleaf' @@ -21,7 +22,11 @@ describe('', function () { url: this.url, }) - render() + render( + + + + ) }) it('shows text and link', function () { @@ -29,9 +34,10 @@ describe('', function () { expect(dismissed).to.equal(null) screen.getByText(this.preText) + screen.getByText(this.linkText) const link = screen.getByRole('link', { - name: this.linkText, + name: 'Take survey', }) as HTMLAnchorElement expect(link.href).to.equal(this.url) }) @@ -63,7 +69,11 @@ describe('', function () { }) localStorage.setItem('dismissed-my-survey', 'true') - render() + render( + + + + ) }) it('nothing is displayed', function () { @@ -77,7 +87,11 @@ describe('', function () { describe('survey widget is not shown when no survey is configured', function () { beforeEach(function () { - render() + render( + + + + ) }) it('nothing is displayed', function () { diff --git a/services/web/test/frontend/features/project-list/components/table/project-tools/project-tools-rename.test.tsx b/services/web/test/frontend/features/project-list/components/table/project-tools/project-tools-rename.test.tsx index 5a301a3200..8903fc3089 100644 --- a/services/web/test/frontend/features/project-list/components/table/project-tools/project-tools-rename.test.tsx +++ b/services/web/test/frontend/features/project-list/components/table/project-tools/project-tools-rename.test.tsx @@ -63,12 +63,14 @@ describe('', function () { projects, totalSize: 100, }) - window.metaAttributesCache.set('ol-footer', { showThinFooter: false, translatedLanguages: { en: 'English' }, subdomainLang: { en: { lngCode: 'en', url: 'overleaf.com' } }, }) + window.metaAttributesCache.set('ol-navbar', { + items: [], + }) fetchMock.get('/system/messages', []) })