diff --git a/frontend/src/components/dialog/repo-seatable-integration-dialog.js b/frontend/src/components/dialog/repo-seatable-integration-dialog.js deleted file mode 100644 index dc76d27622..0000000000 --- a/frontend/src/components/dialog/repo-seatable-integration-dialog.js +++ /dev/null @@ -1,192 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Modal, ModalHeader, ModalBody } from 'reactstrap'; -import SeatableAccountSettingList from '../seatable-integration-account-setting-widgets/seatable-account-setting-list.js'; -import AddSeatableAccountSetting from '../../components/seatable-integration-account-setting-widgets/add-seatable-account-setting.js'; -import toaster from '../toast'; -import { seafileAPI } from '../../utils/seafile-api'; -import { Utils } from '../../utils/utils'; -import { gettext, internalFilePath, dirPath } from '../../utils/constants'; - -import '../../css/repo-seatable-integration-dialog.css'; - -const propTypes = { - repo: PropTypes.object.isRequired, - onSeaTableIntegrationToggle: PropTypes.func.isRequired, -}; - -const STATUS = { - SEATABLE_ACCOUNT_MANAGE: 'seatable_account_manage', - ADD_SETABLE_ACCOUNT: 'add_seatable_account', - UPDATE_SEATABLE_ACCOUNT: 'update_seatable_account' -}; - -class RepoSeaTableIntegrationDialog extends React.Component { - constructor(props) { - super(props); - this.state = { - activeTab: 'SeaTable', - seatableSettings: [], - baseApiToken: '', - isPasswordVisible: false, - isShowDialog: false, - currentDtableInfo: {}, - status: STATUS.SEATABLE_ACCOUNT_MANAGE, - }; - this.repo = this.props.repo; - } - - componentDidMount() { - this.getSeatableSettings(); - } - - getSeatableSettings = async (status) => { - seafileAPI.req.defaults.headers.Authorization = null; - const [downloadLinkRes] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]); - if (downloadLinkRes && downloadLinkRes.data) { - const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data); - if (fileInfoRes?.data && fileInfoRes.data) { - this.setState({ - seatableSettings: fileInfoRes.data - }); - status && this.setState({ status }); - } - } - }; - - changeTab = (tab) => { - if (this.state.activeTab !== tab) { - this.setState({ activeTab: tab }); - } - }; - - changeStatus = (status) => { - this.setState({ status }); - }; - - getFile = (detail, fileList) => { - const { base_name, seatable_url, seatable_api_token } = detail; - let content = [{ - 'base_name': base_name, - 'seatable_server_url': seatable_url, - 'base_api_token': seatable_api_token - }]; - - if (fileList && fileList.length !== 0) { - const index = fileList?.findIndex((item) => item.base_api_token === seatable_api_token); - if (index !== -1) { - fileList[index] = content[0]; - } else { - fileList.push(content[0]); - } - content = fileList; - } - - const fileName = internalFilePath.split('/')[2]; - const fileContent = JSON.stringify(content); - const newFile = new File([fileContent], fileName); - return newFile; - }; - - editSeatableSettingAccount = (baseApiToken) => { - const { seatableSettings } = this.state; - this.setState({ - status: STATUS.UPDATE_SEATABLE_ACCOUNT, - currentDtableInfo: seatableSettings.find((item) => item.base_api_token === baseApiToken) - }); - }; - - deleteStableAccountSetting = async (setting, status) => { - const { base_api_token } = setting; - seafileAPI.req.defaults.headers.Authorization = null; - const [downloadLinkRes] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]); - if (downloadLinkRes && downloadLinkRes.data) { - const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data); - if (fileInfoRes?.data) { - const fileList = fileInfoRes.data; - const index = fileList?.findIndex((item) => item.base_api_token === base_api_token); - if (index !== -1) { - fileList.splice(index, 1); - const fileContent = JSON.stringify(fileList); - const fileName = internalFilePath.split('/')[2]; - const newFile = new File([fileContent], fileName); - const updateLink = await seafileAPI.getUpdateLink(this.repo.repo_id, internalFilePath.slice(0, 10)); - await seafileAPI.updateFile(updateLink.data, internalFilePath, fileName, newFile).catch(err => {toaster.danger(gettext(err.message));}); - this.getSeatableSettings(status); - } - } - } - }; - - onSubmit = async (detail, status) => { - seafileAPI.req.defaults.headers.Authorization = null; - const [downloadLinkRes, err] = await seafileAPI.getFileDownloadLink(this.repo.repo_id, internalFilePath).then(res => [res, null]).catch((err) => [null, err]); - // Contains configuration files - if (downloadLinkRes && downloadLinkRes.data) { - const fileInfoRes = await seafileAPI.getFileContent(downloadLinkRes.data); - if (fileInfoRes?.data) { - const newFile = this.getFile(detail, fileInfoRes.data); - const updateLink = await seafileAPI.getUpdateLink(this.repo.repo_id, internalFilePath.slice(0, 10)); - const fileName = internalFilePath.split('/')[2]; - await seafileAPI.updateFile(updateLink.data, internalFilePath, fileName, newFile).catch(err => {toaster.danger(gettext(err.message));}); - this.getSeatableSettings(status); - } - } - // No configuration file - if (err) { - const uploadLink = await seafileAPI.getFileServerUploadLink(this.repo.repo_id, dirPath); - const newFile = this.getFile(detail); - const formData = new FormData(); - formData.append('file', newFile); - formData.append('relative_path', internalFilePath.split('/')[1]); - formData.append('parent_dir', dirPath); - await seafileAPI.uploadImage(uploadLink.data + '?ret-json=1', formData).catch(err => {toaster.danger(gettext(err.message));}); - this.getSeatableSettings(status); - } - }; - - render() { - const { seatableSettings, status, currentDtableInfo } = this.state; - const { onSeaTableIntegrationToggle } = this.props; - let repo = this.repo; - const itemName = '' + Utils.HTMLescape(repo.repo_name) + ''; - const title = gettext('{placeholder} SeaTable integration').replace('{placeholder}', itemName); - - return ( - - -

-
- -
- {status === STATUS.SEATABLE_ACCOUNT_MANAGE && ( - this.changeStatus(STATUS.ADD_SETABLE_ACCOUNT)} - editSeatableSettingAccount={this.editSeatableSettingAccount} - deleteStableAccountSetting={this.deleteStableAccountSetting} - /> - )} - {status === STATUS.ADD_SETABLE_ACCOUNT && ( - this.changeStatus(STATUS.SEATABLE_ACCOUNT_MANAGE)} - onSubmit={this.onSubmit} - /> - )} - {status === STATUS.UPDATE_SEATABLE_ACCOUNT && ( - this.changeStatus(STATUS.SEATABLE_ACCOUNT_MANAGE)} - onSubmit={this.onSubmit} - /> - )} -
-
-
- ); - } -} - -RepoSeaTableIntegrationDialog.propTypes = propTypes; - -export default RepoSeaTableIntegrationDialog; diff --git a/frontend/src/components/seatable-integration-account-setting-widgets/add-seatable-account-setting.js b/frontend/src/components/seatable-integration-account-setting-widgets/add-seatable-account-setting.js deleted file mode 100644 index 9d9cc23808..0000000000 --- a/frontend/src/components/seatable-integration-account-setting-widgets/add-seatable-account-setting.js +++ /dev/null @@ -1,170 +0,0 @@ -import React, { Component } from 'react'; -import { Alert, Input, FormGroup, Label, InputGroup, InputGroupText } from 'reactstrap'; -import PropTypes from 'prop-types'; -import { seafileAPI } from '../../utils/seafile-api'; -import { gettext } from '../../utils/constants'; - -class AddSeatableAccountSetting extends Component { - - static propTypes = { - t: PropTypes.func, - changeStatus: PropTypes.func, - onSubmit: PropTypes.func, - currentDtableInfo: PropTypes.object, - addSeatableAccountSetting: PropTypes.func, - }; - - constructor(props) { - super(props); - const { currentDtableInfo } = props; - this.state = { - errMessage: '', - base_name: currentDtableInfo?.base_name || '', - seatable_url: currentDtableInfo?.seatable_url || '', - seatable_api_token: currentDtableInfo?.base_api_token || '', - successMessage: null, - stage: 'toCheck', // toCheck: need to check -> toSubmit: need to submit - passwordType: 'password' - }; - } - - onChangeBaseName = (event) => { - let value = event.target.value; - if (value === this.state.base_name) { - return; - } - this.setState({ - base_name: value, - errMessage: '', - }); - }; - - onChangeSeatableUrl = (event) => { - let value = event.target.value; - if (value === this.state.seatable_url) { - return; - } - this.setState({ - seatable_url: value, - successMessage: null, - stage: 'toCheck', - errMessage: '', - }); - }; - - onChangeSeatableApiToken = (event) => { - let value = event.target.value; - if (value === this.state.seatable_api_token) { - return; - } - this.setState({ - seatable_api_token: value, - successMessage: null, - stage: 'toCheck', - errMessage: '', - }); - }; - - addSeatableAccountSetting = () => { - let { base_name, seatable_url, seatable_api_token } = this.state; - base_name = base_name.trim(); - seatable_url = seatable_url.trim(); - seatable_api_token = seatable_api_token.trim(); - let errMessage = ''; - if (!base_name) { - errMessage = gettext('SeaTable base name is required'); - } - else if (!seatable_url) { - errMessage = gettext('SeaTable server URL is required'); - } - else if (!seatable_api_token) { - errMessage = gettext('SeaTable API token is required'); - } - - this.setState({ errMessage }); - if (errMessage) return; - let detail = { - base_name, - seatable_url, - seatable_api_token - }; - this.props.onSubmit(detail, 'seatable_account_manage'); - }; - - testSeatableAPIToken = async () => { - const { seatable_url, seatable_api_token } = this.state; - seafileAPI.req.defaults.headers.Authorization = `Token ${seatable_api_token}`; - const [res, err] = await seafileAPI.req.get(`${seatable_url}api/v2.1/dtable/app-access-token/`).then(res => [res, null]).catch((err) => [null, err]); - if (res) { - this.setState({ - successMessage: res.data, - stage: 'toSubmit', - }); - } - if (err) { - this.setState({ - errMessage: gettext('URL or SeaTable API token is invalid'), - }); - } - }; - - togglePasswordShow = () => { - if (this.state.passwordType === 'password') { - this.setState({ passwordType: 'text' }); - } else { - this.setState({ passwordType: 'password' }); - } - }; - - render() { - const { errMessage, stage, successMessage, base_name, seatable_url, seatable_api_token, passwordType } = this.state; - return ( -
-
- - - - - {gettext('Add SeaTable Integration')} - - -
-
-
- - - - - - - - - - - - - - - - - -
- {errMessage && {errMessage}} - {successMessage && ( - - - {gettext('Successfully connected to SeaTable')} - - )} -
-
- ); - } -} - -export default AddSeatableAccountSetting; diff --git a/frontend/src/components/seatable-integration-account-setting-widgets/delete-seatables-dialog.js b/frontend/src/components/seatable-integration-account-setting-widgets/delete-seatables-dialog.js deleted file mode 100644 index 0b68146fca..0000000000 --- a/frontend/src/components/seatable-integration-account-setting-widgets/delete-seatables-dialog.js +++ /dev/null @@ -1,32 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'; -import { gettext } from '../../utils/constants'; - -class DeleteSeatablesDialog extends Component { - - static propTypes = { - t: PropTypes.func, - accountName: PropTypes.string, - onDeleteSeatables: PropTypes.func, - closeDialog: PropTypes.func, - }; - - render() { - const { accountName, closeDialog } = this.props; - return ( - - {gettext('Delete SeaTable base')} - -

{gettext('Are you sure you want to delete SeaTable {accountName}?').replace('{accountName}', accountName)}

-
- - - - -
- ); - } -} - -export default DeleteSeatablesDialog; diff --git a/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-item.js b/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-item.js deleted file mode 100644 index 2f5939a2cf..0000000000 --- a/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-item.js +++ /dev/null @@ -1,78 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import DeleteSeatablesDialog from './delete-seatables-dialog'; -import { gettext } from '../../utils/constants'; - -class SeatableAccountItem extends Component { - - constructor(props) { - super(props); - this.state = { - isShowDialog: false, - }; - } - - static propTypes = { - t: PropTypes.func, - editSeatableSettingAccount: PropTypes.func, - deleteStableAccountSetting: PropTypes.func, - setting: PropTypes.object, - index: PropTypes.number, - }; - - openDialog = () => { - this.setState({ isShowDialog: true }); - }; - - closeDialog = () => { - this.setState({ isShowDialog: false }); - }; - - onDeleteSeatables = () => { - const { setting } = this.props; - this.props.deleteStableAccountSetting(setting, 'seatable_account_manage'); - this.closeDialog(); - }; - - render() { - const { isShowDialog } = this.state; - const { setting, t, index } = this.props; - const { base_api_token, base_name, seatable_server_url } = setting; - return ( - - {base_name} - - {seatable_server_url} - - - - - - - - - - {isShowDialog && - - } - - ); - } -} - -export default SeatableAccountItem; diff --git a/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-list.js b/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-list.js deleted file mode 100644 index 4732bfff5c..0000000000 --- a/frontend/src/components/seatable-integration-account-setting-widgets/seatable-account-setting-list.js +++ /dev/null @@ -1,72 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Button } from 'reactstrap'; -import { gettext } from '../../utils/constants'; -import SeatableAccountItem from './seatable-account-setting-item'; -import EmptyTip from '../empty-tip'; - -class SeatableAccountSettingList extends Component { - - static propTypes = { - accounts: PropTypes.array, - changeStatus: PropTypes.func, - editSeatableSettingAccount: PropTypes.func, - seatableSettings: PropTypes.array, - deleteStableAccountSetting: PropTypes.func, - }; - - renderContent = () => { - const { seatableSettings } = this.props; - if (!Array.isArray(seatableSettings) || seatableSettings.length === 0) { - return ( - - ); - } - return ( - <> - - - - - - - - -
{gettext('SeaTable base name')}{gettext('SeaTable server URL')}
-
- - - {seatableSettings.map((setting, index) => { - return ( - - ); - })} - -
-
- - ); - }; - - render() { - return ( -
-
- {'SeaTable'} - -
-
- {this.renderContent()} -
-
- ); - } -} - -export default SeatableAccountSettingList; 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 d9b6cdb058..a96edb0081 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 @@ -4,7 +4,7 @@ import moment from 'moment'; import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap'; import { Link, navigate } from '@gatsbyjs/reach-router'; import { Utils } from '../../utils/utils'; -import { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff, enableResetEncryptedRepoPassword, isEmailConfigured, enableRepoAutoDel, enableSeaTableIntegration } from '../../utils/constants'; +import { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff, enableResetEncryptedRepoPassword, isEmailConfigured, enableRepoAutoDel } from '../../utils/constants'; import ModalPortal from '../../components/modal-portal'; import ShareDialog from '../../components/dialog/share-dialog'; import LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder-permission-dialog'; @@ -12,7 +12,6 @@ import DeleteRepoDialog from '../../components/dialog/delete-repo-dialog'; import ChangeRepoPasswordDialog from '../../components/dialog/change-repo-password-dialog'; import ResetEncryptedRepoPasswordDialog from '../../components/dialog/reset-encrypted-repo-password-dialog'; import LibOldFilesAutoDelDialog from '../../components/dialog/lib-old-files-auto-del-dialog'; -import RepoSeaTableIntegrationDialog from '../../components/dialog/repo-seatable-integration-dialog'; import Rename from '../rename'; import { seafileAPI } from '../../utils/seafile-api'; import LibHistorySettingDialog from '../dialog/lib-history-setting-dialog'; @@ -55,8 +54,7 @@ class SharedRepoListItem extends React.Component { isRepoDeleted: false, isChangePasswordDialogShow: false, isResetPasswordDialogShow: false, - isOldFilesAutoDelDialogOpen: false, - isSeaTableIntegrationShow: false, + isOldFilesAutoDelDialogOpen: false }; this.isDeparementOnwerGroupMember = false; } @@ -196,9 +194,6 @@ class SharedRepoListItem extends React.Component { case 'Old Files Auto Delete': this.toggleOldFilesAutoDelDialog(); break; - case 'SeaTable integration': - this.onSeaTableIntegrationToggle(); - break; // no default } }; @@ -304,10 +299,6 @@ class SharedRepoListItem extends React.Component { this.setState({ isOldFilesAutoDelDialogOpen: !this.state.isOldFilesAutoDelDialogOpen }); }; - onSeaTableIntegrationToggle = () => { - this.setState({ isSeaTableIntegrationShow: !this.state.isSeaTableIntegrationShow }); - }; - onAPITokenToggle = () => { this.setState({ isAPITokenDialogShow: !this.state.isAPITokenDialogShow }); }; @@ -377,9 +368,6 @@ class SharedRepoListItem extends React.Component { if (enableRepoAutoDel) { operations.push('Old Files Auto Delete'); } - if (enableSeaTableIntegration) { - operations.push('SeaTable integration'); - } return operations; }; @@ -823,14 +811,6 @@ class SharedRepoListItem extends React.Component { /> )} - {this.state.isSeaTableIntegrationShow && ( - - - - )} ); } diff --git a/frontend/src/css/repo-seatable-integration-dialog.css b/frontend/src/css/repo-seatable-integration-dialog.css deleted file mode 100644 index b753c62b8e..0000000000 --- a/frontend/src/css/repo-seatable-integration-dialog.css +++ /dev/null @@ -1,261 +0,0 @@ -/* common */ -.account-dialog .nav .nav-item { - padding: 0; -} - -.account-dialog .nav .nav-item .nav-link { - padding: 0.5rem 0; - color: #8a948f; - font-weight: normal; - transition: none; - width: 100%; -} - -.account-dialog .nav .nav-item .nav-link.active { - color: #ff8000; - text-decoration: none; - border-bottom: 0.125rem solid #ff8000; -} - -.account-dialog .nav-pills .nav-item .nav-link { - padding: .3125rem 1rem .3125rem 8px; - color: #212529; -} - -.account-dialog .nav-pills .nav-item .nav-link:hover { - background-color: #f5f5f5; -} - -.account-dialog .nav-pills .nav-item .nav-link.active { - background-color: #ff8000; - color: #fff; - border: none; -} - -.account-dialog table { - width: 100%; - table-layout: fixed; -} - -.account-dialog .accounts-list { - max-height: 400px; - overflow: auto; -} - -.account-dialog .accounts-list table thead tr { - border-bottom: 1px solid #efefef; - height: 2.1875rem; -} - -.account-dialog .accounts-list table tbody tr { - border-bottom: 1px solid #efefef; - height: 2.5625rem; -} - -.account-dialog table th { - padding: 0.3125rem 0.1875rem; - font-weight: 500; -} - -.account-dialog table td { - padding: 3px 0.1875rem; - color: #212529; - font-size: 14px; - word-break: break-all; -} - -.account-dialog table td a { - text-decoration: none; - color: inherit; -} - -.account-dialog .ellipsis { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.account-dialog .select-module { - font-size: 16px; -} - -.account-dialog .select-module.select-module-icon { - width: 1.5rem; - height: 1.5rem; -} - -.account-dialog .select-module.select-module-name { - margin-left: 0.5rem; -} - -.account-dialog .op-target { - color: #ea7500; - word-wrap: break-word; -} - -/* custom */ -.account-dialog { - max-width: 600px; - height: calc(100% - 56px); -} - -.account-dialog .account-dialog-content { - padding: 0; - min-height: 27rem; - display: flex; - flex-direction: row; - overflow: hidden; -} - -.account-dialog-content .account-dialog-side { - display: flex; - flex: 0 0 25%; - padding: 12px 8px; - border-right: 1px solid #eee; -} - -.account-dialog-content .account-dialog-main { - flex: 1; - padding: 0.5rem 1.5rem 2rem; -} - -.account-dialog-content .account-dialog-main .tab-content { - flex: 1; -} - -.account-dialog-content .account-dialog-main .tab-pane { - height: 100%; -} - -.account-dialog .wechat-input-content { - height: 250px; -} - -.accounts-manage .accounts-manage-header { - border-bottom: 1px solid #efefef; - padding: .375rem 0; -} - -.accounts-manage .accounts-manage-header button { - font-weight: normal; -} - -.accounts-manage .accounts-list-body { - max-height: 400px; - overflow-y: auto; - cursor: pointer; -} - -.accounts-manage th, -.accounts-manage td { - padding: .5rem .1875rem; - border-color: #efefef; -} - -.accounts-manage th { - color: #999; -} - -.accounts-manage .accounts-list-body tr:hover { - background-color: #f9f9f9; -} - -.accounts-manage .accounts-list-body .account-operation-btn { - display: none; - margin-right: .2rem; -} - -.accounts-manage .accounts-list-body tr:hover .account-operation-btn { - display: inline-flex; - width: 24px; - height: 24px; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.accounts-manage .account-operation-btn .dtable-font { - font-size: 14px; - color: #999; -} - -.accounts-manage .account-operation-btn:hover .dtable-font { - color: #5a5a5a; -} - -.add-account, -.edit-account { - height: 100%; -} - -.add-account .add-account-header, -.edit-account .edit-account-header { - padding: .375rem 0; - border-bottom: 1px solid #efefef; -} - -.add-account .back-btn, -.edit-account .back-btn { - width: 18px; - height: 18px; - cursor: pointer; -} - -.add-account .back-btn .dtable-icon-return, -.edit-account .back-btn .dtable-icon-return { - font-size: 14px; - color: #999; -} - -.add-account .back-btn:hover .dtable-icon-return, -.edit-account .back-btn:hover .dtable-icon-return { - color: #5a5a5a; -} - -.add-account .add-account-header-text, -.edit-account .edit-account-header-text { - margin-left: .25rem; -} - -.add-account .add-account-btn, -.edit-account .edit-account-btn { - margin: 0; - padding-top: 0; - padding-bottom: 0; - font-weight: normal; - border-color: #ff8000; - color: #ff8000; -} - -.add-account .account-loading-tip { - margin-top: 1rem; -} - -.add-account .add-account-btn:hover, -.edit-account .edit-account-btn:hover { - background-color: transparent; -} - -.base-account { - height: calc(100% - 38px); -} - -.base-account input[type="checkbox"] { - margin-top: -2px; - vertical-align: middle; -} - -.base-account .account-name-desc { - margin-top: .375rem; -} - -.base-account .base-account-password .input-group .form-control { - height: 38px; - border-right: none; -} - -.base-account .base-account-password .input-group .input-group-text { - height: 38px; - border-radius: 0 3px 3px 0; -} - 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 2f576d085d..ff24529c9c 100644 --- a/frontend/src/pages/my-libs/mylib-repo-list-item.js +++ b/frontend/src/pages/my-libs/mylib-repo-list-item.js @@ -19,7 +19,6 @@ import LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder import Rename from '../../components/rename'; import MylibRepoMenu from './mylib-repo-menu'; import RepoAPITokenDialog from '../../components/dialog/repo-api-token-dialog'; -import RepoSeaTableIntegrationDialog from '../../components/dialog/repo-seatable-integration-dialog'; import RepoShareAdminDialog from '../../components/dialog/repo-share-admin-dialog'; import LibOldFilesAutoDelDialog from '../../components/dialog/lib-old-files-auto-del-dialog'; import RepoMonitoredIcon from '../../components/repo-monitored-icon'; @@ -53,7 +52,6 @@ class MylibRepoListItem extends React.Component { isLabelRepoStateDialogOpen: false, isFolderPermissionDialogShow: false, isAPITokenDialogShow: false, - isSeaTableIntegrationShow: false, isRepoShareAdminDialogOpen: false, isRepoDeleted: false, isOldFilesAutoDelDialogOpen: false, @@ -134,9 +132,6 @@ class MylibRepoListItem extends React.Component { case 'Old Files Auto Delete': this.toggleOldFilesAutoDelDialog(); break; - case 'SeaTable integration': - this.onSeaTableIntegrationToggle(); - break; default: break; } @@ -234,10 +229,6 @@ class MylibRepoListItem extends React.Component { this.setState({ isAPITokenDialogShow: !this.state.isAPITokenDialogShow }); }; - onSeaTableIntegrationToggle = () => { - this.setState({ isSeaTableIntegrationShow: !this.state.isSeaTableIntegrationShow }); - }; - toggleRepoShareAdminDialog = () => { this.setState({ isRepoShareAdminDialogOpen: !this.state.isRepoShareAdminDialogOpen }); }; @@ -564,15 +555,6 @@ class MylibRepoListItem extends React.Component { )} - {this.state.isSeaTableIntegrationShow && ( - - - - )} - {this.state.isRepoShareAdminDialogOpen && (