2020-09-29 18:59:57 +00:00
|
|
|
import React, { Component } from 'react'
|
|
|
|
import {observer, inject} from "mobx-react"
|
2021-03-19 16:11:57 +00:00
|
|
|
import { LocalStorage } from '../../../utils/LocalStorage';
|
2020-08-31 17:31:05 +00:00
|
|
|
|
2020-09-29 18:59:57 +00:00
|
|
|
class CollaborationController extends Component {
|
|
|
|
constructor(props){
|
2021-02-11 23:34:01 +00:00
|
|
|
super(props);
|
2020-09-29 18:59:57 +00:00
|
|
|
|
2021-02-18 15:40:54 +00:00
|
|
|
Common.Notifications.on('configOptionsFill', () => {
|
|
|
|
const api = Common.EditorApi.get();
|
2020-09-29 18:59:57 +00:00
|
|
|
// this.api = api;
|
|
|
|
api.asc_registerCallback('asc_onAuthParticipantsChanged', this.onChangeEditUsers.bind(this));
|
|
|
|
api.asc_registerCallback('asc_onParticipantsChanged', this.onChangeEditUsers.bind(this));
|
2021-02-25 16:26:42 +00:00
|
|
|
api.asc_registerCallback('asc_onConnectionStateChanged', this.onUserConnection.bind(this));
|
2020-09-29 18:59:57 +00:00
|
|
|
});
|
2021-03-19 16:11:57 +00:00
|
|
|
|
|
|
|
Common.Notifications.on('document:ready', this.onDocumentReady.bind(this));
|
|
|
|
}
|
|
|
|
|
|
|
|
onDocumentReady() {
|
|
|
|
const api = Common.EditorApi.get();
|
|
|
|
const appOptions = this.props.storeAppOptions;
|
|
|
|
/** coauthoring begin **/
|
|
|
|
let isFastCoauth;
|
|
|
|
if (appOptions.isEdit && appOptions.canLicense && !appOptions.isOffline && appOptions.canCoAuthoring) {
|
|
|
|
// Force ON fast co-authoring mode
|
|
|
|
isFastCoauth = true;
|
|
|
|
api.asc_SetFastCollaborative(isFastCoauth);
|
|
|
|
|
|
|
|
if (window.editorType === 'de') {
|
|
|
|
const value = LocalStorage.getItem((isFastCoauth) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict");
|
|
|
|
if (value !== null) {
|
|
|
|
api.SetCollaborativeMarksShowType(
|
|
|
|
value === 'all' ? Asc.c_oAscCollaborativeMarksShowType.All :
|
|
|
|
value === 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);
|
|
|
|
} else {
|
|
|
|
api.SetCollaborativeMarksShowType(isFastCoauth ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (!appOptions.isEdit && appOptions.isRestrictedEdit) {
|
|
|
|
isFastCoauth = true;
|
|
|
|
api.asc_SetFastCollaborative(isFastCoauth);
|
|
|
|
window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);
|
|
|
|
api.asc_setAutoSaveGap(1);
|
|
|
|
} else {
|
|
|
|
isFastCoauth = false;
|
|
|
|
api.asc_SetFastCollaborative(isFastCoauth);
|
|
|
|
window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (appOptions.isEdit) {
|
|
|
|
let value;
|
|
|
|
if (window.editorType === 'sse') {
|
|
|
|
value = appOptions.canAutosave ? 1 : 0; // FORCE AUTOSAVE
|
|
|
|
} else {
|
|
|
|
value = isFastCoauth; // Common.localStorage.getItem("de-settings-autosave");
|
|
|
|
value = (!isFastCoauth && value !== null) ? parseInt(value) : (appOptions.canCoAuthoring ? 1 : 0);
|
|
|
|
}
|
|
|
|
api.asc_setAutoSaveGap(value);
|
|
|
|
}
|
|
|
|
/** coauthoring end **/
|
2020-09-29 18:59:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
onChangeEditUsers(users) {
|
|
|
|
const storeUsers = this.props.users;
|
|
|
|
storeUsers.reset(users);
|
2021-02-18 15:40:54 +00:00
|
|
|
storeUsers.setCurrentUser(this.props.storeAppOptions.user.id);
|
2021-02-25 16:26:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
onUserConnection(change) {
|
|
|
|
this.props.users.connection(change);
|
|
|
|
}
|
2020-09-01 08:42:25 +00:00
|
|
|
|
2020-09-29 18:59:57 +00:00
|
|
|
render() {
|
|
|
|
return null
|
2020-08-31 17:31:05 +00:00
|
|
|
}
|
2021-02-11 23:34:01 +00:00
|
|
|
}
|
2020-08-31 17:31:05 +00:00
|
|
|
|
2021-02-18 15:40:54 +00:00
|
|
|
export default inject('users', 'storeAppOptions')(observer(CollaborationController));
|