Merge branch 'next' into next-reply

This commit is contained in:
Gene
2021-08-15 11:13:44 -07:00
committed by GitHub
6 changed files with 87 additions and 109 deletions
+44 -44
View File
@@ -396,14 +396,19 @@ class InfoView extends React.Component {
return; return;
} }
const isMe = this.props.tinode.isMe(params.topicName);
const menuItems = [ const menuItems = [
{title: formatMessage(messages.edit_permissions), handler: () => { {title: formatMessage(messages.edit_permissions), handler: () => {
this.handleLaunchPermissionsEditor('user', params.topicName); this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName);
}}, }}
'member_delete',
user.acs.isMuted() ? 'member_unmute' : 'member_mute',
user.acs.isJoiner() ? 'member_block' : 'member_unblock'
]; ];
if (!isMe) {
menuItems.push('member_delete');
}
menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');
if (!isMe) {
menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock');
}
this.props.showContextMenu({ this.props.showContextMenu({
topicName: this.props.topic, topicName: this.props.topic,
x: params.x, x: params.x,
@@ -413,7 +418,6 @@ class InfoView extends React.Component {
render() { render() {
const args = (this.props.panel || 'info').split('/'); const args = (this.props.panel || 'info').split('/');
console.log("args:", args);
const view = args[0]; const view = args[0];
args.shift(); args.shift();
@@ -533,17 +537,15 @@ class InfoView extends React.Component {
</div> : null} </div> : null}
</div> </div>
<div className="hr" /> <div className="hr" />
<div className="panel-form-column"> <div className="panel-form-row">
<div className="panel-form-row"> <label>
<label> <FormattedMessage id="label_muting_topic" defaultMessage="Muted:"
<FormattedMessage id="label_muting_topic" defaultMessage="Muted:" description="Label for Muting/unmuting the topic" />
description="Label for Muting/unmuting the topic" /> </label>
</label> <CheckBox name="P" checked={this.state.muted} onChange={this.handleMuted} />
<CheckBox name="P" checked={this.state.muted} onChange={this.handleMuted} />
</div>
</div> </div>
<div className="hr" /> <div className="hr" />
<div className="panel-form-column"> <div className="panel-form-row">
<a href="#" className="flat-button" onClick={(e) => {e.preventDefault(); this.props.onNavigate('security');}}> <a href="#" className="flat-button" onClick={(e) => {e.preventDefault(); this.props.onNavigate('security');}}>
<i className="material-icons">security</i>&nbsp;<FormattedMessage id="button_security" <i className="material-icons">security</i>&nbsp;<FormattedMessage id="button_security"
defaultMessage="Security" description="Navigaton button for security panel." /> defaultMessage="Security" description="Navigaton button for security panel." />
@@ -552,36 +554,34 @@ class InfoView extends React.Component {
{this.state.groupTopic && this.state.sharer ? {this.state.groupTopic && this.state.sharer ?
<> <>
<div className="hr" /> <div className="hr" />
<div className="panel-form-column"> <div className="panel-form-row">
<div className="panel-form-row"> <label className="small">
<label className="small"> <FormattedMessage id="label_group_members" defaultMessage="Group members:"
<FormattedMessage id="label_group_members" defaultMessage="Group members:" description="Section title or label" />
description="Section title or label" /> </label>
</label>
</div>
<div className="panel-form-row">
<a href="#" className="flat-button" onClick={this.handleShowAddMembers}>
<i className="material-icons">person_add</i> &nbsp;<FormattedMessage id="button_add_members"
defaultMessage="Add members" description="Flat button [Add members] (to topic)" />
</a>
</div>
<FormattedMessage id="group_has_no_members" defaultMessage="No members"
description="Shown in place of group members">{
(no_members) => <ContactList
tinode={this.props.tinode}
contacts={this.state.contactList}
myUserId={this.props.myUserId}
emptyListMessage={no_members}
topicSelected={this.state.selectedContact}
showOnline={false}
showUnread={false}
showMode={true}
noScroll={true}
onTopicSelected={this.handleMemberSelected}
showContextMenu={this.state.admin ? this.handleContextMenu : false}
/>
}</FormattedMessage>
</div> </div>
<div className="panel-form-row">
<a href="#" className="flat-button" onClick={this.handleShowAddMembers}>
<i className="material-icons">person_add</i> &nbsp;<FormattedMessage id="button_add_members"
defaultMessage="Add members" description="Flat button [Add members] (to topic)" />
</a>
</div>
<FormattedMessage id="group_has_no_members" defaultMessage="No members"
description="Shown in place of group members">{
(no_members) => <ContactList
tinode={this.props.tinode}
contacts={this.state.contactList}
myUserId={this.props.myUserId}
emptyListMessage={no_members}
topicSelected={this.state.selectedContact}
showOnline={false}
showUnread={false}
showMode={true}
noScroll={true}
onTopicSelected={this.handleMemberSelected}
showContextMenu={this.state.admin ? this.handleContextMenu : false}
/>
}</FormattedMessage>
</> </>
: :
null null
+5 -2
View File
@@ -565,8 +565,9 @@ class TinodeWeb extends React.Component {
cred = Tinode.credential(cred); cred = Tinode.credential(cred);
// Try to login with login/password. If they are not available, try token. If no token, ask for login/password. // Try to login with login/password. If they are not available, try token. If no token, ask for login/password.
let promise = null; let promise = null;
const token = this.tinode.getAuthToken(); let token = this.tinode.getAuthToken();
if (login && password) { if (login && password) {
token = null;
this.setState({password: null}); this.setState({password: null});
promise = this.tinode.loginBasic(login, password, cred); promise = this.tinode.loginBasic(login, password, cred);
} else if (token) { } else if (token) {
@@ -594,7 +595,9 @@ class TinodeWeb extends React.Component {
autoLogin: false autoLogin: false
}); });
this.handleError(err.message, 'err'); this.handleError(err.message, 'err');
localStorage.removeItem('auth-token'); if (token) {
this.handleLogout();
}
HashNavigation.navigateTo(''); HashNavigation.navigateTo('');
}); });
} else { } else {
+24 -12
View File
@@ -2227,12 +2227,24 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
return; return;
} }
const isMe = this.props.tinode.isMe(params.topicName);
const menuItems = [{ const menuItems = [{
title: formatMessage(messages.edit_permissions), title: formatMessage(messages.edit_permissions),
handler: () => { handler: () => {
this.handleLaunchPermissionsEditor('user', params.topicName); this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName);
} }
}, 'member_delete', user.acs.isMuted() ? 'member_unmute' : 'member_mute', user.acs.isJoiner() ? 'member_block' : 'member_unblock']; }];
if (!isMe) {
menuItems.push('member_delete');
}
menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');
if (!isMe) {
menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock');
}
this.props.showContextMenu({ this.props.showContextMenu({
topicName: this.props.topic, topicName: this.props.topic,
x: params.x, x: params.x,
@@ -2243,7 +2255,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
render() { render() {
const args = (this.props.panel || 'info').split('/'); const args = (this.props.panel || 'info').split('/');
console.log("args:", args);
const view = args[0]; const view = args[0];
args.shift(); args.shift();
const { const {
@@ -2386,8 +2397,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
})), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, this.state.description)) : null), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { })), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, this.state.description)) : null), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "hr" className: "hr"
}), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "panel-form-column"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "panel-form-row" className: "panel-form-row"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "label_muting_topic", id: "label_muting_topic",
@@ -2399,10 +2408,10 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
name: "P", name: "P",
checked: this.state.muted, checked: this.state.muted,
onChange: this.handleMuted onChange: this.handleMuted
}))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { })), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "hr" className: "hr"
}), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "panel-form-column" className: "panel-form-row"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
href: "#", href: "#",
className: "flat-button", className: "flat-button",
@@ -2421,8 +2430,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
}))), this.state.groupTopic && this.state.sharer ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { }))), this.state.groupTopic && this.state.sharer ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "hr" className: "hr"
}), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "panel-form-column"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "panel-form-row" className: "panel-form-row"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", { }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
className: "small" className: "small"
@@ -2464,7 +2471,7 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
noScroll: true, noScroll: true,
onTopicSelected: this.handleMemberSelected, onTopicSelected: this.handleMemberSelected,
showContextMenu: this.state.admin ? this.handleContextMenu : false showContextMenu: this.state.admin ? this.handleContextMenu : false
})))) : null)); }))) : null));
} }
} }
@@ -5421,9 +5428,10 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
cred = tinode_sdk__WEBPACK_IMPORTED_MODULE_4___default().credential(cred); cred = tinode_sdk__WEBPACK_IMPORTED_MODULE_4___default().credential(cred);
let promise = null; let promise = null;
const token = this.tinode.getAuthToken(); let token = this.tinode.getAuthToken();
if (login && password) { if (login && password) {
token = null;
this.setState({ this.setState({
password: null password: null
}); });
@@ -5456,7 +5464,11 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
autoLogin: false autoLogin: false
}); });
this.handleError(err.message, 'err'); this.handleError(err.message, 'err');
localStorage.removeItem('auth-token');
if (token) {
this.handleLogout();
}
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_15__.default.navigateTo(''); _lib_navigation_js__WEBPACK_IMPORTED_MODULE_15__.default.navigateTo('');
}); });
} else { } else {
+12 -49
View File
File diff suppressed because one or more lines are too long