1
0
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:
杨国璇
2024-10-21 11:29:17 +08:00
committed by GitHub
parent 21085997e3
commit 8200113b7f
142 changed files with 823 additions and 538 deletions

View File

@@ -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>

View File

@@ -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>
);
})}

View File

@@ -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')}

View File

@@ -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>
);
})

View File

@@ -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>

View File

@@ -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 (

View File

@@ -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 {

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>
);
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 (

View File

@@ -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>