import React, { useContext } from 'react'; import { f7 } from 'framework7-react'; import { inject, observer } from "mobx-react"; import { withTranslation} from 'react-i18next'; import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage'; import ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu'; import { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu'; import { Device } from '../../../../common/mobile/utils/device'; import EditorUIController from '../lib/patch'; @inject ( stores => ({ isEdit: stores.storeAppOptions.isEdit, canViewComments: stores.storeAppOptions.canViewComments, canReview: stores.storeAppOptions.canReview, users: stores.users, isDisconnected: stores.users.isDisconnected })) class ContextMenu extends ContextMenuController { constructor(props) { super(props); // console.log('context menu controller created'); this.onApiShowComment = this.onApiShowComment.bind(this); this.onApiHideComment = this.onApiHideComment.bind(this); this.onApiShowChange = this.onApiShowChange.bind(this); this.getUserName = this.getUserName.bind(this); this.ShowModal = this.ShowModal.bind(this); } static closeContextMenu() { f7.popover.close(idContextMenuElement, false); } getUserName(id) { const user = this.props.users.searchUserByCurrentId(id); return Common.Utils.UserInfoParser.getParsedName(user.asc_getUserName()); } componentWillUnmount() { super.componentWillUnmount(); const api = Common.EditorApi.get(); api.asc_unregisterCallback('asc_onShowComment', this.onApiShowComment); api.asc_unregisterCallback('asc_onHideComment', this.onApiHideComment); api.asc_unregisterCallback('asc_onShowRevisionsChange', this.onApiShowChange); Common.Notifications.off('showSplitModal', this.ShowModal); } ShowModal() { this.showSplitModal() } onApiShowComment(comments) { this.isComments = comments && comments.length > 0; } onApiHideComment() { this.isComments = false; } onApiShowChange(sdkchange) { this.inRevisionChange = sdkchange && sdkchange.length>0; } // onMenuClosed() { // super.onMenuClosed(); // } onMenuItemClick(action) { super.onMenuItemClick(action); if ( EditorUIController.ContextMenu && EditorUIController.ContextMenu.handleMenuItemClick(this, action) ) return; const api = Common.EditorApi.get(); switch (action) { case 'cut': if ( !LocalStorage.getBool("de-hide-copy-cut-paste-warning") ) this.showCopyCutPasteModal(); break; case 'copy': if (!api.Copy() && !LocalStorage.getBool("de-hide-copy-cut-paste-warning") ) this.showCopyCutPasteModal(); break; case 'paste': if ( !LocalStorage.getBool("de-hide-copy-cut-paste-warning") ) this.showCopyCutPasteModal(); break; case 'viewcomment': Common.Notifications.trigger('viewcomment'); break; case 'openlink': const stack = api.getSelectedElements(); let value; stack.forEach((item) => { if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) { value = item.get_ObjectValue().get_Value(); } }); value && this.openLink(value); break; case 'review': setTimeout(() => { this.props.openOptions('coauth', 'cm-review'); }, 400); break; case 'reviewchange': setTimeout(() => { this.props.openOptions('coauth', 'cm-review-change'); }, 400); break; } console.log("click context menu item: " + action); } showCopyCutPasteModal() { const { t } = this.props; const _t = t("ContextMenu", { returnObjects: true }); f7.dialog.create({ title: _t.textCopyCutPasteActions, text: _t.errorCopyCutPaste, content: `