From ac5df5c2ff63fce47c62a3d874d02752dea6dcc3 Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Wed, 3 May 2023 13:13:37 +0500 Subject: [PATCH] Web:Viewer Fixed bug and Refactoring, does not change the URL after closing the viewer if the viewer was opened through the context menu --- .../client/src/pages/Home/MediaViewer/index.js | 6 +++++- packages/client/src/pages/Home/index.js | 16 ++++++++-------- packages/client/src/store/ContextOptionsStore.js | 2 ++ packages/client/src/store/FilesActionsStore.js | 3 ++- .../client/src/store/MediaViewerDataStore.js | 14 ++++++++++++++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/client/src/pages/Home/MediaViewer/index.js b/packages/client/src/pages/Home/MediaViewer/index.js index 58ac3eb69d..bf0aaae370 100644 --- a/packages/client/src/pages/Home/MediaViewer/index.js +++ b/packages/client/src/pages/Home/MediaViewer/index.js @@ -48,6 +48,7 @@ const FilesMediaViewer = (props) => { nextMedia, prevMedia, resetUrl, + getFirstUrl, firstLoad, setSelection, } = props; @@ -160,7 +161,8 @@ const FilesMediaViewer = (props) => { setMediaViewerData({ visible: false, id: null }); - const url = localStorage.getItem("isFirstUrl"); + // const url = localStorage.getItem("isFirstUrl"); + const url = getFirstUrl(); if (!url) { return; @@ -238,6 +240,7 @@ export default inject( id: currentMediaFileId, currentPostionIndex, setMediaViewerData, + getFirstUrl, playlist, previewFile, setToPreviewFile, @@ -302,6 +305,7 @@ export default inject( onDuplicate, archiveRoomsId, setSelection, + getFirstUrl, }; } )( diff --git a/packages/client/src/pages/Home/index.js b/packages/client/src/pages/Home/index.js index 1c5a08794b..3cd624b697 100644 --- a/packages/client/src/pages/Home/index.js +++ b/packages/client/src/pages/Home/index.js @@ -53,10 +53,13 @@ class PureHome extends React.Component { setIsUpdatingRowItem, setIsPreview, selectedFolderStore, + removeFirstUrl, } = this.props; if (!window.location.href.includes("#preview")) { - localStorage.removeItem("isFirstUrl"); + // localStorage.removeItem("isFirstUrl"); + // Media viewer + removeFirstUrl(); } const categoryType = getCategoryType(location); @@ -680,12 +683,8 @@ export default inject( setItemsSelectionTitle, } = secondaryProgressDataStore; - const { - setUploadPanelVisible, - startUpload, - uploaded, - converted, - } = uploadDataStore; + const { setUploadPanelVisible, startUpload, uploaded, converted } = + uploadDataStore; const { uploadEmptyFolders } = filesActionsStore; @@ -694,7 +693,7 @@ export default inject( ? filesStore.selectionTitle : null; - const { setToPreviewFile, playlist } = mediaViewerDataStore; + const { setToPreviewFile, playlist, removeFirstUrl } = mediaViewerDataStore; const { isHeaderVisible, @@ -766,6 +765,7 @@ export default inject( setToPreviewFile, setIsPreview, playlist, + removeFirstUrl, getFileInfo, gallerySelected, diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 20bbe5cc9b..7b5acbad85 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -400,6 +400,8 @@ class ContextOptionsStore { onMediaFileClick = (fileId, item) => { const itemId = typeof fileId !== "object" ? fileId : item.id; this.mediaViewerDataStore.setMediaViewerData({ visible: true, id: itemId }); + // localStorage.setItem("isFirstUrl", window.location.href); + this.mediaViewerDataStore.saveFirstUrl(window.location.href); this.mediaViewerDataStore.changeUrl(itemId); }; diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 3231b4cea0..48596ca7f9 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -1978,7 +1978,8 @@ class FilesActionStore { } if (isMediaOrImage) { - localStorage.setItem("isFirstUrl", window.location.href); + // localStorage.setItem("isFirstUrl", window.location.href); + this.mediaViewerDataStore.saveFirstUrl(window.location.href); setMediaViewerData({ visible: true, id }); const url = "/products/files/#preview/" + id; diff --git a/packages/client/src/store/MediaViewerDataStore.js b/packages/client/src/store/MediaViewerDataStore.js index 7ad3732a80..27ae7fddb8 100644 --- a/packages/client/src/store/MediaViewerDataStore.js +++ b/packages/client/src/store/MediaViewerDataStore.js @@ -4,6 +4,8 @@ import { findNearestIndex, } from "@docspace/common/components/MediaViewer/helpers"; +const FirstUrlKey = "isFirstUrl"; + class MediaViewerDataStore { filesStore; settingsStore; @@ -50,6 +52,18 @@ class MediaViewerDataStore { this.id = id; }; + saveFirstUrl = (url) => { + localStorage.setItem(FirstUrlKey, url); + }; + + getFirstUrl = () => { + return localStorage.getItem(FirstUrlKey); + }; + + removeFirstUrl = () => { + localStorage.removeItem(FirstUrlKey); + }; + changeUrl = (id) => { const url = "/products/files/#preview/" + id; window.history.pushState(null, null, url);