From f776cf68d68220e812d2f7c44c1dc49654d98e0b Mon Sep 17 00:00:00 2001 From: Aditya Bhardwaj Date: Sat, 23 Mar 2019 03:06:11 +0530 Subject: [PATCH] [IMPROVE] Join channels by sending a message or join button (#13752) --- .../views/creationDialog/CreateDiscussion.js | 1 + .../hooks/propagateDiscussionMetadata.js | 1 + app/discussion/server/index.js | 1 - app/lib/lib/roomTypes/private.js | 5 --- app/ui-message/client/messageBox.html | 30 +++++++++------- app/ui-message/client/messageBox.js | 21 +++++++++-- .../client/messageBoxNotSubscribed.html | 9 +++-- .../client/messageBoxNotSubscribed.js | 36 +++++++++---------- app/ui/client/lib/chatMessages.js | 9 +++-- server/startup/migrations/v139.js | 1 + 10 files changed, 68 insertions(+), 46 deletions(-) diff --git a/app/discussion/client/views/creationDialog/CreateDiscussion.js b/app/discussion/client/views/creationDialog/CreateDiscussion.js index 7b61774ac69..48c18676f0b 100755 --- a/app/discussion/client/views/creationDialog/CreateDiscussion.js +++ b/app/discussion/client/views/creationDialog/CreateDiscussion.js @@ -1,4 +1,5 @@ import { Meteor } from 'meteor/meteor'; + import { Template } from 'meteor/templating'; import { ReactiveVar } from 'meteor/reactive-var'; import { AutoComplete } from 'meteor/mizzao:autocomplete'; diff --git a/app/discussion/server/hooks/propagateDiscussionMetadata.js b/app/discussion/server/hooks/propagateDiscussionMetadata.js index 68e0a3d96b0..9724de1cd1d 100644 --- a/app/discussion/server/hooks/propagateDiscussionMetadata.js +++ b/app/discussion/server/hooks/propagateDiscussionMetadata.js @@ -1,6 +1,7 @@ import { callbacks } from '../../../callbacks/server'; import { Messages, Rooms } from '../../../models/server'; import { deleteRoom } from '../../../lib/server'; + /** * We need to propagate the writing of new message in a discussion to the linking * system message diff --git a/app/discussion/server/index.js b/app/discussion/server/index.js index f16ff5ab6f0..5e8fadefa94 100644 --- a/app/discussion/server/index.js +++ b/app/discussion/server/index.js @@ -2,7 +2,6 @@ import './config'; import './authorization'; import './permissions'; -import './hooks/joinDiscussionOnMessage'; import './hooks/propagateDiscussionMetadata'; import './publications/discussionParentAutocomplete'; import './publications/discussionsOfRoom'; diff --git a/app/lib/lib/roomTypes/private.js b/app/lib/lib/roomTypes/private.js index 19ce495b76a..98e775423f1 100644 --- a/app/lib/lib/roomTypes/private.js +++ b/app/lib/lib/roomTypes/private.js @@ -70,11 +70,6 @@ export class PrivateRoomType extends RoomTypeConfig { } canSendMessage(roomId) { - const room = ChatRoom.findOne({ _id: roomId, t: 'p' }, { fields: { prid: 1 } }); - if (room.prid) { - return true; - } - // TODO: remove duplicated code return ChatSubscription.find({ rid: roomId, diff --git a/app/ui-message/client/messageBox.html b/app/ui-message/client/messageBox.html index 84cdef104f3..761c72ca513 100644 --- a/app/ui-message/client/messageBox.html +++ b/app/ui-message/client/messageBox.html @@ -1,6 +1,6 @@ diff --git a/app/ui-message/client/messageBox.js b/app/ui-message/client/messageBox.js index 805a6d8add1..ebb590cdedd 100644 --- a/app/ui-message/client/messageBox.js +++ b/app/ui-message/client/messageBox.js @@ -15,9 +15,10 @@ import { fileUpload, KonchatNotification, } from '../../ui'; -import { Layout, messageBox, popover, RoomManager } from '../../ui-utils'; +import { Layout, messageBox, popover, RoomManager, call } from '../../ui-utils'; import { t, roomTypes, getUserPreference } from '../../utils'; import moment from 'moment'; + import './messageBoxReplyPreview'; import './messageBoxTyping'; import './messageBoxAudioMessage'; @@ -253,6 +254,12 @@ Template.messageBox.helpers({ return Object.values(actionGroups) .reduce((actions, actionGroup) => [...actions, ...actionGroup], []); }, + isAnonymousOrJoinCode() { + const room = Session.get(`roomData${ this._id }`); + return !Meteor.userId() || (!ChatSubscription.findOne({ + rid: this._id, + }) && room && room.joinCodeRequired); + }, showFormattingTips() { return settings.get('Message_ShowFormattingTips'); }, @@ -278,6 +285,16 @@ Template.messageBox.helpers({ }); Template.messageBox.events({ + 'click .js-join'(event) { + event.stopPropagation(); + event.preventDefault(); + + const joinCodeInput = Template.instance().find('[name=joinCode]'); + const joinCode = joinCodeInput && joinCodeInput.value; + + call('joinRoom', this._id, joinCode); + }, + 'click .emoji-picker-icon'(event) { event.stopPropagation(); event.preventDefault(); @@ -373,7 +390,7 @@ Template.messageBox.events({ chatMessages[this._id].valueChanged(this._id, event, Template.instance()); } }, - 'click .js-send'(event, instance) { + async 'click .js-send'(event, instance) { const { input } = chatMessages[RoomManager.openedRoom]; chatMessages[this._id].send(this._id, input, () => { input.updateAutogrow(); diff --git a/app/ui-message/client/messageBoxNotSubscribed.html b/app/ui-message/client/messageBoxNotSubscribed.html index 05da494859b..feccd6e089b 100644 --- a/app/ui-message/client/messageBoxNotSubscribed.html +++ b/app/ui-message/client/messageBoxNotSubscribed.html @@ -1,15 +1,14 @@ -