mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 02:48:51 +00:00
feat: optimize commonjs (#6906)
Co-authored-by: 杨国璇 <ygx@Hello-word.local>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { gettext } from '../../utils/constants';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
import { Utils } from '../../utils/utils';
|
||||
@@ -48,7 +48,7 @@ class CommitDetails extends React.Component {
|
||||
<Modal isOpen={true} centered={true} toggle={toggleDialog}>
|
||||
<ModalHeader toggle={toggleDialog}>{gettext('Modification Details')}</ModalHeader>
|
||||
<ModalBody>
|
||||
<p className="small">{moment(commitTime).format('YYYY-MM-DD HH:mm:ss')}</p>
|
||||
<p className="small">{dayjs(commitTime).format('YYYY-MM-DD HH:mm:ss')}</p>
|
||||
<Content data={this.state} />
|
||||
</ModalBody>
|
||||
</Modal>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
|
||||
import { Utils } from '../../utils/utils';
|
||||
import { gettext, siteRoot } from '../../utils/constants';
|
||||
@@ -11,7 +11,7 @@ import EmptyTip from '../empty-tip';
|
||||
|
||||
import '../../css/file-access-log.css';
|
||||
|
||||
moment.locale(window.app.config.lang);
|
||||
dayjs.locale(window.app.config.lang);
|
||||
|
||||
const propTypes = {
|
||||
repoID: PropTypes.string.isRequired,
|
||||
@@ -118,7 +118,7 @@ class FileAccessLog extends React.Component {
|
||||
<td className="pr-4">
|
||||
{`${item.ip}${item.device ? '/' + item.device : ''}`}
|
||||
</td>
|
||||
<td>{moment(item.time).format('YYYY-MM-DD HH:mm:ss')}</td>
|
||||
<td>{dayjs(item.time).format('YYYY-MM-DD HH:mm:ss')}</td>
|
||||
</tr>
|
||||
);
|
||||
})}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import copy from 'copy-to-clipboard';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon, Alert } from 'reactstrap';
|
||||
import { gettext, shareLinkForceUsePassword, shareLinkPasswordMinLength, shareLinkPasswordStrengthLevel, canSendShareLinkEmail, uploadLinkExpireDaysMin, uploadLinkExpireDaysMax, uploadLinkExpireDaysDefault } from '../../utils/constants';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
@@ -117,7 +117,7 @@ class GenerateUploadLink extends React.Component {
|
||||
let expirationTime = '';
|
||||
if (isExpireChecked) {
|
||||
if (expType == 'by-days') {
|
||||
expirationTime = moment().add(parseInt(expireDays), 'days').format();
|
||||
expirationTime = dayjs().add(parseInt(expireDays), 'days').format();
|
||||
} else {
|
||||
expirationTime = expDate.format();
|
||||
}
|
||||
@@ -228,7 +228,7 @@ class GenerateUploadLink extends React.Component {
|
||||
|
||||
let expirationTime = '';
|
||||
if (expType == 'by-days') {
|
||||
expirationTime = moment().add(parseInt(expireDays), 'days').format();
|
||||
expirationTime = dayjs().add(parseInt(expireDays), 'days').format();
|
||||
} else {
|
||||
expirationTime = expDate.format();
|
||||
}
|
||||
@@ -337,7 +337,7 @@ class GenerateUploadLink extends React.Component {
|
||||
</div>
|
||||
) : (
|
||||
<InputGroup className="share-link-details-item">
|
||||
<Input type="text" readOnly={true} value={moment(sharedUploadInfo.expire_date).format('YYYY-MM-DD HH:mm:ss')} />
|
||||
<Input type="text" readOnly={true} value={dayjs(sharedUploadInfo.expire_date).format('YYYY-MM-DD HH:mm:ss')} />
|
||||
<InputGroupAddon addonType="append">
|
||||
<Button
|
||||
aria-label={gettext('Edit')}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Table } from 'reactstrap';
|
||||
import { gettext, siteRoot } from '../../utils/constants';
|
||||
import { Utils } from '../../utils/utils';
|
||||
@@ -10,6 +11,8 @@ const propTypes = {
|
||||
toggleCancel: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
class ListCreatedFileDialog extends React.Component {
|
||||
|
||||
toggle = (activity) => {
|
||||
@@ -40,7 +43,7 @@ class ListCreatedFileDialog extends React.Component {
|
||||
return (
|
||||
<tr key={index}>
|
||||
<td>{fileLink}</td>
|
||||
<td>{moment(item.time).fromNow()}</td>
|
||||
<td>{dayjs(item.time).fromNow()}</td>
|
||||
</tr>
|
||||
);
|
||||
})
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { gettext, siteRoot } from '../../utils/constants';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
import { Utils } from '../../utils/utils';
|
||||
@@ -169,7 +169,7 @@ class TaggedFile extends React.Component {
|
||||
<Fragment>
|
||||
<td><a href={href} target='_blank' className="d-inline-block w-100 ellipsis" title={taggedFile.filename} rel="noreferrer">{taggedFile.filename}</a></td>
|
||||
<td>{Utils.bytesToSize(taggedFile.size)}</td>
|
||||
<td>{moment.unix(taggedFile.mtime).fromNow()}</td>
|
||||
<td>{dayjs.unix(taggedFile.mtime).fromNow()}</td>
|
||||
</Fragment>
|
||||
}
|
||||
<td>
|
||||
|
@@ -1,7 +1,8 @@
|
||||
import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import { gettext, lang, trashReposExpireDays } from '../../utils/constants';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
import { Utils } from '../../utils/utils';
|
||||
@@ -11,7 +12,8 @@ import EmptyTip from '../../components/empty-tip';
|
||||
|
||||
import '../../css/my-deleted-repos.css';
|
||||
|
||||
moment.locale(lang);
|
||||
dayjs.locale(lang);
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
class MyLibsDeleted extends Component {
|
||||
|
||||
@@ -128,8 +130,8 @@ class DeletedRepoItem extends Component {
|
||||
};
|
||||
|
||||
render() {
|
||||
let localTime = moment.utc(this.props.repo.del_time).toDate();
|
||||
localTime = moment(localTime).fromNow();
|
||||
let localTime = dayjs.utc(this.props.repo.del_time).toDate();
|
||||
localTime = dayjs(localTime).fromNow();
|
||||
let iconUrl = Utils.getLibIconUrl(this.props.repo);
|
||||
|
||||
return (
|
||||
|
@@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, FormGroup, Label, Input, Alert } from 'reactstrap';
|
||||
import dayjs from 'dayjs';
|
||||
import { gettext, siteRoot, orgID } from '../../utils/constants';
|
||||
import { orgAdminAPI } from '../../utils/org-admin-api';
|
||||
import { userAPI } from '../../utils/user-api';
|
||||
import toaster from '../../components/toast';
|
||||
import { Utils } from '../../utils/utils';
|
||||
import moment from 'moment';
|
||||
|
||||
class OrgLogsExportExcelDialog extends React.Component {
|
||||
|
||||
@@ -82,9 +82,9 @@ class OrgLogsExportExcelDialog extends React.Component {
|
||||
|
||||
isValidDateStr = () => {
|
||||
let { startDateStr, endDateStr } = this.state;
|
||||
if (moment(startDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
moment(endDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
moment(startDateStr).isBefore(endDateStr)
|
||||
if (dayjs(startDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
dayjs(endDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
dayjs(startDateStr).isBefore(endDateStr)
|
||||
) {
|
||||
return true;
|
||||
} else {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import classnames from 'classnames';
|
||||
import { Link } from '@gatsbyjs/reach-router';
|
||||
import { Utils } from '../../../utils/utils';
|
||||
@@ -92,7 +92,7 @@ class Item extends Component {
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{item.expire_date ? moment(item.expire_date).format('YYYY-MM-DD HH:mm') : '--'}
|
||||
{item.expire_date ? dayjs(item.expire_date).format('YYYY-MM-DD HH:mm') : '--'}
|
||||
</td>
|
||||
<td>{item.view_cnt}</td>
|
||||
<td>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import classnames from 'classnames';
|
||||
import { Link } from '@gatsbyjs/reach-router';
|
||||
import { Utils } from '../../../utils/utils';
|
||||
@@ -82,7 +82,7 @@ class Item extends Component {
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{item.expire_date ? moment(item.expire_date).format('YYYY-MM-DD HH:mm') : '--'}
|
||||
{item.expire_date ? dayjs(item.expire_date).format('YYYY-MM-DD HH:mm') : '--'}
|
||||
</td>
|
||||
<td>{item.view_cnt}</td>
|
||||
<td>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Alert } from 'reactstrap';
|
||||
import { Utils } from '../../utils/utils';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
@@ -12,6 +13,8 @@ const propTypes = {
|
||||
toggleDialog: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
class SearchFileDialog extends React.Component {
|
||||
|
||||
constructor(props) {
|
||||
@@ -143,7 +146,7 @@ class FileItem extends React.PureComponent {
|
||||
<a href={url}>{name}</a>
|
||||
</td>
|
||||
<td>{item.type == 'file' ? Utils.bytesToSize(item.size) : ''}</td>
|
||||
<td>{moment(item.mtime).fromNow()}</td>
|
||||
<td>{dayjs(item.mtime).fromNow()}</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Alert } from 'reactstrap';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
import { gettext } from '../../utils/constants';
|
||||
@@ -13,6 +14,8 @@ const shareRepoListItemProps = {
|
||||
onPermissionChange: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
class ShareRepoListItem extends React.Component {
|
||||
|
||||
onRepoSelect = (e) => {
|
||||
@@ -34,7 +37,7 @@ class ShareRepoListItem extends React.Component {
|
||||
<td className="text-center"><input type="checkbox" className="vam" name="repo" onChange={this.onRepoSelect} /></td>
|
||||
<td className="text-center"><img src={iconUrl} width="24" alt={gettext('icon')} /></td>
|
||||
<td className="name">{repo.repo_name}</td>
|
||||
<td>{moment(repo.last_modified).fromNow()}</td>
|
||||
<td>{dayjs(repo.last_modified).fromNow()}</td>
|
||||
<td>
|
||||
<Input style={{ height: '1.5rem', padding: 0 }} type="select" name="select" onChange={this.onPermissionChange} value={repo.sharePermission}>
|
||||
<option value='rw'>{gettext('Read-Write')}</option>
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { gettext } from '../../utils/constants';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { Button, Input } from 'reactstrap';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
import { Utils } from '../../utils/utils';
|
||||
@@ -52,7 +52,7 @@ class UserItem extends React.Component {
|
||||
onPermissionChanged={this.onChangeUserPermission}
|
||||
/>
|
||||
</td>
|
||||
<td>{moment(item.expire_time).format('YYYY-MM-DD')}</td>
|
||||
<td>{dayjs(item.expire_time).format('YYYY-MM-DD')}</td>
|
||||
<td className="name">{item.inviter_name}</td>
|
||||
<td>
|
||||
<span
|
||||
|
@@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, FormGroup, Label, Input, Alert } from 'reactstrap';
|
||||
import dayjs from 'dayjs';
|
||||
import { gettext, siteRoot } from '../../../utils/constants';
|
||||
import { systemAdminAPI } from '../../../utils/system-admin-api';
|
||||
import { userAPI } from '../../../utils/user-api';
|
||||
import toaster from '../../../components/toast';
|
||||
import { Utils } from '../../../utils/utils';
|
||||
import moment from 'moment';
|
||||
|
||||
class LogsExportExcelDialog extends React.Component {
|
||||
|
||||
@@ -85,9 +85,9 @@ class LogsExportExcelDialog extends React.Component {
|
||||
|
||||
isValidDateStr = () => {
|
||||
let { startDateStr, endDateStr } = this.state;
|
||||
if (moment(startDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
moment(endDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
moment(startDateStr).isBefore(endDateStr)
|
||||
if (dayjs(startDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
dayjs(endDateStr, 'YYYY-MM-DD', true).isValid() &&
|
||||
dayjs(startDateStr).isBefore(endDateStr)
|
||||
) {
|
||||
return true;
|
||||
} else {
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { Loading } from 'dtable-ui-component';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Modal, ModalBody, ModalHeader } from 'reactstrap';
|
||||
import Loading from '../loading';
|
||||
|
||||
function TipDialog({ modalTitle, modalTip }) {
|
||||
return (
|
||||
|
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { navigate } from '@gatsbyjs/reach-router';
|
||||
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
|
||||
import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import { Utils, isMobile } from '../../utils/utils';
|
||||
import { gettext, siteRoot, enableUserCleanTrash, username } from '../../utils/constants';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
@@ -389,7 +389,7 @@ class Item extends React.Component {
|
||||
<td className="pl10"><img src={Utils.getFolderIconUrl()} alt={gettext('Folder')} width="24" /></td>
|
||||
<td><a href="#" onClick={this.renderFolder}>{item.obj_name}</a></td>
|
||||
<td>{item.parent_dir}</td>
|
||||
<td title={moment(item.deleted_time).format('LLLL')}>{moment(item.deleted_time).format('YYYY-MM-DD')}</td>
|
||||
<td title={dayjs(item.deleted_time).format('dddd, MMMM D, YYYY h:mm:ss A')}>{dayjs(item.deleted_time).format('YYYY-MM-DD')}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="#" className={(isIconShown || isMobile) ? '' : 'invisible'} onClick={this.restoreItem} role="button">{gettext('Restore')}</a>
|
||||
@@ -400,7 +400,7 @@ class Item extends React.Component {
|
||||
<td className="pl10"><img src={Utils.getFileIconUrl(item.obj_name)} alt={gettext('File')} width="24" /></td>
|
||||
<td><a href={`${siteRoot}repo/${this.props.repoID}/trash/files/?obj_id=${item.obj_id}&commit_id=${item.commit_id}&base=${encodeURIComponent(item.parent_dir)}&p=${encodeURIComponent('/' + item.obj_name)}`} target="_blank" rel="noreferrer">{item.obj_name}</a></td>
|
||||
<td>{item.parent_dir}</td>
|
||||
<td title={moment(item.deleted_time).format('LLLL')}>{moment(item.deleted_time).format('YYYY-MM-DD')}</td>
|
||||
<td title={dayjs(item.deleted_time).format('dddd, MMMM D, YYYY h:mm:ss A')}>{dayjs(item.deleted_time).format('YYYY-MM-DD')}</td>
|
||||
<td>{Utils.bytesToSize(item.size)}</td>
|
||||
<td>
|
||||
<a href="#" className={(isIconShown || isMobile) ? '' : 'invisible'} onClick={this.restoreItem} role="button">{gettext('Restore')}</a>
|
||||
|
Reference in New Issue
Block a user