Merge pull request #19335 from gustavotrott/fix-reaction-expire-in-graphql

fix: Graphql with hard-coded reaction expire time
This commit is contained in:
Gustavo Trott 2023-12-13 18:13:47 -03:00 committed by GitHub
commit 0942a91d20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 7 deletions

View File

@ -1,5 +1,6 @@
package org.bigbluebutton.core.apps.users
import org.bigbluebutton.ClientSettings.getConfigPropertyValueByPath
import org.bigbluebutton.common2.msgs._
import org.bigbluebutton.core.apps.RightsManagementTrait
import org.bigbluebutton.core.models.{ UserState, Users2x }
@ -29,9 +30,17 @@ trait ChangeUserReactionEmojiReqMsgHdlr extends RightsManagementTrait {
outGW.send(msgEventChange)
}
//Get durationInSeconds from Client config
val userReactionExpire =
getConfigPropertyValueByPath(liveMeeting.clientSettings, "public.userReaction.expire") match {
case Some(durationInSeconds: Int) => durationInSeconds
case _ =>
log.debug("Config `public.userReaction.expire` not found.")
30
}
for {
user <- Users2x.findWithIntId(liveMeeting.users2x, msg.body.userId)
newUserState <- Users2x.setReactionEmoji(liveMeeting.users2x, user.intId, msg.body.reactionEmoji)
newUserState <- Users2x.setReactionEmoji(liveMeeting.users2x, user.intId, msg.body.reactionEmoji, userReactionExpire)
} yield {
if (user.reactionEmoji != msg.body.reactionEmoji) {
broadcast(newUserState, msg.body.reactionEmoji)

View File

@ -24,7 +24,7 @@ trait ClearAllUsersReactionCmdMsgHdlr extends RightsManagementTrait {
user <- Users2x.findAll(liveMeeting.users2x)
} yield {
//Don't clear away and RaiseHand
Users2x.setReactionEmoji(liveMeeting.users2x, user.intId, "none")
Users2x.setReactionEmoji(liveMeeting.users2x, user.intId, "none", 0)
}
sendClearedAllUsersReactionEvtMsg(outGW, liveMeeting.props.meetingProp.intId, msg.header.userId)
} else {

View File

@ -13,7 +13,7 @@ trait UserReactionTimeExpiredCmdMsgHdlr extends RightsManagementTrait {
def handleUserReactionTimeExpiredCmdMsg(msg: UserReactionTimeExpiredCmdMsg) {
val isNodeUser = msg.header.userId.equals("nodeJSapp")
if (isNodeUser) {
Users2x.setReactionEmoji(liveMeeting.users2x, msg.body.userId, "none")
Users2x.setReactionEmoji(liveMeeting.users2x, msg.body.userId, "none", 0)
}
}
}

View File

@ -23,13 +23,13 @@ class UserReactionDbTableDef(tag: Tag) extends Table[UserReactionDbModel](tag, "
}
object UserReactionDAO {
def insert(userId: String, reactionEmoji: String) = {
def insert(userId: String, reactionEmoji: String, durationInSeconds: Int) = {
DatabaseConnection.db.run(
TableQuery[UserReactionDbTableDef].forceInsert(
UserReactionDbModel(
userId = userId,
reactionEmoji = reactionEmoji,
durationInSeconds = 60,
durationInSeconds = durationInSeconds,
createdAt = new java.sql.Timestamp(System.currentTimeMillis())
)
)

View File

@ -195,7 +195,7 @@ object Users2x {
newUser
}
}
def setReactionEmoji(users: Users2x, intId: String, reactionEmoji: String): Option[UserState] = {
def setReactionEmoji(users: Users2x, intId: String, reactionEmoji: String, durationInSeconds: Int): Option[UserState] = {
for {
u <- findWithIntId(users, intId)
} yield {
@ -203,7 +203,7 @@ object Users2x {
.modify(_.reactionChangedOn).setTo(System.currentTimeMillis())
users.save(newUser)
UserReactionDAO.insert(intId, reactionEmoji)
UserReactionDAO.insert(intId, reactionEmoji, durationInSeconds)
newUser
}
}