Merge pull request #931 from ONLYOFFICE/fix/fix-bugs-on-mobiles
Fix/fix bugs on mobiles
This commit is contained in:
commit
71e1dd4669
|
@ -35,8 +35,6 @@ const PluginsController = inject('storeAppOptions')(observer(props => {
|
||||||
api.asc_unregisterCallback("asc_onPluginClose", pluginClose);
|
api.asc_unregisterCallback("asc_onPluginClose", pluginClose);
|
||||||
api.asc_unregisterCallback("asc_onPluginResize", pluginResize);
|
api.asc_unregisterCallback("asc_onPluginResize", pluginResize);
|
||||||
api.asc_unregisterCallback('asc_onPluginsInit', onPluginsInit);
|
api.asc_unregisterCallback('asc_onPluginsInit', onPluginsInit);
|
||||||
|
|
||||||
Common.Gateway.off('init', loadConfig);
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ class CollaborationController extends Component {
|
||||||
api.asc_registerCallback('asc_OnTryUndoInFastCollaborative', this.onTryUndoInFastCollaborative.bind(this));
|
api.asc_registerCallback('asc_OnTryUndoInFastCollaborative', this.onTryUndoInFastCollaborative.bind(this));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Common.Notifications.on('api:disconnect', this.onCoAuthoringDisconnect.bind(this));
|
||||||
Common.Notifications.on('document:ready', this.onDocumentReady.bind(this));
|
Common.Notifications.on('document:ready', this.onDocumentReady.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { inject } from 'mobx-react';
|
import { inject, observer } from 'mobx-react';
|
||||||
import { f7 } from 'framework7-react';
|
import { f7 } from 'framework7-react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ToolbarView from "../view/Toolbar";
|
import ToolbarView from "../view/Toolbar";
|
||||||
|
|
||||||
const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(props => {
|
const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(observer(props => {
|
||||||
const {t} = useTranslation();
|
const {t} = useTranslation();
|
||||||
const _t = t("Toolbar", { returnObjects: true });
|
const _t = t("Toolbar", { returnObjects: true });
|
||||||
|
|
||||||
|
@ -23,8 +23,6 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(prop
|
||||||
api.asc_registerCallback('asc_onCanUndo', onApiCanUndo);
|
api.asc_registerCallback('asc_onCanUndo', onApiCanUndo);
|
||||||
api.asc_registerCallback('asc_onCanRedo', onApiCanRedo);
|
api.asc_registerCallback('asc_onCanRedo', onApiCanRedo);
|
||||||
api.asc_registerCallback('asc_onFocusObject', onApiFocusObject);
|
api.asc_registerCallback('asc_onFocusObject', onApiFocusObject);
|
||||||
api.asc_registerCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.on('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.on('goback', goBack);
|
Common.Notifications.on('goback', goBack);
|
||||||
|
@ -37,10 +35,15 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(prop
|
||||||
onDocumentReady();
|
onDocumentReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isDisconnected) {
|
||||||
|
f7.popover.close();
|
||||||
|
f7.sheet.close();
|
||||||
|
f7.popup.close();
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
Common.Notifications.off('document:ready', onDocumentReady);
|
Common.Notifications.off('document:ready', onDocumentReady);
|
||||||
Common.Notifications.off('setdoctitle', setDocTitle);
|
Common.Notifications.off('setdoctitle', setDocTitle);
|
||||||
Common.Notifications.off('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.off('goback', goBack);
|
Common.Notifications.off('goback', goBack);
|
||||||
|
@ -49,7 +52,6 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(prop
|
||||||
api.asc_unregisterCallback('asc_onCanUndo', onApiCanUndo);
|
api.asc_unregisterCallback('asc_onCanUndo', onApiCanUndo);
|
||||||
api.asc_unregisterCallback('asc_onCanRedo', onApiCanRedo);
|
api.asc_unregisterCallback('asc_onCanRedo', onApiCanRedo);
|
||||||
api.asc_unregisterCallback('asc_onFocusObject', onApiFocusObject);
|
api.asc_unregisterCallback('asc_onFocusObject', onApiFocusObject);
|
||||||
api.asc_unregisterCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -163,15 +165,6 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(prop
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const onCoAuthoringDisconnect = (enableDownload) => {
|
|
||||||
deactivateEditControls(enableDownload);
|
|
||||||
setCanUndo(false);
|
|
||||||
setCanRedo(false);
|
|
||||||
f7.popover.close();
|
|
||||||
f7.sheet.close();
|
|
||||||
f7.popup.close();
|
|
||||||
};
|
|
||||||
|
|
||||||
const [disabledControls, setDisabledControls] = useState(true);
|
const [disabledControls, setDisabledControls] = useState(true);
|
||||||
const activateControls = () => {
|
const activateControls = () => {
|
||||||
setDisabledControls(false);
|
setDisabledControls(false);
|
||||||
|
@ -200,8 +193,9 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeReview')(prop
|
||||||
readerMode={readerMode}
|
readerMode={readerMode}
|
||||||
showEditDocument={showEditDocument}
|
showEditDocument={showEditDocument}
|
||||||
onEditDocument={onEditDocument}
|
onEditDocument={onEditDocument}
|
||||||
|
isDisconnected={isDisconnected}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
});
|
}));
|
||||||
|
|
||||||
export {ToolbarController as Toolbar};
|
export {ToolbarController as Toolbar};
|
|
@ -25,6 +25,7 @@ class DownloadController extends Component {
|
||||||
const _t = t("Settings", { returnObjects: true });
|
const _t = t("Settings", { returnObjects: true });
|
||||||
|
|
||||||
if(format) {
|
if(format) {
|
||||||
|
this.closeModal();
|
||||||
if (format == Asc.c_oAscFileType.TXT || format == Asc.c_oAscFileType.RTF) {
|
if (format == Asc.c_oAscFileType.TXT || format == Asc.c_oAscFileType.RTF) {
|
||||||
f7.dialog.confirm(
|
f7.dialog.confirm(
|
||||||
(format === Asc.c_oAscFileType.TXT) ? _t.textDownloadTxt : _t.textDownloadRtf,
|
(format === Asc.c_oAscFileType.TXT) ? _t.textDownloadTxt : _t.textDownloadRtf,
|
||||||
|
@ -35,16 +36,18 @@ class DownloadController extends Component {
|
||||||
onAdvancedOptions(Asc.c_oAscAdvancedOptionsID.TXT, api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format), _t, isDocReady);
|
onAdvancedOptions(Asc.c_oAscAdvancedOptionsID.TXT, api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format), _t, isDocReady);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format));
|
setTimeout(() => {
|
||||||
|
api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format));
|
||||||
|
}, 400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format));
|
setTimeout(() => {
|
||||||
|
api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format));
|
||||||
|
}, 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.closeModal();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,6 @@ const Settings = props => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const onviewclosed = () => {
|
|
||||||
if ( props.onclosed )
|
|
||||||
props.onclosed();
|
|
||||||
};
|
|
||||||
|
|
||||||
const closeModal = () => {
|
const closeModal = () => {
|
||||||
if (Device.phone) {
|
if (Device.phone) {
|
||||||
f7.sheet.close('.settings-popup');
|
f7.sheet.close('.settings-popup');
|
||||||
|
@ -46,15 +41,14 @@ const Settings = props => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const onPrint = () => {
|
const onPrint = () => {
|
||||||
|
closeModal();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Common.EditorApi.get().asc_Print();
|
Common.EditorApi.get().asc_Print();
|
||||||
}, 1);
|
}, 400);
|
||||||
closeModal();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const showHelp = () => {
|
const showHelp = () => {
|
||||||
let url = __HELP_URL__;
|
let url = __HELP_URL__;
|
||||||
// let url = 'https://helpcenter.onlyoffice.com';
|
|
||||||
|
|
||||||
if (url.charAt(url.length-1) !== '/') {
|
if (url.charAt(url.length-1) !== '/') {
|
||||||
url += '/';
|
url += '/';
|
||||||
|
@ -68,17 +62,21 @@ const Settings = props => {
|
||||||
}
|
}
|
||||||
|
|
||||||
closeModal();
|
closeModal();
|
||||||
window.open(url, "_blank");
|
setTimeout(() => {
|
||||||
|
window.open(url, "_blank");
|
||||||
|
}, 400);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onOrthographyCheck = () => {
|
const onOrthographyCheck = () => {
|
||||||
closeModal();
|
closeModal();
|
||||||
Common.EditorApi.get().asc_pluginRun("asc.{B631E142-E40B-4B4C-90B9-2D00222A286E}", 0);
|
setTimeout(() => {
|
||||||
|
Common.EditorApi.get().asc_pluginRun("asc.{B631E142-E40B-4B4C-90B9-2D00222A286E}", 0);
|
||||||
|
}, 400);
|
||||||
};
|
};
|
||||||
|
|
||||||
return <SettingsView usePopover={!Device.phone}
|
return <SettingsView usePopover={!Device.phone}
|
||||||
openOptions={props.openOptions}
|
openOptions={props.openOptions}
|
||||||
onclosed={onviewclosed}
|
onclosed={props.onclosed}
|
||||||
onReaderMode={onReaderMode}
|
onReaderMode={onReaderMode}
|
||||||
onPrint={onPrint}
|
onPrint={onPrint}
|
||||||
showHelp={showHelp}
|
showHelp={showHelp}
|
||||||
|
|
|
@ -129,7 +129,7 @@ class MainPage extends Component {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
!this.state.settingsVisible ? null :
|
!this.state.settingsVisible ? null :
|
||||||
<Settings openOptions={this.handleClickToOpenOptions} onclosed={this.handleOptionsViewClosed.bind(this, 'settings')} />
|
<Settings openOptions={this.handleClickToOpenOptions.bind(this)} onclosed={this.handleOptionsViewClosed.bind(this, 'settings')} />
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
!this.state.collaborationVisible ? null :
|
!this.state.collaborationVisible ? null :
|
||||||
|
|
|
@ -4,14 +4,15 @@ import { Device } from '../../../../common/mobile/utils/device';
|
||||||
import EditorUIController from '../lib/patch'
|
import EditorUIController from '../lib/patch'
|
||||||
|
|
||||||
const ToolbarView = props => {
|
const ToolbarView = props => {
|
||||||
const disableEditBtn = props.isObjectLocked || props.stateDisplayMode || props.disabledEditControls;
|
const isDisconnected = props.isDisconnected;
|
||||||
|
const disableEditBtn = props.isObjectLocked || props.stateDisplayMode || props.disabledEditControls || isDisconnected;
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<NavLeft>
|
<NavLeft>
|
||||||
{props.isShowBack && <Link className={`btn-doc-back${props.disabledControls && ' disabled'}`} icon='icon-back' onClick={props.onBack}></Link>}
|
{props.isShowBack && <Link className={`btn-doc-back${props.disabledControls && ' disabled'}`} icon='icon-back' onClick={props.onBack}></Link>}
|
||||||
{Device.ios && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
{Device.ios && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
||||||
disabledUndo: !props.isCanUndo,
|
disabledUndo: !props.isCanUndo || isDisconnected,
|
||||||
disabledRedo: !props.isCanRedo,
|
disabledRedo: !props.isCanRedo || isDisconnected,
|
||||||
onUndoClick: props.onUndo,
|
onUndoClick: props.onUndo,
|
||||||
onRedoClick: props.onRedo
|
onRedoClick: props.onRedo
|
||||||
})}
|
})}
|
||||||
|
|
|
@ -3,6 +3,7 @@ import { inject } from 'mobx-react';
|
||||||
import { f7 } from 'framework7-react';
|
import { f7 } from 'framework7-react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import Preview from "../view/Preview";
|
import Preview from "../view/Preview";
|
||||||
|
import ContextMenu from './ContextMenu';
|
||||||
|
|
||||||
const PreviewController = props => {
|
const PreviewController = props => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
@ -20,6 +21,7 @@ const PreviewController = props => {
|
||||||
api.DemonstrationEndShowMessage(_t.textFinalMessage);
|
api.DemonstrationEndShowMessage(_t.textFinalMessage);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ContextMenu.closeContextMenu();
|
||||||
show();
|
show();
|
||||||
onDocumentReady();
|
onDocumentReady();
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { inject } from 'mobx-react';
|
import { inject, observer } from 'mobx-react';
|
||||||
import { f7 } from 'framework7-react';
|
import { f7 } from 'framework7-react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ToolbarView from "../view/Toolbar";
|
import ToolbarView from "../view/Toolbar";
|
||||||
|
|
||||||
const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
const ToolbarController = inject('storeAppOptions', 'users')(observer(props => {
|
||||||
const {t} = useTranslation();
|
const {t} = useTranslation();
|
||||||
const _t = t("Toolbar", { returnObjects: true });
|
const _t = t("Toolbar", { returnObjects: true });
|
||||||
|
|
||||||
|
@ -20,9 +20,7 @@ const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
||||||
api.asc_registerCallback('asc_onCanUndo', onApiCanUndo);
|
api.asc_registerCallback('asc_onCanUndo', onApiCanUndo);
|
||||||
api.asc_registerCallback('asc_onCanRedo', onApiCanRedo);
|
api.asc_registerCallback('asc_onCanRedo', onApiCanRedo);
|
||||||
api.asc_registerCallback('asc_onFocusObject', onApiFocusObject);
|
api.asc_registerCallback('asc_onFocusObject', onApiFocusObject);
|
||||||
api.asc_registerCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
api.asc_registerCallback('asc_onCountPages', onApiCountPages);
|
api.asc_registerCallback('asc_onCountPages', onApiCountPages);
|
||||||
Common.Notifications.on('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.on('goback', goBack);
|
Common.Notifications.on('goback', goBack);
|
||||||
|
@ -35,10 +33,15 @@ const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
||||||
onDocumentReady();
|
onDocumentReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isDisconnected) {
|
||||||
|
f7.popover.close();
|
||||||
|
f7.sheet.close();
|
||||||
|
f7.popup.close();
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
Common.Notifications.off('document:ready', onDocumentReady);
|
Common.Notifications.off('document:ready', onDocumentReady);
|
||||||
Common.Notifications.off('setdoctitle', setDocTitle);
|
Common.Notifications.off('setdoctitle', setDocTitle);
|
||||||
Common.Notifications.off('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.off('goback', goBack);
|
Common.Notifications.off('goback', goBack);
|
||||||
|
@ -47,7 +50,6 @@ const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
||||||
api.asc_unregisterCallback('asc_onCanUndo', onApiCanUndo);
|
api.asc_unregisterCallback('asc_onCanUndo', onApiCanUndo);
|
||||||
api.asc_unregisterCallback('asc_onCanRedo', onApiCanRedo);
|
api.asc_unregisterCallback('asc_onCanRedo', onApiCanRedo);
|
||||||
api.asc_unregisterCallback('asc_onFocusObject', onApiFocusObject);
|
api.asc_unregisterCallback('asc_onFocusObject', onApiFocusObject);
|
||||||
api.asc_unregisterCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
api.asc_unregisterCallback('asc_onCountPages', onApiCountPages);
|
api.asc_unregisterCallback('asc_onCountPages', onApiCountPages);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -178,15 +180,6 @@ const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
||||||
setDisabledControls(false);
|
setDisabledControls(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onCoAuthoringDisconnect = (enableDownload) => {
|
|
||||||
deactivateEditControls(enableDownload);
|
|
||||||
setCanUndo(false);
|
|
||||||
setCanRedo(false);
|
|
||||||
f7.popover.close();
|
|
||||||
f7.sheet.close();
|
|
||||||
f7.popup.close();
|
|
||||||
};
|
|
||||||
|
|
||||||
const onEditDocument = () => {
|
const onEditDocument = () => {
|
||||||
Common.Gateway.requestEditRights();
|
Common.Gateway.requestEditRights();
|
||||||
};
|
};
|
||||||
|
@ -210,8 +203,9 @@ const ToolbarController = inject('storeAppOptions', 'users')(props => {
|
||||||
displayCollaboration={displayCollaboration}
|
displayCollaboration={displayCollaboration}
|
||||||
showEditDocument={showEditDocument}
|
showEditDocument={showEditDocument}
|
||||||
onEditDocument={onEditDocument}
|
onEditDocument={onEditDocument}
|
||||||
|
isDisconnected={isDisconnected}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
});
|
}));
|
||||||
|
|
||||||
export {ToolbarController as Toolbar};
|
export {ToolbarController as Toolbar};
|
|
@ -2,7 +2,7 @@ import React from 'react';
|
||||||
|
|
||||||
const Preview = () => {
|
const Preview = () => {
|
||||||
return (
|
return (
|
||||||
<div id="pe-preview" style={{position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', zIndex: 1000}}>
|
<div id="pe-preview" style={{position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', zIndex: 14000}}>
|
||||||
<div id="presentation-preview" style={{width: '100%', height: '100%'}}></div>
|
<div id="presentation-preview" style={{width: '100%', height: '100%'}}></div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,13 +4,14 @@ import { Device } from '../../../../common/mobile/utils/device';
|
||||||
import EditorUIController from '../lib/patch'
|
import EditorUIController from '../lib/patch'
|
||||||
|
|
||||||
const ToolbarView = props => {
|
const ToolbarView = props => {
|
||||||
|
const isDisconnected = props.isDisconnected;
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<NavLeft>
|
<NavLeft>
|
||||||
{props.isShowBack && <Link className={`btn-doc-back${props.disabledControls && ' disabled'}`} icon='icon-back' onClick={props.onBack}></Link>}
|
{props.isShowBack && <Link className={`btn-doc-back${props.disabledControls && ' disabled'}`} icon='icon-back' onClick={props.onBack}></Link>}
|
||||||
{Device.ios && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
{Device.ios && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
||||||
disabledUndo: !props.isCanUndo,
|
disabledUndo: !props.isCanUndo || isDisconnected,
|
||||||
disabledRedo: !props.isCanRedo,
|
disabledRedo: !props.isCanRedo || isDisconnected,
|
||||||
onUndoClick: props.onUndo,
|
onUndoClick: props.onUndo,
|
||||||
onRedoClick: props.onRedo
|
onRedoClick: props.onRedo
|
||||||
})}
|
})}
|
||||||
|
@ -18,8 +19,8 @@ const ToolbarView = props => {
|
||||||
{!Device.phone && <NavTitle>{props.docTitle}</NavTitle>}
|
{!Device.phone && <NavTitle>{props.docTitle}</NavTitle>}
|
||||||
<NavRight>
|
<NavRight>
|
||||||
{Device.android && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
{Device.android && props.isEdit && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({
|
||||||
disabledUndo: !props.isCanUndo,
|
disabledUndo: !props.isCanUndo || isDisconnected,
|
||||||
disabledRedo: !props.isCanRedo,
|
disabledRedo: !props.isCanRedo || isDisconnected,
|
||||||
onUndoClick: props.onUndo,
|
onUndoClick: props.onUndo,
|
||||||
onRedoClick: props.onRedo
|
onRedoClick: props.onRedo
|
||||||
})}
|
})}
|
||||||
|
@ -28,8 +29,8 @@ const ToolbarView = props => {
|
||||||
<Link className={props.disabledControls ? 'disabled' : ''} icon='icon-edit' href={false} onClick={props.onEditDocument}></Link>
|
<Link className={props.disabledControls ? 'disabled' : ''} icon='icon-edit' href={false} onClick={props.onEditDocument}></Link>
|
||||||
}
|
}
|
||||||
{props.isEdit && EditorUIController.getToolbarOptions && EditorUIController.getToolbarOptions({
|
{props.isEdit && EditorUIController.getToolbarOptions && EditorUIController.getToolbarOptions({
|
||||||
disabledAdd: props.disabledAdd || props.disabledControls,
|
disabledAdd: props.disabledAdd || props.disabledControls || isDisconnected,
|
||||||
disabledEdit: props.disabledEdit || props.disabledControls,
|
disabledEdit: props.disabledEdit || props.disabledControls || isDisconnected,
|
||||||
onEditClick: () => props.openOptions('edit'),
|
onEditClick: () => props.openOptions('edit'),
|
||||||
onAddClick: () => props.openOptions('add')
|
onAddClick: () => props.openOptions('add')
|
||||||
})}
|
})}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { inject } from 'mobx-react';
|
import { inject, observer } from 'mobx-react';
|
||||||
import { f7 } from 'framework7-react';
|
import { f7 } from 'framework7-react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ToolbarView from "../view/Toolbar";
|
import ToolbarView from "../view/Toolbar";
|
||||||
|
|
||||||
const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo')(props => {
|
const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo')(observer(props => {
|
||||||
const {t} = useTranslation();
|
const {t} = useTranslation();
|
||||||
const _t = t("Toolbar", { returnObjects: true });
|
const _t = t("Toolbar", { returnObjects: true });
|
||||||
|
|
||||||
|
@ -24,9 +24,7 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
|
||||||
api.asc_registerCallback('asc_onWorkbookLocked', onApiSelectionChanged);
|
api.asc_registerCallback('asc_onWorkbookLocked', onApiSelectionChanged);
|
||||||
api.asc_registerCallback('asc_onWorksheetLocked', onApiSelectionChanged);
|
api.asc_registerCallback('asc_onWorksheetLocked', onApiSelectionChanged);
|
||||||
api.asc_registerCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
|
api.asc_registerCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
|
||||||
api.asc_registerCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
|
|
||||||
Common.Notifications.on('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
Common.Notifications.on('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.on('goback', goBack);
|
Common.Notifications.on('goback', goBack);
|
||||||
|
@ -39,9 +37,14 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
|
||||||
onDocumentReady();
|
onDocumentReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isDisconnected) {
|
||||||
|
f7.popover.close();
|
||||||
|
f7.sheet.close();
|
||||||
|
f7.popup.close();
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
Common.Notifications.off('document:ready', onDocumentReady);
|
Common.Notifications.off('document:ready', onDocumentReady);
|
||||||
Common.Notifications.off('api:disconnect', onCoAuthoringDisconnect);
|
|
||||||
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
Common.Notifications.off('toolbar:activatecontrols', activateControls);
|
||||||
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);
|
||||||
Common.Notifications.off('goback', goBack);
|
Common.Notifications.off('goback', goBack);
|
||||||
|
@ -54,7 +57,6 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
|
||||||
api.asc_unregisterCallback('asc_onWorkbookLocked', onApiSelectionChanged);
|
api.asc_unregisterCallback('asc_onWorkbookLocked', onApiSelectionChanged);
|
||||||
api.asc_unregisterCallback('asc_onWorksheetLocked', onApiSelectionChanged);
|
api.asc_unregisterCallback('asc_onWorksheetLocked', onApiSelectionChanged);
|
||||||
api.asc_unregisterCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
|
api.asc_unregisterCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
|
||||||
api.asc_unregisterCallback('asc_onCoAuthoringDisconnect', onCoAuthoringDisconnect);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -179,15 +181,6 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
|
||||||
setDisabledControls(false);
|
setDisabledControls(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onCoAuthoringDisconnect = (enableDownload) => {
|
|
||||||
deactivateEditControls(enableDownload);
|
|
||||||
setCanUndo(false);
|
|
||||||
setCanRedo(false);
|
|
||||||
f7.popover.close();
|
|
||||||
f7.sheet.close();
|
|
||||||
f7.popup.close();
|
|
||||||
};
|
|
||||||
|
|
||||||
const onEditDocument = () => {
|
const onEditDocument = () => {
|
||||||
Common.Gateway.requestEditRights();
|
Common.Gateway.requestEditRights();
|
||||||
};
|
};
|
||||||
|
@ -208,8 +201,9 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
|
||||||
displayCollaboration={displayCollaboration}
|
displayCollaboration={displayCollaboration}
|
||||||
showEditDocument={showEditDocument}
|
showEditDocument={showEditDocument}
|
||||||
onEditDocument={onEditDocument}
|
onEditDocument={onEditDocument}
|
||||||
|
isDisconnected={isDisconnected}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
});
|
}));
|
||||||
|
|
||||||
export {ToolbarController as Toolbar};
|
export {ToolbarController as Toolbar};
|
|
@ -1,21 +1,20 @@
|
||||||
import {action, computed, makeObservable} from 'mobx';
|
import {action, observable, makeObservable} from 'mobx';
|
||||||
|
|
||||||
export class storeFunctions {
|
export class storeFunctions {
|
||||||
constructor() {
|
constructor() {
|
||||||
makeObservable(this, {
|
makeObservable(this, {
|
||||||
initFunctions: action,
|
initFunctions: action,
|
||||||
functions: computed
|
functions: observable
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
functions = {};
|
||||||
|
|
||||||
initFunctions (groups, data) {
|
initFunctions (groups, data) {
|
||||||
this.groups = groups;
|
this.functions = this.getFunctions(groups, data);
|
||||||
this.data = data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get functions () {
|
getFunctions (groups, data) {
|
||||||
const groups = this.groups;
|
|
||||||
const data = this.data;
|
|
||||||
const functions = {};
|
const functions = {};
|
||||||
for (let g in groups) {
|
for (let g in groups) {
|
||||||
const group = groups[g];
|
const group = groups[g];
|
||||||
|
|
|
@ -4,9 +4,10 @@ import { Device } from '../../../../common/mobile/utils/device';
|
||||||
import EditorUIController from '../lib/patch'
|
import EditorUIController from '../lib/patch'
|
||||||
|
|
||||||
const ToolbarView = props => {
|
const ToolbarView = props => {
|
||||||
|
const isDisconnected = props.isDisconnected;
|
||||||
const undo_box = props.isEdit && EditorUIController.toolbarOptions ? EditorUIController.toolbarOptions.getUndoRedo({
|
const undo_box = props.isEdit && EditorUIController.toolbarOptions ? EditorUIController.toolbarOptions.getUndoRedo({
|
||||||
disabledUndo: !props.isCanUndo,
|
disabledUndo: !props.isCanUndo || isDisconnected,
|
||||||
disabledRedo: !props.isCanRedo,
|
disabledRedo: !props.isCanRedo || isDisconnected,
|
||||||
onUndoClick: props.onUndo,
|
onUndoClick: props.onUndo,
|
||||||
onRedoClick: props.onRedo
|
onRedoClick: props.onRedo
|
||||||
}) : null;
|
}) : null;
|
||||||
|
@ -23,7 +24,7 @@ const ToolbarView = props => {
|
||||||
<Link className={props.disabledControls ? 'disabled' : ''} icon='icon-edit' href={false} onClick={props.onEditDocument}></Link>
|
<Link className={props.disabledControls ? 'disabled' : ''} icon='icon-edit' href={false} onClick={props.onEditDocument}></Link>
|
||||||
}
|
}
|
||||||
{props.isEdit && EditorUIController.toolbarOptions && EditorUIController.toolbarOptions.getEditOptions({
|
{props.isEdit && EditorUIController.toolbarOptions && EditorUIController.toolbarOptions.getEditOptions({
|
||||||
disabled: props.disabledEditControls || props.disabledControls,
|
disabled: props.disabledEditControls || props.disabledControls || isDisconnected,
|
||||||
onEditClick: () => props.openOptions('edit'),
|
onEditClick: () => props.openOptions('edit'),
|
||||||
onAddClick: () => props.openOptions('add')
|
onAddClick: () => props.openOptions('add')
|
||||||
})}
|
})}
|
||||||
|
|
Loading…
Reference in a new issue