more work on confirming topic subscriptions, update permissions without subscribing

This commit is contained in:
or-else
2019-02-21 22:05:40 +03:00
parent 22b277a4ad
commit fd32413ba1
9 changed files with 60 additions and 26 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "tinode-webapp", "name": "tinode-webapp",
"description": "Tinode messenger for the web", "description": "Tinode messenger for the web",
"version": "0.15.13-rc2", "version": "0.15.13-rc3",
"devDependencies": { "devDependencies": {
"@babel/core": "^7.2.2", "@babel/core": "^7.2.2",
"@babel/preset-env": "^7.3.1", "@babel/preset-env": "^7.3.1",
+1 -1
View File
@@ -1,3 +1,3 @@
// This is a generated file. Don't edit. // This is a generated file. Don't edit.
export const PACKAGE_VERSION = "0.15.13-rc2"; export const PACKAGE_VERSION = "0.15.13-rc3";
+29 -9
View File
@@ -36,10 +36,18 @@ const messages = defineMessages({
} }
}); });
// Checks if the access permissions are granted but not yet accepted.
function isUnconfirmed(acs) {
const ex = acs ? acs.getExcessive() || '' : '';
return (ex.includes('R') || ex.includes('W'));
}
class MessagesView extends React.Component { class MessagesView extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
console.log(props.acs);
this.state = { this.state = {
messages: [], messages: [],
onlineSubs: [], onlineSubs: [],
@@ -49,6 +57,7 @@ class MessagesView extends React.Component {
scrollPosition: 0, scrollPosition: 0,
readOnly: props.acs ? !props.acs.isWriter() : true, readOnly: props.acs ? !props.acs.isWriter() : true,
writeOnly: props.acs ? !props.acs.isReader() : true, writeOnly: props.acs ? !props.acs.isReader() : true,
unconfirmed: isUnconfirmed(props.acs),
typingIndicator: false, typingIndicator: false,
imagePreview: null imagePreview: null
}; };
@@ -169,9 +178,11 @@ class MessagesView extends React.Component {
this.props.readTimerHandler(null); this.props.readTimerHandler(null);
} }
console.log("propsChange", props.acs);
this.setState({ this.setState({
readOnly: props.acs ? !props.acs.isWriter() : true, readOnly: props.acs ? !props.acs.isWriter() : true,
writeOnly: props.acs ? !props.acs.isReader() : true writeOnly: props.acs ? !props.acs.isReader() : true,
unconfirmed: isUnconfirmed(props.acs)
}); });
if (!topic.isSubscribed() && tryToResubscribe) { if (!topic.isSubscribed() && tryToResubscribe) {
@@ -199,11 +210,14 @@ class MessagesView extends React.Component {
.catch((err) => { .catch((err) => {
props.onError(err.message, 'err'); props.onError(err.message, 'err');
const {formatMessage} = props.intl; const {formatMessage} = props.intl;
console.log("subscribe failed", props.acs);
this.setState({ this.setState({
title: formatMessage(messages.not_found), title: formatMessage(messages.not_found),
avatar: null, avatar: null,
readOnly: true, readOnly: true,
writeOnly: true, writeOnly: true,
unconfirmed: false,
fetchingMessages: false, fetchingMessages: false,
messages: [], messages: [],
onlineSubs: [], onlineSubs: [],
@@ -276,10 +290,13 @@ class MessagesView extends React.Component {
avatar: null avatar: null
}); });
} }
console.log("handleDescChange", desc.acs);
if (desc.acs) { if (desc.acs) {
this.setState({ this.setState({
readOnly: !desc.acs.isWriter(), readOnly: !desc.acs.isWriter(),
writeOnly: !desc.acs.isReader() writeOnly: !desc.acs.isReader(),
unconfirmed: isUnconfirmed(desc.acs),
}); });
} }
} }
@@ -551,13 +568,16 @@ class MessagesView extends React.Component {
null null
} }
</div> </div>
<SendMessage {this.state.unconfirmed ?
tinode={this.props.tinode} <Invitation onAction={this.handleNewChatAcceptance} />
topic={this.props.topic} :
disabled={this.state.readOnly} <SendMessage
sendMessage={this.props.sendMessage} tinode={this.props.tinode}
onError={this.props.onError} /> topic={this.props.topic}
<Invitation onAction={this.handleNewChatAcceptance} /> disabled={this.state.readOnly}
sendMessage={this.props.sendMessage}
onError={this.props.onError} />
}
{this.state.imagePreview ? {this.state.imagePreview ?
<ImagePreview content={this.state.imagePreview} <ImagePreview content={this.state.imagePreview}
onClose={this.handleCloseImagePreview} /> : null} onClose={this.handleCloseImagePreview} /> : null}
+3 -3
View File
@@ -1037,9 +1037,9 @@ class TinodeWeb extends React.Component {
subscribed ? {title: formatMessage({id: 'menu_item_info'}), handler: this.handleShowInfoView} : null, subscribed ? {title: formatMessage({id: 'menu_item_info'}), handler: this.handleShowInfoView} : null,
subscribed ? 'messages_clear' : null, subscribed ? 'messages_clear' : null,
subscribed && deleter ? 'messages_clear_hard' : null, subscribed && deleter ? 'messages_clear_hard' : null,
subscribed ? (muted ? 'topic_unmute' : 'topic_mute') : null, muted ? 'topic_unmute' : 'topic_mute',
subscribed ? (blocked ? 'topic_unblock' : 'topic_block') : null, blocked ? 'topic_unblock' : 'topic_block',
subscribed && !archived ? 'topic_archive' : null, !archived ? 'topic_archive' : null,
'topic_delete' 'topic_delete'
]; ];
} }
+22 -8
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = {
module: { module: {
rules: [ rules: [
{ {
test: /src\/.*\.jsx?$/, test: /src\/.*\.(js|jsx)?$/,
loaders: [ loaders: [
'babel-loader', 'babel-loader',
], ],