Commit Graph

979 Commits

Author SHA1 Message Date
Guilherme Pereira Leme
d1af76d8ff
fix(bbb-web): fix plugins not loading nor running into breakout-rooms (#21525)
* [fix-breakouts-plugin] - Fix plugin not loading and not running into breakouts.

* [fix-breakouts-plugin] - simplifying createMeeting logic - changes in review
2024-10-24 21:15:27 -04:00
Ramón Souza
8daeafeb0d
Merge pull request #21480 from Arthurk12/bbb/30/21463
feat: introduces join parameter to flag user as `bot`
2024-10-22 17:32:13 -03:00
João Victor
6eb11f41b0 fix(chat): A few fixes
- Sort reactions by least recent and then by reaction count.
- Wrong condition for checking if a user is moderator was preventing moderators rom reacting to messages if locking public chat was activated.
- Wrong condition for checking if a user is moderator was preventing moderators from editing messages if locking public chat was activated.
- Display message time for all messages.
2024-10-18 14:37:29 -03:00
Arthurk12
86ea21e52b feat(akka): join param to flag user as bot
Introduces new join parameter `bot` to flag users as bot.
2024-10-16 12:30:02 -03:00
Gustavo Trott
1eeff8d142
Merge pull request #21368 from GuiLeme/new-server-side-architecture
refactor (plugins): Read plugins configs from a manifest file instead of client settings
2024-10-14 17:20:52 -03:00
Guilherme Leme
1c3c11afde [new-server-side-architecture] - sonar cloud feedback implementation - removed a possible bug 2024-10-14 10:42:34 -03:00
Guilherme Leme
1ea964223b [new-server-side-architecture-plugins] - Created all the data flow of plugins from a URL parameter of manifest.json until the pluginLoader component of the client. 2024-10-04 11:16:25 -03:00
Paul Trudel
62e2f396cb
feat(API): Add file scanning to presentation upload (#21217)
* Add ClamAV file scanning

* Add file uploade virus message and event

* Add file virus message to front end

* Delete bigbluebutton-html5/.meteor/local/build/programs/web.browser/app/app.js

* Add error message to locale

* Fix typo in frontend error message

* Remove malicious file after detection

* Add property to enable/disable file scanning

* Create and send new message when file scanning fails

* Readd space in prop file

* Update bigbluebutton-html5/public/locales/en.json

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-10-03 16:30:38 -04:00
Gustavo Trott
e19cbdbb58 Add support for chat message reactions.
It introduces the graphql prop `reactions` to the type `chat_message_public` and `chat_message_private`.
It also add two mutations `chatSendMessageReaction` and `chatDeleteMessageReaction`.
2024-10-03 14:34:24 -03:00
Gustavo Trott
4f731f2a79 Rename user_camera prop focused to showAsContent 2024-10-02 22:25:35 -03:00
Gustavo Trott
a6fc59ba46 Allow to edit and delete chat messages through graphql
It introduces the mutations:
chatEditMessage
chatDeleteMessage

The type chat_message receive two new fields:
updatedAt
deletedAt

A new table chat_message_history was introduced to store the previous version of an edited or deleted message.

When removed the message is not deleted, but the content become null and deletedAt populated. So the idea is to show "This message was removed" in the client.
2024-10-02 15:18:21 -03:00
Gustavo Trott
91cf45106b
Merge pull request #21303 from gustavotrott/gql-user-screenshare-as-camera
gql-server: Allow all users to share screens (not only presenter) (backend portion)
2024-10-01 15:37:33 -03:00
Gustavo Trott
3fb6dd71d2 Edit graphql type UserCamera to suport either camera or screenshare
Add fields:
	contentType: to identify whether is camera or screenshare
	hasAudio: useful for screenshare
	focused: indicates if this screenshare will be shown in presentation area
2024-10-01 14:39:48 -03:00
Gustavo Trott
900bc9e476 Add replyToMessageId and messageSequence to chat_message
replyToMessageId will be useful for the feature that enables to reply a message of the chat
messageSequence will be useful to identify the page of that message and scroll the user to the correct page when they click to see the original message
2024-10-01 11:32:58 -03:00
Gustavo Trott
e70f18be6b
Merge branch 'v3.0.x-release' into clone-user-session 2024-09-26 13:32:22 -03:00
danielpetri1
82b02e7fd2 Remove slide size probing from bbb-export-annotations 2024-09-24 13:59:01 +00:00
Gustavo Trott
02bdd3c703 Renames the param Revoke to Replace, once it will better explain the reason the previous session is being invalidated
Starts supporting the param enforceLayout, a subsequent PR will finish and document it
Starts supporting user-session-metadata, a subsequent PR will finish and document it
2024-09-24 09:40:00 -03:00
Gustavo Trott
e92293993a Merge remote-tracking branch 'upstream/v3.0.x-release' into clone-user-session 2024-09-18 10:05:04 -03:00
Gustavo Trott
96f9325ef2 Add userLockSettings to allow disablePublicChat for individual users
This commit introduces `userLockSettings`, which includes an option to set `disablePublicChat` for specific users, rather than only for all locked viewers as before. This implementation covers the backend and GraphQL portions; the frontend changes will be addressed in a separate PR.

This is a port of #20585, originally implemented for version 2.7 using the old architecture with MongoDB.
2024-09-05 18:04:25 -03:00
Gustavo Trott
4ea48b3333 This update allows duplicating a user session via the getJoinUrl endpoint. The generated link will create a new sessionToken while retaining the same userId. This setup enables two devices be represented as a single user on the user list, making it particularly useful for scenarios like transferring a session from a computer to a mobile device.
Additionally, the mobile app can use this feature to render the whiteboard inside an iframe with the same `userId`.

By setting the parameter `revokePreviousSession=true`, a new `sessionToken` will be generated, and the previous session will be revoked when the new device connects. This is useful for transferring a session to another device and automatically closing the previous session.
2024-09-04 21:22:49 -03:00
João Victor Nunes
fe67566334
[3.0] feat: Accept custom webcamBackgroundURL (#20920)
* [3.0] feat: Accept custom webcamBackgroundURL

* docs: webcamBackgroundURL

* test: Update virtual background thumbnail image

* fix: tweak error logs for the webcamBackgroundURL fetching procedure

* test: Update virtual background thumbnail image

* fix(logging): do not specify null extraInfo object

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

* fix(logging): extract fields from error object for building extraInfo object

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

---------

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>
2024-08-23 09:04:56 -03:00
Átila
c48e93e00c
feat(darklogo): port customDarkLogo (#20922) 2024-08-21 14:58:32 -03:00
prlanzarin
58ccd9e586 feat(audio): add memberId to VoiceStateEvent when applicable
We need the voiceUserId (memberId) in IN_CONFERENCE callState events so
that the SFU can bypass dialplan-level mute states when transferring
between breakout rooms.

Add memberId to VoiceCallStateEvent when applicable. For CHANNEL_STATE
events that do not carry it (RINGING, HANGUP), memberId is an empty
string.
2024-08-15 00:43:31 +00:00
prlanzarin
c6ca6d5c45 fix(audio): add callerNum to transparent listen only RPCs
There are some scenarios where transparent listen only toggle RPCs are
directed to multiple different sessions in the SFU, which might cause a
hold-unhold loop because they're all anchored to the userId.

Append the callerNum to transparent listen only toggle RPCs so that they
are directed to the appropriate audio sessions in all cases.
2024-08-15 00:43:29 +00:00
prlanzarin
325887e325 feat(audio): rework audio join without listen only
This is a rework of the audio join procedure whithout the explict listen
only separation in mind. It's supposed to be used in conjunction with
the transparent listen only feature so that the distinction between
modes is seamless with minimal server-side impact. An abridged list of
changes:
  - Let the user pick no input device when joining microphone while
    allowing them to set an input device on the fly later on
  - Give the user the option to join audio with no input device whenever
    we fail to obtain input devices, with the option to try re-enabling
    them on the fly later on
  - Add the option to open the audio settings modal (echo test et al)
    via the in-call device selection chevron
  - Rework the SFU audio bridge and its services to support
    adding/removing tracks on the fly without renegotiation
  - Rework the SFU audio bridge and its services to support a new peer
    role called "passive-sendrecv". That role is used by dupled peers
    that have no active input source on start, but might have one later
    on.
  - Remove stale PermissionsOverlay component from the audio modal
  - Rework how permission errors are detected using the Permissions API
  - Rework the local echo test so that it uses a separate media tag
    rather than the remote
  - Add new, separate dialplans that mute/hold FreeSWITCH channels on
    hold based on UA strings. This is orchestrated server-side via
    webrtc-sfu and akka-apps. The basic difference here is that channels
    now join in their desired state rather than waiting for client side
    observers to sync the state up. It also mitigates transparent listen
    only performance edge cases on multiple audio channels joining at
    the same time.

The old, decoupled listen only mode is still present in code while we
validate this new approach. To test this, transparentListenOnly
must be enabled and listen only mode must be disable on audio join so
that the user skips straight through microphone join.
2024-08-15 00:43:28 +00:00
Arthur B. Grossi
d2132484b4
feat(plugins): server command send chat message (#20781)
* feat(plugins): add chat server command and chat message type `plugin`

This commit adds the required code for the plugins SDK's chat server
command `CHAT_SEND_MESSAGE`, which allows plugins to send chat
messages. Messages sent by plugins are identified by the message
type `plugin` and belong to the user (senderID) of the client that
sent it. Plugin messages are not displayed by the client itself because
these messages are meant to be custom-rendered by plugins, typically by
the plugin that sent them.

* feat(plugins): add message metadata

Plugin name and plugin custom metadata are stored in message's metadata,
so plugins need it to identify messages when applying custom render.

* feat(chat): removes specific code for plugin messages

Removes specific akka messages, handlers and routes for plugin messages
and adds metadata parameter in `GroupChatMsgFromUser`.

* feat(chat): adds option parameter to mutation

Adds optional parameter `metadata` to the already existing mutation
`chatSendMessage` and use this mutation for plugin chat server command.

* feat(chat): rendering of plugin messages

This commit implements the correct rendering of plugin messages, which
is:
- Plugin messages with metadata attribute `custom` set to true are not
  rendered by the client, and are meant to be custom-rendered by
  plugins.
- Plugin messages with metadata attribute `custom` set to false are
  rendered by the client as being sent by the user that triggered it.

* Update sdk version to v0.0.56

* update sdk version to v0.0.57
2024-08-07 15:59:30 -04:00
Anton Georgiev
20f1ce2441
Merge pull request #20860 from ramonlsouza/port-breakout-changes
Port breakouts enhancements from 2.7.10 to 3.0
2024-08-06 16:46:34 -04:00
Daniel Petri Rocha
254b1fab6d Initial implementation to let slides be passed in the backend 2024-08-05 09:30:53 -03:00
Gustavo Trott
2073b07c5c Remove unused ValidateConnAuthTokenSysMsg 2024-08-02 15:51:57 -03:00
Gustavo Trott
8623443704 Remove unused GetUsersMeetingReqMsg 2024-08-02 15:08:42 -03:00
Gustavo Trott
180ed6890b Remove unused ValidateAuthToken flow and messages 2024-08-02 15:02:54 -03:00
Gustavo Trott
407b85a3d4 Remove unused SYNC CLIENT messages 2024-07-31 11:17:22 -03:00
Gustavo Trott
fbf148dcd2 Remove unused SyncGetMeetingInfoRespMsg 2024-07-31 10:47:34 -03:00
Gustavo Trott
aa2bc871df Remove ununsed MeetingTimeRemainingUpdateEvtMsg and BreakoutRoomsTimeRemainingUpdateEvtMsg 2024-07-31 10:42:56 -03:00
Gustavo Trott
ce3811939c Remove unused UpdateBreakoutUsersEvtMsg 2024-07-31 10:19:09 -03:00
Gustavo Trott
94e64bb0a0 Remove unused UpdateRecordingTimerEvtMsg 2024-07-31 09:33:31 -03:00
Gustavo Trott
df6b86cd72 Remove unused EndAndKickAllSysMsg 2024-07-30 11:36:53 -03:00
Gustavo Trott
aba8f3eff2 Remove unused DisconnectClientSysMsg msg 2024-07-30 10:09:50 -03:00
Gustavo Trott
c6b9ab35ae
refactor: Remove old userStatus Emoji (#20717)
* Remove old userStatus Emoji

* tweak docs

* fix bkroom errors
2024-07-18 08:58:38 -04:00
Gustavo Trott
1683f4c3fe
refactor: Rename all customParameters references to userMetadata or userdata (#20692)
* Rename all customParameters references to userMetadata

* fix linter error

* Update docs/docs/development/api.md

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>

* Update bigbluebutton-html5/imports/ui/components/settings-loader/component.tsx

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-07-16 13:40:49 -04:00
Anton Georgiev
abeb12146b
Merge pull request #20480 from KDSBrowne/v30-enable-whiteboard-infinite-canvas
feat(whiteboard): Add infinite whiteboard for presentation slides
2024-07-05 17:54:55 -04:00
KDSBrowne
c341ea44f8 update canvas names to whiteboard 2024-07-05 20:13:30 +00:00
Guilherme Pereira Leme
ccb2e74bc1
feat(plugin): Added sendGenericDataForLearningAnalyticsDashboard for plugins (#20628)
* [data-channel-analytics-options]  - Added data-channel analytics and record options and added a parameter options for the useDataChannel function

* Update bigbluebutton-html5/public/locales/en.json

Co-authored-by: Gustavo Trott <gustavo@trott.com.br>

* [data-channel-analytics-options] -created new sendDataAnalytics for plugin and change presentation toolbar button

* [data-channel-analytics-options]  - QUICK FIX

* [update-data-channel-function] - fix action metadata

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options]  - changes in review

* [captionLocale] - Changes in review

* [data-channel-analytics-options]  - update SDK

* [data-channel-analytics-options]  Changes in review

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options] - changes in review

* [data-channel-analytics-options] - changes in review

* Refactor learning dashboard json structure with genericData

* fix typo

* [data-channel-analytics-options] - changes according to new json structure

* changes in review

---------

Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2024-07-05 16:49:45 -03:00
Gustavo Trott
134b207f94
refactor: Remove Hasura database-updates and move them to Gql-Actions (#20634) 2024-07-04 17:00:06 -03:00
KDSBrowne
687ee36d29 add functionality to enable infinite whiteboard 2024-07-03 17:14:47 +00:00
Paul Trudel
6dd1eabe92
feat(events): Store user data in Redis for use in event.xml (#20593) 2024-06-28 09:28:03 -04:00
Guilherme Leme
8a04c8a4aa Merge remote-tracking branch 'upstream/v3.0.x-release' into update-data-channel-function 2024-06-18 13:42:34 -03:00
Gustavo Trott
a27cd6cdb2
Merge pull request #20518 from GuiLeme/plugin-server-commands
feat(plugins): new server-command for typed-captions plugin
2024-06-18 13:33:16 -03:00
Guilherme Leme
57389c351e [plugin-server-commands] - changes in review 2024-06-18 12:01:46 -03:00
Guilherme Leme
41eb2c34e3 [update-data-channel-function] - merge upstream 2024-06-18 10:25:02 -03:00