Commit Graph

10137 Commits

Author SHA1 Message Date
Nextcloud bot
1557db875a
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-16 03:03:02 +00:00
Marcel Hibbe
5419b03184
Merge pull request #4606 from nextcloud/backport/4603/stable-20.1
[stable-20.1] fix to not cut off unread mentions bubble
2025-01-15 10:06:11 +00:00
Marcel Hibbe
cefaa203fc fix to not cut off unread mentions bubble
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-15 09:50:02 +00:00
Nextcloud bot
6eb8d1f5d0
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-15 03:03:47 +00:00
Nextcloud bot
c155d19773
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-14 01:44:06 +00:00
Nextcloud bot
0ef607f1bd
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-13 03:01:58 +00:00
Nextcloud bot
aae4d58221
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-12 03:13:41 +00:00
Nextcloud bot
a27e459e61
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-11 03:02:00 +00:00
Marcel Hibbe
28528aaae0
bump version to 20.1.1 RC1
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 14:05:07 +01:00
Marcel Hibbe
7d5fec3bf4
Merge pull request #4583 from nextcloud/backport/4474/stable-20.1
[stable-20.1] Replace Popup bubble with Material Button
2025-01-10 11:53:36 +01:00
Marcel Hibbe
27d2cbd2f3
add animation to "unread mentions" button + change design
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 11:44:53 +01:00
github-actions
8f64664b74
Analysis: update lint results to reflect reduced error/warning count
Signed-off-by: github-actions <github-actions@github.com>
2025-01-10 11:44:53 +01:00
sowjanyakch
9b19423ada
remove popup bubble dependency
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-10 10:55:10 +01:00
sowjanyakch
1dd56c0a5b
hide button when scrolling to unread mention
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-10 10:55:10 +01:00
sowjanyakch
c287f1f2fd
Changes to ConversationsListActivity
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-10 10:55:10 +01:00
sowjanyakch
3ab4fb39a5
replace popup button with material button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-10 10:55:09 +01:00
Nextcloud bot
b4153c4dce
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-10 09:53:44 +00:00
Marcel Hibbe
83cba7197e
Merge pull request #4592 from nextcloud/backport/4591/stable-20.1
[stable-20.1] fix translation for polls_option_delete
2025-01-10 10:51:30 +01:00
Marcel Hibbe
448e81679b fix translation for polls_option_delete
$s -> $d

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 09:51:12 +00:00
Nextcloud bot
ab5fe4977d
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-10 03:02:00 +00:00
Nextcloud bot
9b90692354
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-09 16:44:24 +00:00
Marcel Hibbe
c1fe29dbee
Merge pull request #4585 from nextcloud/backport/4584/stable-20.1
[stable-20.1] $s -> $d
2025-01-09 17:41:34 +01:00
tobiasKaminsky
2180ae7993 $s -> $d
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
2025-01-09 15:59:46 +00:00
Nextcloud bot
c821fc6a96
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-09 14:34:01 +00:00
Nextcloud bot
83fdb1cdba
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-09 14:10:00 +00:00
Marcel Hibbe
dd37c7e08c
Merge pull request #4582 from nextcloud/backport/4551/stable-20.1
[stable-20.1] show message send button when there is text in input message field
2025-01-08 17:47:59 +01:00
sowjanyakch
f19cb6c1e1 show send button when there is text in input message field
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-08 15:59:04 +00:00
Marcel Hibbe
41d2535d51
Merge pull request #4581 from nextcloud/backport/4558/stable-20.1
[stable-20.1] Fix sending local state to other participants
2025-01-08 14:09:16 +01:00
Daniel Calviño Sánchez
e3d274252e Send state also through signaling messages
The speaking state is still sent only through data channels, as it is
not currently handled by other clients when sent through signaling
messages.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
eb35a2ed9a Rename variable
This will be used to have separate counts for data channel and signaling
messages.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
57ed4340f8 Add support for sending signaling messages in the MessageSender
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
0e258e91e0 Move attributes to local variables
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
a5bbff7e92 Send current state to remote participants when they join
Note that this implicitly send the current state to remote participants
when the local participant joins, as in that case all the remote
participants already in the call join from the point of view of the
local participant

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
0443bff9ca Add support for sending data channel messages to a single participant
This is not possible when Janus is used, as Janus only allows
broadcasting data channel messages to all the subscribers of the
publisher connection.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
036e4b4403 Add helper class to broadcast the local participant state
The LocalStateBroadcaster observes changes in the
LocalCallParticipantModel and notifies other participants in the call as
needed. Although it is created right before joining the call there is a
slim chance of the state changing before the local participant is
actually in the call, but even in that case other participants would not
be notified about the state due to the MessageSender depending on the
list of call participants / peer connections passed to it, which should
not be initialized before the local participant is actually in the call.

There is, however, a race condition that could cause participants to not
be added to the participant list if they join at the same time as the
local participant and a signaling message listing them but not the local
participant as in the call is received once the CallParticipantList was
created, but that is unrelated to the broadcaster and will be fixed
in another commit.

Currently only changes in the audio, speaking and video state are
notified, although in the future it should also notify about the nick,
the raised hand or any other state (but not one-time events, like
reactions). The notifications right now are sent only through data
channels, but at a later point they will be sent also through signaling
messages as needed.

Similarly, although right now it only notifies of changes in the state
it will also take care of notifying other participants about the current
state when they join the call (or the local participant joins).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
2b98a994ff Add data model for local call participants
This is the counterpart of CallParticipantModel for the local
participant. For now it just stores whether audio and video are enabled
or not, and whether the local participant is speaking or not, but it
will be eventually extended with further properties.

It is also expected that the views, like the button with the microphone
state, will update themselves based on the model. Similarly the model
should be moved from the CallActivity to a class similar to
CallParticipant but for the local participant. In any case, all that is
something for the future; the immediate use of the model will be to know
when the local state changes to notify other participants.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
756e2cd8cb Send data channel messages only to "video" peer connections
Data channel messages are expected to be sent only to peer connections
with "video" type, which provide the audio and video tracks of the
participant (and, in fact, peer connections for screen shares do not
even have data channels enabled in the WebUI).

Note that this could change if at some point several audio/video tracks
are sent in the same peer connection, or if "speaking" messages are
added to screen shares, but that will be addressed if/when that happens.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
c0ab707523 Add helper class to send messages to call participants
For now it just provides support for sending a data channel message to
all participants, so notifying all participants when the media is
toggled or the speaking status change can be directly refactored to use
it.

While it would have been fine to use a single class for both MCU and no
MCU they were split for easier and cleaner unit testing in future
stages.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Daniel Calviño Sánchez
514efdd0b3 Set "hasMCU" once its value is known
"hasMCU" (which has always been the wrong name, because it is an SFU
rather than an MCU, but it is wrong even in the signaling server so for
now the legacy name is kept) was set again and again whenever the call
participant list changed. Now it is set instead once its value is known,
that is, when it is known that the internal signaling server is used (as
no "MCU" is used in that case), or when the connection with the external
signaling server is established, as its supported features are not known
until then.

This change should have no effect in the usages of "hasMCU", as it is
used when the call participant list change, which will happen only after
joining the call in the signaling server, or when sending "isSpeaking"
and toggling media, in both cases guarded by "isConnectionEstablished",
which will be true only once "performCall" was called or if the call is
active with other participants.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-08 12:50:53 +00:00
Marcel Hibbe
a90bfe3d60
Merge pull request #4578 from nextcloud/backport/4553/stable-20.1
[stable-20.1] open .webm video files with internal player
2025-01-08 10:50:52 +01:00
sowjanyakch
b3ff5fae20 open .webm video files with internal player
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-07 18:59:54 +00:00
Nextcloud bot
1ce30f54d9
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-04 03:03:54 +00:00
Marcel Hibbe
c3df5863a0
Merge pull request #4576 from nextcloud/backport/4569/stable-20.1
[stable-20.1] Fix audio and video not received
2025-01-03 14:42:50 +01:00
Daniel Calviño Sánchez
7287a45907 Fix SDP constraints used by PeerConnectionWrapper
The SDP constraints for publisher connections when the MCU is used were
set for all connections. Those constraints set "OfferToReceiveAudio" and
"OfferToReceiveVideo" to false, which disables receiving audio and video
when the local participant is the one sending the offer. Therefore,
audio and video was not received when the MCU was not used and the local
participant was the one initiating the connection.

The "OfferToReceiveXXX" configurations have no effect when set on an
answer (and thus are not even set, an empty MediaConstraints is used in
that case). However, when "OfferToReceiveVideo = false" is set the video
transceiver is explicitly stopped (which is used to avoid receiving
video when joining a call with audio only). Therefore, as
"OfferToReceiveVideo = false" was always set, video was never received
in subscriber connections when the MCU is used, or connections initiated
by the other peer when the MCU is not used.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 12:47:16 +00:00
Daniel Calviño Sánchez
94fba1fc35 Rename attribute to a more accurate name
The SDP constraints should be set when the MCU is used, but only for
publisher connections; receiver connections should use the general SDP
constraints.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 12:47:16 +00:00
Andy Scherzinger
058db13660
Merge pull request #4575 from nextcloud/backport/4574/stable-20.1
[stable-20.1] Convert log class to kotlin
2025-01-03 13:29:03 +01:00
Marcel Hibbe
b1145c5d12 convert Log class to kotlin
@JvmStatic is necessary to keep the static behavior of the method calls

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-03 12:14:11 +00:00
Marcel Hibbe
6ce95de3c9 Rename .java to .kt
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-03 12:14:11 +00:00
Marcel Hibbe
958d4c30a5
Merge pull request #4572 from nextcloud/backport/4536/stable-20.1
[stable-20.1] Improve handling of data channels
2025-01-03 12:47:25 +01:00
Daniel Calviño Sánchez
f4380f0833 Fix "send" not respecting order of pending messages
When the data channel is not open yet data channel messages are queued
and then sent once opened. "onStateChange" is called from the WebRTC
signaling thread, while "send" can be called potentially from any
thread, so to send the data channel messages in the same order that they
were added new messages need to be enqueued until all the pending
messages have been sent. Otherwise, even if there is synchronization
already, it could happen that "onStateChange" was called but, before
getting the lock, "send" gets it and sends the new message before the
pending messages were sent.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00