diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index 3a8cc4f40f..f6e9ae29ce 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -171,8 +171,10 @@ class DirentListItem extends React.Component { onItemClick = (e) => { e.preventDefault(); - const dirent = this.props.dirent; + if (this.state.isRenameing) { + return; + } if (Utils.imageCheck(dirent.name)) { this.props.showImagePopup(dirent); } else { @@ -664,19 +666,19 @@ class DirentListItem extends React.Component { ); const mobileItem = ( - +
{dirent.encoded_thumbnail_src ? - : + : } {dirent.is_locked && {gettext('locked')}}
- + {this.state.isRenameing ? : - {dirent.name} + {dirent.name} }
{dirent.size && {dirent.size}} diff --git a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js index 4b43cf1b63..26ade848d4 100644 --- a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js +++ b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js @@ -2,7 +2,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import moment from 'moment'; import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap'; -import { Link } from '@reach/router'; +import { Link, navigate } from '@reach/router'; import { Utils } from '../../utils/utils'; import { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff, enableResetEncryptedRepoPassword, isEmailConfigured } from '../../utils/constants'; import ModalPortal from '../../components/modal-portal'; @@ -478,15 +478,22 @@ class SharedRepoListItem extends React.Component { ); } + + visitRepo = () => { + if (!this.state.isRenaming) { + navigate(this.repoURL); + } + } renderMobileUI = () => { let { iconUrl, iconTitle, libPath } = this.getRepoComputeParams(); let { repo } = this.props; + this.repoURL = libPath; return ( - {iconTitle}/ - + {iconTitle}/ + {this.state.isRenaming ? : {repo.repo_name} diff --git a/frontend/src/pages/my-libs/mylib-repo-list-item.js b/frontend/src/pages/my-libs/mylib-repo-list-item.js index 3064ffc601..9376ad7b0a 100644 --- a/frontend/src/pages/my-libs/mylib-repo-list-item.js +++ b/frontend/src/pages/my-libs/mylib-repo-list-item.js @@ -2,7 +2,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import MediaQuery from 'react-responsive'; import moment from 'moment'; -import { Link } from '@reach/router'; +import { Link, navigate } from '@reach/router'; import { Utils } from '../../utils/utils'; import { seafileAPI } from '../../utils/seafile-api'; import { gettext, siteRoot, storages } from '../../utils/constants'; @@ -116,6 +116,12 @@ class MylibRepoListItem extends React.Component { } } + visitRepo = () => { + if (!this.state.isRenaming && this.props.repo.repo_name) { + navigate(this.repoURL); + } + } + onRepoClick = () => { this.props.onRepoClick(this.props.repo); } @@ -308,12 +314,12 @@ class MylibRepoListItem extends React.Component { let repo = this.props.repo; let iconUrl = Utils.getLibIconUrl(repo); let iconTitle = Utils.getLibIconTitle(repo); - let repoURL = `${siteRoot}library/${repo.repo_id}/${Utils.encodePath(repo.repo_name)}/`; + let repoURL = this.repoURL = `${siteRoot}library/${repo.repo_id}/${Utils.encodePath(repo.repo_name)}/`; return ( - {iconTitle} - + {iconTitle} + {this.state.isRenaming && ( { + navigate(this.repoURL); + } + render() { if (this.state.unshared) { return null; @@ -208,7 +212,7 @@ class Item extends Component { let iconVisibility = this.state.showOpIcon ? '' : ' invisible'; let shareIconClassName = 'op-icon sf2-icon-share repo-share-btn' + iconVisibility; let leaveShareIconClassName = 'op-icon sf2-icon-x3' + iconVisibility; - let shareRepoUrl =`${siteRoot}library/${data.repo_id}/${Utils.encodePath(data.repo_name)}/`; + let shareRepoUrl = this.repoURL = `${siteRoot}library/${data.repo_id}/${Utils.encodePath(data.repo_name)}/`; const desktopItem = ( @@ -249,8 +253,8 @@ class Item extends Component { const mobileItem = ( - {data.icon_title} - + {data.icon_title} + {data.repo_name}
{data.owner_name} {data.size} diff --git a/frontend/src/pages/starred/starred.js b/frontend/src/pages/starred/starred.js index efab48e1b6..3cbe54bf24 100644 --- a/frontend/src/pages/starred/starred.js +++ b/frontend/src/pages/starred/starred.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap'; -import { Link } from '@reach/router'; +import { Link, navigate } from '@reach/router'; import moment from 'moment'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; @@ -170,6 +170,15 @@ class Item extends Component { }); } + visitItem = () => { + const data = this.props.data; + if (data.is_dir) { + navigate(data.dirent_view_url); + } else { + window.open(data.dirent_view_url); + } + } + render() { if (this.state.unstarred) { @@ -206,14 +215,14 @@ class Item extends Component { const mobileItem = ( - + { data.thumbnail_url ? : {gettext('icon')} } - + { data.is_dir ? {data.obj_name} : {data.obj_name}