Commit Graph

7696 Commits

Author SHA1 Message Date
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
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
Daniel Calviño Sánchez
cb81bca72a Fix "removePeerConnection" not being thread-safe
Adding and disposing remote data channels is done from different
threads; they are added from the WebRTC signaling thread when
"onDataChannel" is called, while they can be disposed potentially from
any thread when "removePeerConnection" is called. To prevent race
conditions between them now both operations are synchronized.

However, as "onDataChannel" belongs to an inner class it needs to use a
synchronized statement with the outer class lock. This could still cause
a race condition if the same data channel was added again; this should
not happen, but it is handled just in case.

Moreover, once a data channel is disposed it can be no longer used, and
trying to call any of its methods throws an "IllegalStateException". Due
to this, as sending can be also done potentially from any thread, it
needs to be synchronized too with removing the peer connection.

State changes on data channels as well as receiving messages are also
done in the WebRTC signaling thread. State changes needs synchronization
as well, although receiving messages should not, as it does not directly
use the data channel (and it is assumed that using the buffers of a
disposed data channel is safe). Nevertheless a little check (which in
this case requires synchronization) was added to ignore the received
messages if the peer connection was removed already.

Finally, the synchronization added to "send" and "onStateChange" had the
nice side effect of making the pending data channel messages thread-safe
too, as before it could happen that a message was enqueued when the
pending messages were being sent, which caused a
"ConcurrentModificationException".

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
bbeb85d8a3 Store data channel label
Getting the label is no longer possible once the data channel has been
disposed. This will help to make the observer thread-safe.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
89a69327c8 Add logs for sending data channel messages
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
f387e57628 Queue data channel messages sent when data channel is not open
Data channel messages can be sent only when the data channel is open.
Otherwise the message is simply lost. Clients of the
PeerConnectionWrapper do not need to be aware of that detail or keep
track of whether the data channel was open already or not, so now data
channel messages sent before the data channel is open are queued and
sent once the data channel is opened.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
4eaa2f3e2c Split condition
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
f34bc17b36 Rewrite method to return early
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
a3cf897d13 Move variable declaration into try block
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
014b18de89 Fix remote data channels not disposed when removing peer connection
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
3ffc6db56d Send data channel messages using "status" data channel
Data channel messages are expected to be sent using the "status" data
channel that is locally created. However, if another data channel was
opened by the remote peer the reference to the "status" data channel was
overwritten with the new data channel, and messages were sent instead on
the remote data channel.

In current Talk versions that was not a problem, and the change makes no
difference either, because since the support for Janus 1.x was added
data channel messages are listened on all data channels, independently
of their label or whether they were created by the local or remote peer.

However, in older Talk versions this fixes a regression introduced with
the support for Janus 1.x. In those versions only messages coming from
the "status" or "JanusDataChannel" data channels were taken into
account. When Janus is not used the WebUI opens the legacy
"simplewebrtc" data channel, so that data channel may be the one used to
send data channel messages (if it is open after the "status" data
channel), but the messages received on that data channel were ignored by
the WebUI. Nevertheless, at this point this is more an academic problem
than a real world problem, as it is unlikely that there are many
Nextcloud servers with Talk < 16 and without HPB being used.

Independently of all that, when the peer connection is removed only the
"status" data channel is disposed, but none of the remote data channels
are. This is just a variation of an already existing bug (the last open
data channel was the one disposed due to being the last saved reference,
but the rest were not) and it will be fixed in another commit.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
d1a4265491 Rename "sendChannelData" to "send"
The legacy name was a bit strange, so now it is renamed to just "send"
as the parameter type ("DataChannelMessage") gives enough context.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
1f4c25caa3 Include data channel label in log message
This implicitly fixes trying to send the initial state on the latest
remote data channel found (which is the one stored in the "dataChannel"
attribute of the "PeerConnectionWrapper") when any other existing data
channel changes its status to open. Nevertheless, as all this will be
reworked, no unit test was added for it.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
0555e0edbd Unify log messages for received data channel messages
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
a43a33a16a Add unit tests for receiving data channel messages
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
26be065545 Add dummy Log implementation to be used in tests
Log methods are static, so they can not be mocked using Mockito.
Although it might be possible to use PowerMockito a dummy implementation
was added instead, as Log uses are widespread and it is not something
worth mocking anyway.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:22 +00:00
Daniel Calviño Sánchez
a1eb90da9f Remove Dagger related code from PeerConnectionWrapper
The PeerConnectionWrapper does not need to be injected in the
application, nor the Context needs to be injected in the
PeerConnectionWrapper. This all seems to be leftovers from the past, and
removing them would ease adding unit tests for the
PeerConnectionWrapper.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-01-03 11:29:21 +00:00
Nextcloud bot
3aa2be2ece
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-01-03 03:04:18 +00:00
Nextcloud bot
1628993b73
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-28 03:04:45 +00:00
Nextcloud bot
159096cc64
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-27 03:04:41 +00:00
Nextcloud bot
3e59a289f7
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-26 03:04:53 +00:00
Nextcloud bot
bfe7a6576f
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-25 03:04:26 +00:00
Nextcloud bot
7cf93e9ffc
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-24 03:02:29 +00:00
Nextcloud bot
cb51f85037
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-23 03:02:16 +00:00
Nextcloud bot
ced2ac0951
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-22 03:19:17 +00:00
Nextcloud bot
1b84cb5e4e
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-21 03:03:52 +00:00
Nextcloud bot
43a2950822
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-19 03:04:23 +00:00
Nextcloud bot
5300980ba5
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-18 03:38:09 +00:00
rapterjet2004
6a8116e749 Fixed overlay bug
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-12-16 10:06:40 +01:00
Andy Scherzinger
e540eb97dc
style: Fix formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:57 +01:00
Andy Scherzinger
eb3b2f6e97
style(detekt): Restrict the number of return statements in methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:56 +01:00
Andy Scherzinger
ada56249da
style(detekt): Shorten methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:55 +01:00
Andy Scherzinger
78dc7fb2c7
fix(lint): Move suppressions due to refactoring
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:55 +01:00
Andy Scherzinger
a034fc8237
style(ktlint): Fix formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:53 +01:00
Andy Scherzinger
0687061efd
style(detekt): Shorten methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:52 +01:00
Andy Scherzinger
091531e2d2
style(detekt): Move magic number to constant
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-16 09:18:52 +01:00
Nextcloud bot
5dcf08637d
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-14 03:01:59 +00:00
Nextcloud bot
756f2d3b7c
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-13 03:02:55 +00:00
Marcel Hibbe
931a4c772c
Merge pull request #4532 from nextcloud/backport/4493/stable-20.1
[stable-20.1] display conversation avatar for open conversations
2024-12-10 10:04:28 +01:00
sowjanyakch
fe45c13a54 remove unused models
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:08 +00:00
sowjanyakch
e8f5afb2a5 refactor code - remove comments
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:08 +00:00
sowjanyakch
53a2ee51f0 suppress lint warning for invalid string format
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:07 +00:00
sowjanyakch
d2f8be984e ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:07 +00:00
sowjanyakch
6037eefe18 Modify Adapter and ListOpenConversationsActivity
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:07 +00:00
sowjanyakch
f1051b5f52 Modify ViewModel
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:07 +00:00
sowjanyakch
aab4591f83 Use correct model
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-10 08:42:07 +00:00
Andy Scherzinger
490a93bb3f style(detekt): shorten long methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-10 08:13:31 +00:00
Andy Scherzinger
bd84db0118 style(detekt): Shorten complex conditions
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-10 08:13:31 +00:00
Nextcloud bot
e1d283d44a
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-10 03:02:19 +00:00
Nextcloud bot
4b82047bab
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-08 03:32:17 +00:00
Nextcloud bot
140208ee6c
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-07 03:10:01 +00:00
Andy Scherzinger
7ba8bf9b3d style(detekt): Comment on all EmptyFunctionBlock cases
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-06 12:00:58 +00:00
Andy Scherzinger
a0d00857e5 style(detekt): Accept current use of TooGenericExceptionCaught cases
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-06 12:00:58 +00:00
Andy Scherzinger
d39ccaeae2 style(detekt): Ignore TooGenericExceptionThrown on test stub implementation
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-06 12:00:58 +00:00
Andy Scherzinger
e4807c4972 style(detekt): Replace MagicNumbers with constants
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-06 12:00:57 +00:00
Nextcloud bot
4f67006621
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-06 03:18:30 +00:00
Nextcloud bot
0633b6125d
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-05 03:37:45 +00:00
Nextcloud bot
e32caad0e4
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-04 03:36:16 +00:00
Andy Scherzinger
0c1f3a5131
Merge pull request #4517 from nextcloud/backport/4389/stable-20.1
[stable-20.1] User now knows if no offline messages are saved when entering a conversation
2024-12-03 11:20:10 +01:00
Marcel Hibbe
f0a6c38ff9 fix Duplicate ids in xml
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-03 09:51:23 +00:00
rapterjet2004
d22e953576 Shows if no offline messages are saved
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-12-03 09:51:23 +00:00
Andy Scherzinger
900b88e330 style(icon): Update Mail/Group avatar
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-03 09:43:58 +00:00
Andy Scherzinger
8a62470978 style(icon): Update Link avatar and general link icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-03 09:43:58 +00:00
Andy Scherzinger
10c36488ab feat(conversations): Add federation room badge
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-03 09:19:00 +00:00
Andy Scherzinger
cdb58315ad feat(conversations): Add public room badge
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-03 09:19:00 +00:00
Nextcloud bot
f899278728
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-03 03:01:23 +00:00
Marcel Hibbe
f383370f79
bump version to 20.1.0
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-02 19:31:26 +01:00
Nextcloud bot
2b5b3d9669
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-02 18:25:56 +00:00
Nextcloud bot
dc82454a97
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-02 18:05:24 +00:00
Marcel Hibbe
ef0637cd85 reformat code + fix lint warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-02 16:53:17 +00:00
Marcel Hibbe
d0aa408758 new notification warner
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-02 16:53:16 +00:00
Andy Scherzinger
c29fe35d8a style(lint): make use of ResourceCompat
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-02 16:50:39 +00:00
Andy Scherzinger
f714f76ccb style(detekt): Improve score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-02 16:50:39 +00:00
Andy Scherzinger
41d0064183 style(ktlint): Fix formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-02 16:50:39 +00:00
Nextcloud bot
0166b4fe22
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-12-02 03:02:05 +00:00
Nextcloud bot
ae44d98f7d
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-30 03:01:20 +00:00
Nextcloud bot
2cceb07a53
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-29 02:57:54 +00:00
Marcel Hibbe
299d88038b fix guests without name for Mention autocomplete
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-28 16:28:25 +00:00
Marcel Hibbe
c9bf41b823 fix guests without name in lastMessage view in conversation list
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-28 16:28:25 +00:00
Marcel Hibbe
bf6480490a fix empty guest names for chat viewholders
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-28 16:28:25 +00:00
Marcel Hibbe
7c7609b14a fix empty guest names in conversation info list
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-28 16:28:25 +00:00
Marcel Hibbe
e0d3cb58ca fix to handle whitespaces for guest avatars
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-28 16:28:25 +00:00
Nextcloud bot
69fab46597
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-28 11:14:59 +00:00
Nextcloud bot
45574cd34f
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-28 03:04:43 +00:00
Nextcloud bot
3c5494ded8
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-27 10:30:58 +00:00
Marcel Hibbe
2a6a57f1cd
bump version to 20.1.0 RC1
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 22:19:46 +01:00
Marcel Hibbe
8e08d9279d
remove unused method
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:51 +01:00
Marcel Hibbe
16d03a69ff
show guest "first letter" avatars in chat
also:
create ChatMessageUtils as helper for the ViewHolders in this case.
Could help to avoid duplicated code until there is a clear inheritance solution.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:51 +01:00
Marcel Hibbe
199ba4be34
add grey avatar with first letter of email-guest in call view
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:51 +01:00
Marcel Hibbe
c75cf2fe20
add grey avatar with first letter of email-guest
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:51 +01:00
Marcel Hibbe
cb3614da34
remove android version check
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:51 +01:00
Marcel Hibbe
b71218973e
show simple person icon when conversation-info when guest did not set any name
However this is only possible for the conversation info.
In other parts, the info if a guest changed the name or not is not available (like in the chat or in autocomplete)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:50 +01:00
Marcel Hibbe
d95c1c605f
set guest avatar for guests and emailguests in autocomplete
knowing if a guest did not change it's name is not possible at this point, so we also show the letter "G" if it's name is guest

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:50 +01:00
Marcel Hibbe
02d0a65909
enable to set mention chip for email guests 2
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:50 +01:00
Marcel Hibbe
ca9e2d4932
enable to set mention chip for email guests
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:50 +01:00
Marcel Hibbe
6ede78eb09
remove additional information from autocomplete
objectId would be some long random string for email guests. displaying them would not make sense. It's also not done on web.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:50 +01:00
Marcel Hibbe
8a3f779fdc
show initials avatar for email guests if displayname is set
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:49 +01:00
Marcel Hibbe
6e3188f1df
display email address of guest users for moderators
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-26 21:48:49 +01:00
Marcel Hibbe
47004b8f4b
Merge pull request #4471 from nextcloud/issue-4452-search-join-conversation
Added a search bar to the "Join Open Conversations" screen
2024-11-26 19:58:18 +01:00