Commit Graph

359 Commits

Author SHA1 Message Date
Gustavo Trott
8dd48b5fe1 rename updatedAt to editedAt, and set it in akka-apps instead of pg trigger 2024-10-02 16:22:01 -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
9e8b1ffc4e new index 2024-10-01 15:04:21 -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
João Victor Nunes
e43b1e454b
fix(timer): beep failing to play intermittently (#21222)
* fix(timer): beep failing to play intermittently

* fix(typescript): omit elapsed field from timer panel props
2024-09-25 15:42:16 -04:00
Gustavo Trott
439f0486f7 Introduce an endpoint /api/rest/clientSettings that will be used by the client to fetch userdata info before creating a graphql connection.
It is necessary to fetch props bbb_custom_style and bbb_custom_style_url.
2024-09-25 11:53:02 -03: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
4570bb477d
Merge pull request #21151 from gustavotrott/gql-configs-tweaks
refactor (build/gql-server): Moves the Hasura admin password file and drop netstat
2024-09-11 10:17:05 -03:00
Gustavo Trott
3e13ba7d36 netstat is old, not used anymore. ss is the natural replacement. Very similar syntax
Danimo recommendation
2024-09-10 15:24:32 -03:00
Ramón Souza
0a6dac83b5 adjusts backend so chat lock is ignored for moderators 2024-09-09 13:46:08 -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
Gustavo Trott
af06562e02 Introduce flag currentlyInMeeting (replacing isOnline) 2024-08-28 11:08:30 -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
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
Arthur B. Grossi
291809bff0
feat(private-chat): message read confirmation feedback (#20722)
* feat(graphql-server): add new view `v_chat_private_read_feedback`

Adds a view called `v_chat_private_read_feedback` to retrieve the last seen time
of the recipient of a private chat.

* refactor(chat): removes unused prop `lastSeenAt`

* feat(private-chat): message read confirmation feedback

Adds message read confirmation feedback feature to private chats.
This feature uses the private chat recipient's `lastSeenAt' attribute to
check which messages were read. Messages read are show in the chat with
a check icon next to it.
Feature behind a flag in settings.yml, which is disabled by default:
- `public.chat.privateMessageReadFeedback.enabled`

* fix(chat): poll chart message

Fixes poll chart message which was not using the full chat width due to
previous changes in chat messages `flex-direction`.

* fix: adds missing initial value for `privateMessageReadFeedback`

* fix: linter errors

* fix(chat): add `recipientHasSeen` property to existing view

This commit changes the way the messages read by the recipient are
tracked. The previous strategy required the client to calculate the read
messages and as a consequence all messages of the given chat
were re-rendered every time the recipient `lastSeenAt` time
changed. The current strategy consists of calculating the read messages
on the server(based on recipient `lastSeenAt`) and just expose to the
client a boolean(`recipientHasSeen`) for each message that indicates whether
it has already been read or not.

* fix: typo in message description

* fix: typo in settings flag

* fix: vertically align icon
2024-07-22 12:01:24 -04:00
Gustavo Trott
0cf7c90663
Merge pull request #20736 from gustavotrott/remove-user_connection_auth
remove (gql-server): Removes old PG user/tabled created for Meteor auth
2024-07-19 13:40:26 -03:00
Gustavo Trott
f158951257
remove (gql-server): Removes /rest/clientStartupSettings endpoint (#20735) 2024-07-19 11:30:16 -04:00
Gustavo Trott
7e0295d0a9 Removes old PG user/tabled created for Meteor auth 2024-07-19 11:38:46 -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
Gustavo Trott
91ee80f6e8
Merge pull request #20698 from gustavotrott/improve-v_user_voice
refactor (gql-server): Remove unnecessary user voice props
2024-07-12 14:43:11 -03:00
Gustavo Trott
b14c643def
build(gql): Upgrade Hasura and refactor sh scripts (#20699) 2024-07-12 13:32:20 -04:00
Gustavo Trott
fda1b5b107 Remove unnecessary user voice props 2024-07-12 13:26:26 -03:00
Gustavo Trott
2c2d595212 Big refactor on Graphql authentication 2024-07-10 18:30:01 -03: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
Tainan Felipe
0e7fe3c688
Change: improve client connection status (#20630) 2024-07-04 17:26:09 -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
Gustavo Trott
4034750845
Update bbb-graphql-server/metadata/databases/BigBlueButton/tables/public_v_user_voice_activity.yaml 2024-06-25 17:52:36 -03:00
João Victor
7577dcc41c Use Hasura relationship instead of SQL join 2024-06-25 17:14:00 -03:00
João Victor
f4a2af7dc1 Merge branch 'v3.0.x-release' into use-who-is-talking 2024-06-25 16:54:44 -03:00
Tainan Felipe
c73c9cc0a7 Merge remote-tracking branch 'upstream/v3.0.x-release' into PR_20477 2024-06-24 09:58:20 -03:00
João Victor
17b734e642 refactor(core-html5): custom hooks for voice data 2024-06-21 18:45:05 -03:00
Gustavo Trott
25793d1911 fix wrong filter 2024-06-21 08:57:15 -03:00
Gustavo Trott
1465d3dca3
refactor (gql-server): Set some configs for Max PG connections and Nginx max workers aiming to support more users (#20549)
* Set hasura max connections with pg to 100

* set nginx worker_connections from 4k to 10k

* Update bbb-graphql-server/metadata/databases/databases.yaml

* remove deprecated config

* set pg max connections up to 300

---------

Co-authored-by: Tiago Jacobs <tiago.jacobs@gmail.com>
2024-06-20 16:41:47 -03:00
Gustavo Trott
3402edcb5b
Introduce gql user_voice_activity_stream (#20557) 2024-06-20 14:33:11 -03:00
Gustavo Trott
de686a2b8e
Merge pull request #20461 from GuiLeme/update-data-channel-function
feat(plugin): implement `ReplaceEntry()` function for data-channel
2024-06-19 08:36:34 -03:00
Guilherme Leme
1d9b28133e [update-data-channel-function] - change sender to creator naming in data-channel 2024-06-18 17:46:17 -03:00
Gustavo Trott
72b8f6c32e fix warning client not responding when he actually left the meeting 2024-06-18 13:47:10 -03: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
Gustavo Trott
07aa4f1d04
fix: Refactor Userlist Ordering (#20520) 2024-06-18 11:11:59 -03:00