From b0119a55df2c3645593f858a20d2a1cf48b0e9d9 Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Tue, 15 Mar 2022 09:45:28 -0700 Subject: [PATCH] Reload versions list after clicking on Reload button (#1717) --- .../Objects/ListObjects/ListObjects.tsx | 11 ++++++++++- .../ObjectDetails/VersionsNavigator.tsx | 19 +++++++++++++------ .../screens/Console/ObjectBrowser/actions.ts | 16 +++++++++++++++- .../screens/Console/ObjectBrowser/reducers.ts | 8 ++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index d3e281a67..5f76b154a 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -60,6 +60,7 @@ import { completeObject, openList, resetRewind, + setLoadingVersions, setNewObject, setSearchObjects, setShowDeletedObjects, @@ -225,6 +226,7 @@ interface IListObjectsProps { setSearchObjects: typeof setSearchObjects; setVersionsModeEnabled: typeof setVersionsModeEnabled; setShowDeletedObjects: typeof setShowDeletedObjects; + setLoadingVersions: typeof setLoadingVersions; } function useInterval(callback: any, delay: number) { @@ -276,6 +278,7 @@ const ListObjects = ({ setVersionsModeEnabled, showDeleted, setShowDeletedObjects, + setLoadingVersions, }: IListObjectsProps) => { const [records, setRecords] = useState([]); const [loading, setLoading] = useState(true); @@ -738,6 +741,7 @@ const ListObjects = ({ } setDetailsOpen(true); + setLoadingVersions(true); setSelectedInternalPaths( `${idElement ? `${encodeFileName(idElement)}` : ``}` ); @@ -1244,7 +1248,11 @@ const ListObjects = ({ color="primary" variant={"outlined"} onClick={() => { - setLoading(true); + if (versionsMode) { + setLoadingVersions(true); + } else { + setLoading(true); + } }} disabled={ !hasPermission(bucketName, [IAM_SCOPES.S3_LIST_BUCKET]) || @@ -1421,6 +1429,7 @@ const mapDispatchToProps = { setSearchObjects, setVersionsModeEnabled, setShowDeletedObjects, + setLoadingVersions, }; const connector = connect(mapStateToProps, mapDispatchToProps); diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx index b18efc169..84887f434 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx @@ -47,6 +47,7 @@ import ScreenTitle from "../../../../Common/ScreenTitle/ScreenTitle"; import RestoreFileVersion from "./RestoreFileVersion"; import { completeObject, + setLoadingVersions, setNewObject, setSelectedVersion, updateProgress, @@ -110,12 +111,14 @@ interface IVersionsNavigatorProps { internalPaths: string; bucketName: string; searchVersions: string; + loadingVersions: boolean; setErrorSnackMessage: typeof setErrorSnackMessage; setSnackBarMessage: typeof setSnackBarMessage; setNewObject: typeof setNewObject; updateProgress: typeof updateProgress; completeObject: typeof completeObject; setSelectedVersion: typeof setSelectedVersion; + setLoadingVersions: typeof setLoadingVersions; } const emptyFile: IFileInfo = { @@ -137,12 +140,13 @@ const VersionsNavigator = ({ setNewObject, updateProgress, searchVersions, + loadingVersions, completeObject, internalPaths, bucketName, setSelectedVersion, + setLoadingVersions, }: IVersionsNavigatorProps) => { - const [loadObjectData, setLoadObjectData] = useState(true); const [shareFileModalOpen, setShareFileModalOpen] = useState(false); const [actualInfo, setActualInfo] = useState(null); const [objectToShare, setObjectToShare] = useState(null); @@ -159,7 +163,7 @@ const VersionsNavigator = ({ } useEffect(() => { - if (loadObjectData && internalPaths !== "") { + if (loadingVersions && internalPaths !== "") { api .invoke( "GET", @@ -179,15 +183,16 @@ const VersionsNavigator = ({ setVersions([]); } - setLoadObjectData(false); + setLoadingVersions(false); }) .catch((error: ErrorResponseHandler) => { setErrorSnackMessage(error); - setLoadObjectData(false); + setLoadingVersions(false); }); } }, [ - loadObjectData, + setLoadingVersions, + loadingVersions, bucketName, internalPaths, setErrorSnackMessage, @@ -268,7 +273,7 @@ const VersionsNavigator = ({ setRestoreVersion(""); if (reloadObjectData) { - setLoadObjectData(true); + setLoadingVersions(true); } }; @@ -455,6 +460,7 @@ const VersionsNavigator = ({ const mapStateToProps = ({ system, objectBrowser }: AppState) => ({ distributedSetup: get(system, "distributedSetup", false), searchVersions: objectBrowser.searchVersions, + loadingVersions: objectBrowser.loadingVersions, }); const mapDispatchToProps = { @@ -464,6 +470,7 @@ const mapDispatchToProps = { updateProgress, completeObject, setSelectedVersion, + setLoadingVersions, }; const connector = connect(mapStateToProps, mapDispatchToProps); diff --git a/portal-ui/src/screens/Console/ObjectBrowser/actions.ts b/portal-ui/src/screens/Console/ObjectBrowser/actions.ts index 126440b2f..de302c91b 100644 --- a/portal-ui/src/screens/Console/ObjectBrowser/actions.ts +++ b/portal-ui/src/screens/Console/ObjectBrowser/actions.ts @@ -39,6 +39,7 @@ export const BUCKET_BROWSER_VERSIONS_SET_SEARCH = export const BUCKET_BROWSER_SET_SELECTED_VERSION = "BUCKET_BROWSER/SET_SELECTED_VERSION"; export const BUCKET_BROWSER_SHOW_DELETED = "BUCKET_BROWSER/SHOW_DELETED"; +export const BUCKET_BROWSER_LOAD_VERSIONS = "BUCKET_BROWSER/LOAD_VERSIONS"; interface RewindSetEnabled { type: typeof REWIND_SET_ENABLE; @@ -114,6 +115,11 @@ interface SetShowDeletedObjects { status: boolean; } +interface SetLoadingVersions { + type: typeof BUCKET_BROWSER_LOAD_VERSIONS; + status: boolean; +} + export type ObjectBrowserActionTypes = | RewindSetEnabled | RewindReset @@ -129,7 +135,8 @@ export type ObjectBrowserActionTypes = | SetSearchObjects | SetSearchVersions | SetSelectedversion - | SetShowDeletedObjects; + | SetShowDeletedObjects + | SetLoadingVersions; export const setRewindEnable = ( state: boolean, @@ -241,3 +248,10 @@ export const setShowDeletedObjects = (status: boolean) => { status, }; }; + +export const setLoadingVersions = (status: boolean) => { + return { + type: BUCKET_BROWSER_LOAD_VERSIONS, + status, + }; +}; diff --git a/portal-ui/src/screens/Console/ObjectBrowser/reducers.ts b/portal-ui/src/screens/Console/ObjectBrowser/reducers.ts index be753edb4..584c18f49 100644 --- a/portal-ui/src/screens/Console/ObjectBrowser/reducers.ts +++ b/portal-ui/src/screens/Console/ObjectBrowser/reducers.ts @@ -30,6 +30,7 @@ import { BUCKET_BROWSER_VERSIONS_SET_SEARCH, BUCKET_BROWSER_SET_SELECTED_VERSION, BUCKET_BROWSER_SHOW_DELETED, + BUCKET_BROWSER_LOAD_VERSIONS, } from "./actions"; export interface Route { @@ -48,6 +49,7 @@ export interface ObjectBrowserState { rewind: RewindItem; objectManager: ObjectManager; searchObjects: string; + loadingVersions: boolean; versionsMode: boolean; versionedFile: string; searchVersions: string; @@ -82,6 +84,7 @@ const defaultRewind = { const initialState: ObjectBrowserState = { versionsMode: false, + loadingVersions: true, rewind: { ...defaultRewind, }, @@ -253,6 +256,11 @@ export function objectBrowserReducer( ...state, showDeleted: action.status, }; + case BUCKET_BROWSER_LOAD_VERSIONS: + return { + ...state, + loadingVersions: action.status, + }; default: return state; }