From: Lucas Di Pentima Date: Fri, 4 Feb 2022 22:28:40 +0000 (-0300) Subject: Merge branch '18661-refresh-flicker-fix'. Closes #18661 X-Git-Tag: 2.4.0~13 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/d861bd54089e9279cd03b2e4561869ee877b9559?hp=de10071369ab482d70bb63fe45df317d6bd3f6c5 Merge branch '18661-refresh-flicker-fix'. Closes #18661 Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- diff --git a/cypress/integration/side-panel.spec.js b/cypress/integration/side-panel.spec.js index f9d4dca3..afe326e3 100644 --- a/cypress/integration/side-panel.spec.js +++ b/cypress/integration/side-panel.spec.js @@ -104,7 +104,7 @@ describe('Side panel tests', function() { cy.getAll('@mySharedWritableProject') .then(function ([mySharedWritableProject]) { cy.loginAs(activeUser); - + cy.get('[data-cy=side-panel-tree]').contains('Projects').click(); const newProjectName = `New project name ${mySharedWritableProject.name}`; @@ -125,19 +125,16 @@ describe('Side panel tests', function() { addToFavorites: false }); - cy.getAll('@writableProject') - .then(function ([writableProject]) { - cy.loginAs(activeUser); - - cy.get('[data-cy=side-panel-tree]').contains('Projects').click(); - - cy.get('[data-cy=side-panel-tree]').contains(writableProject.name).should('exist'); - - cy.trashGroup(activeUser.token, writableProject.uuid); - + cy.getAll('@writableProject').then(function ([writableProject]) { + cy.loginAs(activeUser); + cy.get('[data-cy=side-panel-tree]') + .contains('Projects').click(); + cy.get('[data-cy=side-panel-tree]') + .contains(writableProject.name).should('exist'); + cy.trashGroup(activeUser.token, writableProject.uuid).then(() => { cy.contains('Refresh').click(); - cy.contains(writableProject.name).should('not.exist'); }); + }); }); }) diff --git a/src/components/data-table/data-table.test.tsx b/src/components/data-table/data-table.test.tsx index 85379e9a..866564ac 100644 --- a/src/components/data-table/data-table.test.tsx +++ b/src/components/data-table/data-table.test.tsx @@ -101,6 +101,7 @@ describe("", () => { ]; const dataTable = mount(", () => { ]; const dataTable = mount( - { - this.props.working ? -
- -
: items.map(this.renderBodyRow) - } + { this.props.working !== undefined && !this.props.working && items.map(this.renderBodyRow) }
+ { this.props.working && +
+ +
} {items.length === 0 && this.props.working !== undefined && !this.props.working && this.renderNoItemsPlaceholder()} ; diff --git a/src/store/project-panel/project-panel-middleware-service.ts b/src/store/project-panel/project-panel-middleware-service.ts index 45650843..be569b49 100644 --- a/src/store/project-panel/project-panel-middleware-service.ts +++ b/src/store/project-panel/project-panel-middleware-service.ts @@ -50,7 +50,6 @@ export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService try { api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); const response = await this.services.groupsService.contents(projectUuid, getParams(dataExplorer, !!isProjectTrashed)); - api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId())); const resourceUuids = response.items.map(item => item.uuid); api.dispatch(updateFavorites(resourceUuids)); api.dispatch(updatePublicFavorites(resourceUuids)); diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts index 527d9d74..03d65f62 100644 --- a/src/store/workbench/workbench-actions.ts +++ b/src/store/workbench/workbench-actions.ts @@ -194,35 +194,34 @@ export const loadProject = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const userUuid = getUserUuid(getState()); dispatch(setIsProjectPanelTrashed(false)); - if (userUuid) { - if (extractUuidKind(uuid) === ResourceKind.USER && userUuid !== uuid) { - // Load another users home projects - dispatch(finishLoadingProject(uuid)); - } else if (userUuid !== uuid) { - const match = await loadGroupContentsResource({ uuid, userUuid, services }); - match({ - OWNED: async project => { - await dispatch(activateSidePanelTreeItem(uuid)); - dispatch(setSidePanelBreadcrumbs(uuid)); - dispatch(finishLoadingProject(project)); - }, - SHARED: project => { - dispatch(setSharedWithMeBreadcrumbs(uuid)); - dispatch(activateSidePanelTreeItem(uuid)); - dispatch(finishLoadingProject(project)); - }, - TRASHED: project => { - dispatch(setTrashBreadcrumbs(uuid)); - dispatch(setIsProjectPanelTrashed(true)); - dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.TRASH)); - dispatch(finishLoadingProject(project)); - } - }); - } else { - await dispatch(activateSidePanelTreeItem(userUuid)); - dispatch(setSidePanelBreadcrumbs(userUuid)); - dispatch(finishLoadingProject(userUuid)); - } + if (!userUuid) { + return; + } + if (extractUuidKind(uuid) === ResourceKind.USER && userUuid !== uuid) { + // Load another users home projects + dispatch(finishLoadingProject(uuid)); + } else if (userUuid !== uuid) { + await dispatch(finishLoadingProject(uuid)); + const match = await loadGroupContentsResource({ uuid, userUuid, services }); + match({ + OWNED: async () => { + await dispatch(activateSidePanelTreeItem(uuid)); + dispatch(setSidePanelBreadcrumbs(uuid)); + }, + SHARED: async () => { + await dispatch(activateSidePanelTreeItem(uuid)); + dispatch(setSharedWithMeBreadcrumbs(uuid)); + }, + TRASHED: async () => { + await dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.TRASH)); + dispatch(setTrashBreadcrumbs(uuid)); + dispatch(setIsProjectPanelTrashed(true)); + } + }); + } else { + await dispatch(finishLoadingProject(userUuid)); + await dispatch(activateSidePanelTreeItem(userUuid)); + dispatch(setSidePanelBreadcrumbs(userUuid)); } }); diff --git a/src/views-components/main-content-bar/main-content-bar.tsx b/src/views-components/main-content-bar/main-content-bar.tsx index 480150cb..a460a518 100644 --- a/src/views-components/main-content-bar/main-content-bar.tsx +++ b/src/views-components/main-content-bar/main-content-bar.tsx @@ -12,7 +12,6 @@ import { RootState } from 'store/store'; import * as Routes from 'routes/routes'; import { toggleDetailsPanel } from 'store/details-panel/details-panel-action'; import RefreshButton from "components/refresh-button/refresh-button"; -import { reloadProjectMatchingUuid } from "store/workbench/workbench-actions"; import { loadSidePanelTreeProjects } from "store/side-panel-tree/side-panel-tree-actions"; type CssRules = "infoTooltip"; @@ -63,7 +62,6 @@ export const MainContentBar = onDetailsPanelToggle: () => dispatch(toggleDetailsPanel()), onRefreshButtonClick: (id) => { dispatch(loadSidePanelTreeProjects(id)); - dispatch(reloadProjectMatchingUuid([id])); } }))( withStyles(styles)(