-
-
Notifications
You must be signed in to change notification settings - Fork 829
/
KatexRenderingSettings.js
108 lines (94 loc) · 4.05 KB
/
KatexRenderingSettings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Travis Ralston
Copyright 2018-2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const React = require('react');
import PropTypes from 'prop-types';
const sdk = require("../../../index");
import { _t, _td } from '../../../languageHandler';
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
import dis from "../../../dispatcher";
import MatrixClientPeg from "../../../MatrixClientPeg";
module.exports = React.createClass({
displayName: 'KatexRenderingSettings',
propTypes: {
room: PropTypes.object,
},
_onClickUserSettings: (e) => {
e.preventDefault();
e.stopPropagation();
dis.dispatch({action: 'view_user_settings'});
},
render: function() {
const SettingsFlag = sdk.getComponent("elements.SettingsFlag");
const roomId = this.props.room.roomId;
const isEncrypted = MatrixClientPeg.get().isRoomEncrypted(roomId);
let katexForRoomAccount = null;
let katexForAccount = null;
let katexForRoom = null;
if (!isEncrypted) {
// Only show account setting state and room state setting state in non-e2ee rooms where they apply
const accountEnabled = SettingsStore.getValueAt(SettingLevel.ACCOUNT, "katexRendering");
if (accountEnabled) {
katexForAccount = (
_t("You have <a>enabled</a> KaTeX rendering by default.", {}, {
'a': (sub)=><a onClick={this._onClickUserSettings} href=''>{ sub }</a>,
})
);
} else if (!accountEnabled) {
katexForAccount = (
_t("You have <a>disabled</a> KaTeX rendering by default.", {}, {
'a': (sub)=><a onClick={this._onClickUserSettings} href=''>{ sub }</a>,
})
);
}
if (SettingsStore.canSetValue("katexRendering", roomId, "room")) {
katexForRoom = (
<label>
<SettingsFlag name="katexRendering"
level={SettingLevel.ROOM}
roomId={roomId}
isExplicit={true} />
</label>
);
} else {
let str = _td("KaTeX rendering is enabled by default for participants in this room.");
if (!SettingsStore.getValueAt(SettingLevel.ROOM, "katexRendering", roomId, /*explicit=*/true)) {
str = _td("KaTeX rendering is disabled by default for participants in this room.");
}
katexForRoom = (<label>{ _t(str) }</label>);
}
} else {
katexForAccount = (
_t("In encrypted rooms, like this one, KaTeX rendering is disabled by default.")
);
}
katexForRoomAccount = (
<SettingsFlag name={'katexRendering'}
level={SettingLevel.ROOM_ACCOUNT}
roomId={roomId} />
);
return (
<div>
<div className='mx_SettingsTab_subsectionText'>
{ _t('When someone types mathematics using \$ signs, KaTeX can render the contents.') }
</div>
<div className='mx_SettingsTab_subsectionText'>
{ katexForAccount }
</div>
{ katexForRoom }
<label>{ katexForRoomAccount }</label>
</div>
);
},
});