Commit graph

2947 commits

Author SHA1 Message Date
Andy Scherzinger
2e3a2be75d
bump compileSdkVersion to 32
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-11-16 11:15:21 +01:00
Andy Scherzinger
796a2683db
Merge pull request #2563 from nextcloud/use-comparison-operator-rather-than-equals-for-enums
Use comparison operator rather than equals for enums
2022-11-14 13:39:53 +01:00
Daniel Calviño Sánchez
9e967bdd4d
Use comparison operator rather than equals for enums in Dagger modules
Fixes SPP_EQUALS_ON_ENUM issue from SpotBugs.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-14 11:30:06 +01:00
Daniel Calviño Sánchez
fb0fe8587a
Use comparison operator rather than equals for enums in adapters
Fixes SPP_EQUALS_ON_ENUM issue from SpotBugs.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-14 11:30:00 +01:00
Daniel Calviño Sánchez
969c08ea79
Use comparison operator rather than equals for enums in WebRTC code
Fixes SPP_EQUALS_ON_ENUM issue from SpotBugs.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-14 11:29:52 +01:00
Daniel Calviño Sánchez
74cf2c7a41
Use comparison operator rather than equals for enums in CallActivity
Fixes SPP_EQUALS_ON_ENUM issue from SpotBugs.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-14 11:29:29 +01:00
Daniel Calviño Sánchez
d7706b6082 Fix remote participants display with both video and screen share
ParticipantDisplayItems are not associated to a full participant but to
each of the single connections that the participant may have (video and
screen). However, when they are added to the map only the session ID is
used as key. Due to this when a participant starts a screen share the
ParticipantDisplayItem for the screen share overwrites the item for the
video, and once the screen share is stopped the old item is not
restored. Moreover, if a participant is already sharing a screen when
the local participant joins whether the video or the screen share is
shown is undefined and depends on which connection is established first.

To solve that the ParticipantDisplayItems are now associated with both
the session ID and the video stream type ("video" or "screen"). Due to
this both the video and the screen share of the remote participant are
shown in the grid view; in the future it might be better to only show
the screen share, or allow switching between screen share and video, or
show the screen share in full screen and hide the grid... but for now,
as a quick fix, this is good enough :-)

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-11 14:52:49 +00:00
Marcel Hibbe
3729f1130a
suppress some detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-11-10 15:40:04 +01:00
Marcel Hibbe
ca145d170c
revert calculation of delayed delivery time
this didn't make sense because time between firebase and devices is not synchronized, so the results were useless.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-11-10 13:38:49 +01:00
Marcel Hibbe
3a517f5760
add missed call notification, show delivery delay in debug mode
- add missed call notifications in NotificationWorker and CallNotificationActivity

- introduce refactoring of Notification handling (isolate firebase stuff from other logic). All "UI-notification" logic from ChatAndCallMessagingService was moved to NotificationWorker. ChatAndCallMessagingService was renamed to NCFirebaseMessagingService because it is now only responsible for firebase stuff. This separation should make it easier for alternative push services to dock with the app (if they are incorporated in the future).

- for DEBUG mode: show delivery delay time in notifications (time between sending from firebase to receive on device).

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-11-10 12:17:23 +01:00
Tim Krüger
5a392be92e
Merge pull request #2541 from nextcloud/keep-retrying-with-exponential-backoff-if-pulling-signaling-messages-fails
Keep retrying with exponential backoff if pulling signaling messages fails
2022-11-07 12:20:32 +01:00
Daniel Calviño Sánchez
4b4b9da2b1 Add exponential backoff when trying to pull signaling messages again
When pulling signaling messages failed the source observable was
immediately subscribed again, which immediately triggered another pull.
Rather than hammering the server or a flaky network with new requests
again and again now further requests are performed with an incremental
delay (up to 16 seconds).

The delay is increased only when several requests fail in a row, and it
is reset as soon as a request succeeds.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-06 14:46:56 +01:00
Daniel Calviño Sánchez
52dda57aef Rewrite "retry(Predicate)" as "retryWhen()"
This is just a preparatory step to add exponential backoff.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-06 14:42:45 +01:00
Daniel Calviño Sánchez
54deafa514 Keep retrying if pulling signaling messages fails
When the internal signaling server is used the observable to pull
signaling messages is subscribed again after each completion, but in
case of an error it was retried only 3 times. Those 3 times are not in a
row, though, but in total for the whole observable, no matter how many
times it was subscribed again.

Due to the limitation on retries in a long call with a flaky connection
pulling the signaling messages could fail more than 3 times, which
caused the observable to finish with an error and therefore stop further
pullings. In this situation the Android app would not notice if other
participants joined or left the call, and thus it would not establish a
connection with them or stop it. To prevent that now the number of
retries is unlimited (although the retry is still stopped if the local
participant is no longer in the call).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-06 13:30:02 +01:00
Daniel Calviño Sánchez
e001d685dd Fix update of guest avatars in call participants
The URL for the avatar depends on whether the call participant is a user
or a guest and, if it is a guest, on its nick. Although the user id of a
participant does not change if the participant is a guest the nick may
be changed during a call, so the avatar URL needs to be updated as well.

As the avatar URL is fully derived from other properties it is now
calculated internally in the ParticipantDisplayItem and calculated when
any of the properties it depends on changes (also for the user id for
completeness, as technically the item could be reused for a different
participant with a different user id, even if it is not currently done).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-04 20:40:57 +01:00
Marcel Hibbe
8dd6fe1d3d
use listOf instead Arrays.asList
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-28 16:03:53 +02:00
Dariusz Olszewski
c18bafe13a
Force HTTP/1.1 in chunked upload
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
2022-10-28 16:03:53 +02:00
Dariusz Olszewski
bfc9f57b2a
Make it possible to dismiss failure notification
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
2022-10-28 16:03:53 +02:00
Marcel Hibbe
436770d844
simplify logic for server selection screen
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-24 13:03:53 +02:00
Tim Krüger
4658292602
Merge pull request #2490 from nextcloud/bugfix/2478/fixUserStatusesForConversationList
improve fetching of user statuses in conversation list
2022-10-24 11:46:42 +02:00
Marcel Hibbe
84ba72f130
improve link preview design, add link description
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-13 23:52:49 +02:00
Tim Krüger
a17acc779c
Merge pull request #2484 from nextcloud/fix-computing-new-sessions-in-call
Fix computing new sessions in call
2022-10-13 18:08:57 +02:00
Daniel Calviño Sánchez
3278829dba
Fix computing new sessions in a call
The new sessions are computed by substracting the old sessions (those
for which a PeerConnectionWrapper exists) from the sessions currently in
the call. However, when "oldSessions" was used for that it no longer
contained the old sessions, it only contained the sessions which were no
longer in the call. As those sessions are mutually exclusive with the
sessions currently in the call nothing was substracted from
"newSessions", and it ended being the sessions currently in the call
instead.

When the HPB is not used the list of participants in the conversation is
periodically updated every 30 seconds if no other signaling message was
received in the meantime. As the layout for a participant overrides any
previous layout for that participant this periodically reset the layout
of all participants in the call, as they were all treated as new
sessions.

When the HPB is used the list of participants in the conversation is
updated only when something changed. However, similarly to the previous
case, when that happens the layout of all participants in the call is
also reset for the same reason.

To solve that now "oldSessions" is not modified, so it contains the
sessions for which a PeerConnectionWrapper exists, and substracting it
from "newSessions" now gives only the new sessions.

The other usages of "newSessions" besides creating the connection and
setting up the layout, that is, getting the peers in the call and
changing the call status to "In conversation", should be safe if
executed only when there are new sessions rather than when there are
participants in the call but they did not change.

Resolves: #2486

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-13 15:23:59 +02:00
Daniel Calviño Sánchez
f84a621780
Do not store sessions not in call as old sessions
The old sessions are used to know which connections need to be ended
because they are no longer in the call. However, if a participant is no
longer in the call but there was no connection yet then there is no
connection that needs to be ended; any existing connection will be added
when looping through the connection list, and if it needs to be stopped
it will be found when substracting the sessions that are currently in
the call.

The old sessions are also used to find the new sessions in the call. Due
to an issue in how that is computed "newSessions" currently store the
sessions in the call rather than only the new sessions (this will be
addressed in a following commit). Nevertheless, in both cases any
session not in the call for which there is no connection either will not
make any difference in the computed "newSessions" (as they are mutually
exclusive, so they will never be removed from "newSessions" when
substracting the old sessions).

Due to all that it is not needed to store sessions not in call as old
sessions / sessions to end.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-13 15:23:54 +02:00
Daniel Calviño Sánchez
1ba6e293b2
Rename to a more accurate name
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-13 15:23:48 +02:00
Daniel Calviño Sánchez
f53cb610d3
Fuse declaration and initial assignment
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-13 15:23:39 +02:00
Marcel Hibbe
42e6d9b52f
extract methods from fetchRooms method
reduce complexity for codacy score..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-13 13:26:31 +02:00
Marcel Hibbe
871f798720
improve fetching of user statuses in conversation list
replace
/ocs/v2.php/apps/user_status/api/v1/statuses

with
"includeStatus=true"
when fetching conversations, see https://nextcloud-talk.readthedocs.io/en/latest/conversation/

fix #2478

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-13 12:12:47 +02:00
Tim Krüger
b6e9c9d56f Use already fetched capabilities for user
This should avoid that the capabilities not available for the server EOL
check in 'ConversationListController#onAttach'.

Missing capabilites can also have an impact on multiple actions, but the
server EOL check is the first one.

Resolves: #2418

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-10-13 06:21:35 +00:00
Andy Scherzinger
08fb0030ec codacy: unnecessary use of fully qualified name
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-12 19:29:03 +00:00
Andy Scherzinger
8117ffb56a
Merge pull request #2474 from nextcloud/chore/noid/analysisAction
Add new analysis action
2022-10-11 18:04:07 +02:00
Andy Scherzinger
8fb11bf713
remove any use of org.jetbrains.annotations.NotNull
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-11 12:47:45 +02:00
Daniel Calviño Sánchez
7f86593bca
Fix avatar when setting participant layout before receiving the data
When a new participant is found and the layout for that participant is
set up the participant data might have not been fetched yet. If that
happens the user ID can not be got from the data and therefore a guest
avatar would be shown for that participant, even if that participant is
a normal user.

However, the signaling message that is used to find new participants
already includes the user ID, so it is now explicitly given and, if not,
then it is got from the participant data (which is needed when handling
the establishment of a connection, as in that case the event does not
contain the user ID).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-10 18:55:24 +02:00
Daniel Calviño Sánchez
4f01cb855a
Fix crash when setting participant layout before receiving the data
When setting the participant layout, if the HPB is not used, the user ID
is got from the participant list data fetched when a new participant is
found. However, as the participant layout is setup as soon as a new
participant is found the data may have not been received yet, which
ended in a crash (NullPointerException). Now the access to the
participant object is guarded to prevent that.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-10-10 18:29:40 +02:00
Andy Scherzinger
89ec37d24d
simplify condition complexity
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-06 18:00:52 +02:00
Andy Scherzinger
9bd51ce21b
PMD: An empty statement (semicolon) not part of a loop
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-06 16:55:38 +02:00
Andy Scherzinger
0a70567452
PMD: Use opposite operator instead of the logic complement operator.
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-06 16:54:27 +02:00
Marcel Hibbe
2d8799feed
fix copyright headers
headers contained a wrong sentence that was duplicated via c&p

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-06 13:48:28 +02:00
Marcel Hibbe
b7d4ba7f9c
Merge pull request #2467 from nextcloud/chore/noid/kotlin17020
bump kotlin to 17.0.20 and mark declaration usage as opt-in
2022-10-06 13:26:02 +02:00
Marcel Hibbe
66eea709b4
open MessageActionsDialog on long click on link previews.
rename ReactionsInterface.kt to CommonMessageInterface.kt

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-06 12:45:53 +02:00
Andy Scherzinger
3632b58eb1
bump kotlin to 17.0.20 and mark declaration usage as opt-in
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-10-05 22:10:48 +02:00
Marcel Hibbe
9bc42334d4
add openGraph link previews
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-05 14:17:07 +02:00
Marcel Hibbe
387cb63ce7 add toast if video file creation failed
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-10-04 12:56:01 +00:00
jld3103
d8d4fde391
Show error when loading chats fails
Signed-off-by: jld3103 <jld3103yt@gmail.com>
2022-09-30 17:48:52 +02:00
Tim Krüger
2d8492ae1e
Revert "Set minSdkVersion to 23 (Android 6)"
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-30 11:21:32 +02:00
drone
3a90d17649 Merge commit '863052b53e3051bb7e0fd4904d348fa294835821' 2022-09-29 13:16:56 +00:00
Tim Krüger
863052b53e
[WIP] Replace Fresco with Coil
Fresco is replaced with Coil verywhere. But Coil is not used directly to
avoid splintering the dependency everywhere in the code. Coil is wrapped
by extension functions for 'ImageView'.

Some shared functionality is moved from 'DisplayUtils' into the
'ImageViewExtensions'.

Resolves: #2227, #2376

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-29 14:07:05 +02:00
Marcel Hibbe
47a93d2c85
align poll buttons to right
make end poll button outlined

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-29 11:20:10 +02:00
Tim Krüger
b2d6211b3c
Convert 'ConverstationItem' from Java to Kotlin
This is mandetory to replace Fresco with Coil.

See: #2376, #2227

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-29 10:28:30 +02:00
Marcel Hibbe
84bcd0c273 hide end poll button for edit poll mode
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-29 07:34:50 +00:00
Tim Krüger
309ba90197
Merge pull request #2438 from nextcloud/bugfix/noid/fixPermissionsForCallNotificationActivity
set participantPermissions in CallNotificationActivity
2022-09-29 09:31:40 +02:00
Marcel Hibbe
d09c5d4865
set participantPermissions in CallNotificationActivity
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-28 15:45:05 +02:00
Marcel Hibbe
4f16e5be0a
fix to show reactionsEmojiWrapper
with commit 0f35e360 it was implemented to hide the reactionsEmojiWrapper when no emojis are set for a message.
whenever a emoji was added, it was actually not shown because the wrapper was still hidden.

with the fix, the wrapper is made visible again

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-28 12:22:02 +02:00
Tim Krüger
8a0e60f68a
Set minSdkVersion to 23 (Android 6)
Because of updating the minSdkVersion to 23 it comes to some obscure UI
freezes when using frescos 'RoundPostprocessor#process' to round avatar
bitmaps.
So the function 'DisplayUtils#roundBitmap' is adopted from Nextcloud
Files for Android.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-28 09:24:41 +02:00
Tim Krüger
05cfb97459
Fix wrong guests access option status
Before this change after enabling and disabling the guest access option,
the option stays enabled.

Resolves: #2378

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-27 13:07:47 +02:00
Tim Krüger
f880b4f778
Call toggle media before fetchSignalingSettings
This change fix a lateinit excepttion for 'participantPermissions'.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 12:39:15 +02:00
Tim Krüger
4c0aa6a235
Clearify PTT (=push to talk)
So that my future self and other valued developrs don't must also
research that the variable 'isPTTActive' is renamed to
'isPushToTalkActive'.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 12:39:15 +02:00
Tim Krüger
c554535bae
Respect can publish audio & video permission
With this implementation the can publish audio & video permission are
set during the creation of the 'CallActivity'. This permissions are
fixed for the complete call. If the permissions are changed by a
moderator the call must be left and joined again.

Resolves: #1783

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 12:39:15 +02:00
Tim Krüger
dda5a9e3da
Define 'BundleKeys' as 'const'
During the migration from Java to Kotlin this was not done and resulted
in

    BundleKeys.INSTANCE.getKEY_CALL_VOICE_ONLY()

instead of

    BundleKeys.KEY_CALL_VOICE_ONLY

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 11:41:10 +02:00
Tim Krüger
d0c86ec619
Respect 'can ignore lobby' permission
Now the 'can ignore lobby' permission is respected.

The 'ChatController' has now a property of the type
'ParticipantPermissions' because it's needed multiple times. The
property will be updated in 'ChatController#getRoomInfo' if the
conversation is protected by a lobby.

The function 'Conversation#shouldShowLobby' is removed in this commit.
'Conversation' is a pure model class to hold the plain JSON response.
The logic is moved into the already existing function 'ChatController#shouldShowLobby'.

Resolves: #1783

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 11:41:10 +02:00
Tim Krüger
7c09a86c4d
Correct if condition
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 11:07:31 +02:00
Tim Krüger
1bbc7caeee
Rename AttendeePermissionsUtil to ParticipantPermissions
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 11:07:31 +02:00
Tim Krüger
c031e7063e
Use 'val' instead of 'var'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-26 11:07:31 +02:00
Tim Krüger
dc6083334b
Merge pull request #2413 from nextcloud/feature/1353/shareToChooseAccount
add account switcher for "share to"
2022-09-23 12:53:18 +02:00
Marcel Hibbe
54f5c6f2f6
hide poll creation for 1:1 conversations
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-21 12:16:54 +02:00
Marcel Hibbe
62777e936d
add account switcher for "share to"
fix to avoid share to screen when coming back from conversation to conversation list

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-21 11:51:59 +02:00
Andy Scherzinger
f7035f5306
Theme toolbar for m3
Resolves #2384

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-19 16:52:55 +02:00
Tim Krüger
b3a3277aa2
Merge pull request #2395 from nextcloud/show-message-in-call-state-when-the-publisher-failed
Show message in call state when the publisher failed
2022-09-19 15:43:06 +02:00
Tim Krüger
5bbd26028f
Merge pull request #2392 from nextcloud/fix-disposing-local-stream-when-the-call-activity-is-not-being-left
Fix disposing local stream when the call activity is not being left
2022-09-19 15:17:59 +02:00
Tim Krüger
109124fb3b
Merge pull request #2391 from nextcloud/fix-checking-lobby-state-from-chat-controller-while-in-a-call
Fix checking lobby state from chat controller while in a call
2022-09-19 15:08:54 +02:00
Tim Krüger
e47de0afc9
Merge pull request #2390 from nextcloud/provide-visual-feeback-when-a-participant-is-not-connected
Provide visual feeback when a participant is not connected
2022-09-19 13:56:07 +02:00
Tim Krüger
eb18231e25
Merge pull request #2389 from nextcloud/fix-self-video-size-after-coming-back-from-pip-mode
Fix self video size after coming back from pip mode
2022-09-19 11:05:51 +02:00
Tim Krüger
9712d05843
Merge pull request #2394 from nextcloud/fix-call-not-joined-again-if-reconnecting-while-in-pip-mode
Fix call not joined again if reconnecting while in PiP mode
2022-09-19 10:48:57 +02:00
Tim Krüger
615e67296d
Merge pull request #2388 from nextcloud/fix-issues-when-leaving-calls
Fix issues when leaving calls
2022-09-19 10:25:38 +02:00
Andy Scherzinger
679b601844
Merge pull request #2387 from nextcloud/fix-crash-after-hangup-due-to-modifying-a-list-while-iterating-over-it
Fix crash after hangup due to modifying a list while iterating over it
2022-09-19 09:33:44 +02:00
Daniel Calviño Sánchez
8364877f38
Fix crash after hangup due to modifying a list while iterating over it
"endPeerConnection()" removes the item from the list, so neither a
for-each loop nor an iterator can be used to traverse the list (as a
"ConcurrentModificationException" would be thrown). To solve that now
the list of connections is first traversed to get all the sessions, and
then the list of sessions is traversed to end the connections.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 09:17:12 +02:00
Daniel Calviño Sánchez
13a04808d9 Ignore signaling messages when the call activity is closing
The call activity unregisters from the event bus events when stopped.
However, when the call activity is being closed the new activity can
start before the call activity is stopped; if the new activity causes
new signaling messages to be sent those messages were handled by the
call activity too.

The chat controller joins the conversation again when it is attached,
and the call activity automatically joins the call when it receives a
"roomJoined" event. Due to all that, when the call activity was closed
and the chat controller was opened the call was joined again (and then
left once the call activity was finally destroyed).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 05:52:34 +02:00
Daniel Calviño Sánchez
fdbcc3b16d Close the call activity when leaving the call only if remotely triggered
If the local participant leaves the call the participant list will be
updated with the new call flags. However, that does not necessarily mean
that a moderator ended the call; the call could have been left too by
the Android app due to a forced reconnection or a time out when starting
the call. In those cases the call activity should be kept open, and only
when the local participant left the call due to a remote action the call
activity should be closed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 04:29:04 +02:00
Daniel Calviño Sánchez
f94db44b4d Enforce leaving state when shutting down the activity
When the view is shutting down the call is always left, so the status
should be accordingly set.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 04:27:03 +02:00
Daniel Calviño Sánchez
c21e1d7360 Show message in call state when the publisher failed
When the HPB is used and the publisher fails (which is a disconnection
that can not be automatically solved by itself) a forced reconnection is
triggered. This restarts the call, so some feedback should be provided
in the UI about it.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 01:57:25 +02:00
Daniel Calviño Sánchez
c3f1f6c3a8 Show participant as soon as found rather than once connected
As the participants that are not connected yet are clearly marked as
such now the participants are shown as soon as they are found rather
than waiting for a connection to be established.

There is a drawback, however; if a participant will never have a
connection (for example, if the HPB is used and that participant does
not have publishing permissions) the participant will be endlessly shown
with the progress bar. Nevertheless, before they were not shown at all,
which was probably even more puzzling.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-19 01:46:41 +02:00
Daniel Calviño Sánchez
2f44e6fd19 Show progress bar on local participant when not connected
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 23:26:26 +02:00
Daniel Calviño Sánchez
a76e519219 Show progress bar on remote participant when not connected
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 23:26:26 +02:00
Daniel Calviño Sánchez
c2ef651ce3 Store whether a participant is connected or not
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 23:26:26 +02:00
Daniel Calviño Sánchez
719797b1d1 Notify a data set change only if the properties are set
Note that this still notifies a data set change if the properties are
set to the same value that they had already, but at least it is not
notified when no data was actually changed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 23:26:26 +02:00
Daniel Calviño Sánchez
9f445efc1c Post event when a participant is connected and disconnected
RTCPeerConnections have several states but, for simplicity, for now the
events posted reflect only if the connection is fully established or
not (which includes both a broken connection or an established
connection that is unstable or being updated), which is enough for a
basic information about the connection state in the UI.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 23:25:57 +02:00
Daniel Calviño Sánchez
6481399293 Fix disposing local stream when the call activity is not being left
The local stream is set only when the activity is created. However, it
was disposed when hanging up, which happens not only when closing the
activity, but also in cases in which the call activity is kept open and
the participant reconnects to the call (for example, when starting the
call times out), which caused the local stream to freeze. Now the local
stream is disposed only when the call activity is destroyed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 14:26:58 +02:00
Daniel Calviño Sánchez
c01c052181 Fix call not joined again if reconnecting while in pip mode
When a publisher fails during a call a reconnection is triggered, which
first leaves the call and then initiates it again. Initiating a video
call first request the permissions, but it seems that the request hangs
when done while in PiP mode. Due to this if the publisher fails while in
PiP mode and the call is initiated again the call will be simply left,
without reconnecting to it.

The problem is specific to video calls, as in voice only calls
"onMicrophoneClick" is used instead, and it explicitly checks if the
permissions are already granted. Checking if the permissions are already
granted before requesting them is also recommended in the Android
developer guide, and as the permissions are requested during the
original call initialization it is expected that they will be already
granted if the call is changed to PiP mode, so the problem is work
arounded that way (but if the permissions are not granted when the
publisher fails in PiP mode the problem would still happen, although
that should be quite uncommon).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 14:25:23 +02:00
Daniel Calviño Sánchez
5513f9c88f Fix checking lobby state from chat controller while in a call
The chat controller gets the room information again and again to check
whether the lobby is enabled and update the UI as needed. This loop is
stopped when the chat controller is detached, but only if no call is
active; if a call is active the room information will still be got again
and again, even if the chat controller is detached.

To solve that now getting the room information is simply stopped when
the chat controller is detached, no matter if there is an active call or
not, and started again when joining the room, which is done when the
chat controller is attached.

However, this is just a quick fix that does not solve the issue in all
cases; the loop can still continue during calls, for example if the
request to get the information is sent before detaching the controller
and the response is received once the controller was detached, as that
would start the timer again.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-18 14:24:26 +02:00
Andy Scherzinger
713fc1f10d
Merge pull request #2371 from nextcloud/dependabot/gradle/com.android.tools.build-gradle-7.3.0
Bump gradle from 7.2.2 to 7.3.0
2022-09-16 16:36:33 +02:00
Marcel Hibbe
93da361bf1
fix to keep notification channels
new notification channels must not be deleted. for this an enum was created, so that in removeOldNotificationChannels there is no manual work to do

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-16 15:10:15 +02:00
Andy Scherzinger
5a2b04740b
move streams to utilize "use"
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-16 14:48:23 +02:00
Andy Scherzinger
928b9d5aa3
Remove unneeded nonNull annotations in kotlin
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-16 13:35:45 +02:00
Andy Scherzinger
8acb646383
close streams after use
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-16 13:35:10 +02:00
Daniel Calviño Sánchez
892ffe87dd Fix self video size after coming back from PiP mode
When coming back from PiP mode the self video occupied the full height
of the window. Now the height is set to the default value set in the
layout, so it matches the size used when starting the call activity.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-15 23:41:24 +02:00
Daniel Calviño Sánchez
a605c5df9f Rename dimension to better describe its purpose
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-09-15 23:34:49 +02:00
Marcel Hibbe
d230d0faf2
add chunked upload for files
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-15 16:22:59 +02:00
Marcel Hibbe
b064190d35
add direct video upload
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-09-15 16:22:57 +02:00
Andy Scherzinger
0f35e36047
Improve chat bubble sizes
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-13 10:58:44 +02:00
Tim Krüger
0c06c8b2eb
Rename and reduce complexity of function 'processMessages'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 12:31:03 +02:00
Tim Krüger
ae0a9d6aae
Reduce complexity for 'ChatController#processMessagesFromTheFuture'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 12:19:06 +02:00
Tim Krüger
d0df4039c6
Fix to deeply nested function processHeaderChatLastGiven
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 11:34:59 +02:00
Tim Krüger
5bb63fd58d
Reduce nested block depth for updateReadStatusOfAllMessages
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 10:51:09 +02:00
Tim Krüger
57ddf9af60
Extract duplicated code to function
The newly created function 'ChatController#determinePreviousMessageIds'
contains now the duplicated code from functions
'ChatCtonroller#processMessagesFromTheFuture' and
'ChatController#processMessagesNotFromTheFuture'.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 10:34:45 +02:00
Tim Krüger
4cab75f6ed
Reduce complexity for function 'ChatController#processMessages'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-07 08:56:35 +02:00
Tim Krüger
f762d0c9e5
Remove unused parameter 'timeout' from 'ChatController#processMessages'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 18:04:03 +02:00
Tim Krüger
2d5969964d
Make properties private if possible
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:58:11 +02:00
Tim Krüger
69eea8f568
Use indexing insteat of 'Map#get'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:52:51 +02:00
Tim Krüger
7b1eda1b85
Replace 'Integer#toString' with Kotlin functions
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:52:07 +02:00
Tim Krüger
7dec6dd4dd
Fix some spelling issues
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:50:18 +02:00
Tim Krüger
bb4bccbd08
Simplify boolean expressions
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:44:37 +02:00
Tim Krüger
7c8722bfe4
Convert string concatination to template
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:39:23 +02:00
Tim Krüger
a543bdc7a7
Remove assingments from 'if' clauses
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:35:13 +02:00
Tim Krüger
f347fe1255
Remove unnecessary elvis operator (?:)
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:31:27 +02:00
Tim Krüger
8f6e759d48
Remove unnecessary safe calls and non-null assertions
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-09-06 17:26:09 +02:00
Andy Scherzinger
ffdbead0f7
make system message items smaller in size and end-align the timestamp
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-09-01 09:29:10 +02:00
Álvaro Brey
e5879eb4be
Minor fixes after rebase
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-31 19:54:06 +02:00
Álvaro Brey
704df25a6d
Refactor and extract ViewThemeUtils to common library
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-31 19:54:05 +02:00
Álvaro Brey
009634da53
Extract MaterialSchemesImpl and ColorUtil to commons lib
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-31 19:54:05 +02:00
Álvaro Brey
d18fc7c9f8
Use common library for theming
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-31 19:54:02 +02:00
Tim Krüger
f10d74f0ed
Replace 'List.get(i)' with iterator to loop over list
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-29 19:30:01 +02:00
Andy Scherzinger
62fa8c9645
Improve dialog theming for M3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-29 19:04:27 +02:00
Tim Krüger
1d0ff0bade
Change to not deprecated 'WorkManager.getInstance'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-29 18:58:06 +02:00
Tim Krüger
d8f37bec42
Replace unused lambda parameters by '_'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-29 18:57:59 +02:00
Tim Krüger
84116e4cb2
Add guests access preferences to conversation info
Currently a conversation can be made public via the bottom sheet menu in
the conversation list.

With this commit this is added to the conversation info to align with Talk web
and iOS. The functionality is removed from the bottom sheet menu in the
conversation list.

Resolves: #2134

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-29 18:42:56 +02:00
Marcel Hibbe
4b88effb72
add theming for categoryConversationSettings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-08-24 12:01:20 +02:00
Marcel Hibbe
e43fe4774e
show explanation for expire messages
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-08-24 12:01:20 +02:00
Marcel Hibbe
4bdb78372e
add expiring messages option in conversation info screen
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-08-24 12:01:20 +02:00
Marcel Hibbe
77f69a676b
add system messages for message expiration
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-08-24 12:01:19 +02:00
Marcel Hibbe
b40fab9826
delete expired messages
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-08-24 12:01:19 +02:00
Andy Scherzinger
6f7756a34e prevent NPE if UI has already been teared down
Resolves #2321

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-23 14:18:17 +00:00
Andy Scherzinger
1ed9033aef
Replace lovelyDialogs with Material 3 in conversation info controller
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-19 00:52:43 +02:00
Andy Scherzinger
7124b60a3c
Update authors-list
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-18 23:40:53 +02:00
Andy Scherzinger
d1ec786907
improve detekt score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-18 23:39:20 +02:00
Álvaro Brey
4c5bacc4eb
Rename NewBaseController to just BaseController
Old BaseController is no more!

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 17:20:40 +02:00
Álvaro Brey
447be67caf
Get rid of BaseController, ButterknifeController, and ButterKnife
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 17:19:08 +02:00
Álvaro Brey
f148c0e3c0
ConversationsListController: clean up a bit
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 17:13:36 +02:00
Álvaro Brey
929d6b3964
ConversationListController: use NewBaseController + viewBinding
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 16:58:42 +02:00
Álvaro Brey
6315032e77
ConversationsListController: convert to Kotlin step 2
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 16:36:45 +02:00
Álvaro Brey
dc7337d510
ConversationsListController: convert to Kotlin step 1
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-18 15:30:06 +02:00
Andy Scherzinger
9621f1daf3
Migrate dialogs on ConversationList to Material3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-18 13:40:09 +02:00
Andy Scherzinger
c13b01da33
remove remaining traces of lovelyDialog from settings controller
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-18 13:40:09 +02:00
Tim Krüger
4ef911d045
Load higher resoliton avatars in conversation list (2)
Supplement to commit 546a174f4.

Resolves: #2302

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-16 09:41:08 +02:00
Tim Krüger
546a174f48
Load higher resoliton avatars in conversation list
Instead of a 64px avatar now the 512px version is loaded for
conversation lists. For avatars in a single conversation that was
already the case.

Resolves: #2302

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-15 12:16:05 +02:00
Álvaro Brey
d86622588a
Fix a bunch of easy detekt issues
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-12 14:46:15 +02:00
Tim Krüger
b85ec904c1
Merge pull request #2289 from nextcloud/bugfix/2287/fixSwipeToReply
Make sure to set swipe-to-reply after the room info has been loaded
2022-08-12 09:54:12 +02:00
Andy Scherzinger
5d545d6913
make sure to set swipe-to-reply after the room info has been loaded
Resolves #2287

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 18:17:02 +02:00
Andy Scherzinger
a8422e665a
Add MaterialSchemes and remove any in-line color theming to be replaced with a themeUtils call
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 18:14:03 +02:00
Andy Scherzinger
9298de0d43
replace lovelyDialog with MaterialAlert
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 16:31:05 +02:00
Andy Scherzinger
53f0779a44
replace any use of getElement
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 16:03:57 +02:00
Andy Scherzinger
89a7c5e400
move disabled color calculation to ColorUtil class
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 15:36:11 +02:00
Andy Scherzinger
5f1f34bdfa
dagger injection init moved to onCreate
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 15:29:50 +02:00
Andy Scherzinger
2332c3568c
theme progress bars and remainign alert dialogs
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:51:01 +02:00
Andy Scherzinger
b4530a2e85
Theme preview loader for messages
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:51:01 +02:00
Andy Scherzinger
8027252572
repackage to follow original structure for easy c&p replacements in the future
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:51:00 +02:00
Álvaro Brey
5636d4354b
Put material color utilities in a separate Gradle module
This avoids polluting our main sourceset and makes it easier to substitute for a proper Gradle dependency in the future

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-11 09:51:00 +02:00
Andy Scherzinger
5b983d0ce4
theme link-joining like creation fab-styled imageview
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:51:00 +02:00
Andy Scherzinger
8f812a0841
codacy: shorten UI initialization method
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:51:00 +02:00
Andy Scherzinger
a484d2ab85
codacy: shorten long method by extracting common logic
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:59 +02:00
Andy Scherzinger
5dc248e425
organize imports and remove blank lines
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:59 +02:00
Andy Scherzinger
bb4f073eb3
theme contact chat messages for Material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:59 +02:00
Andy Scherzinger
ed452f1747
fixes after rebase
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:59 +02:00
Andy Scherzinger
14ac0cb1f5
replace LovelyDialog with material version
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:58 +02:00
Andy Scherzinger
fc577dccdf
cleanup themeUtils
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:58 +02:00
Andy Scherzinger
e57eb4442f
Make upload confirmation dialog a material one
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:57 +02:00
Andy Scherzinger
cca35c32af
fixes and cleanup after rebase
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:57 +02:00
Andy Scherzinger
53b5db4f19
remove unused imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:56 +02:00
Andy Scherzinger
e76669439f
Migrate to a new, updated popup bubble based on MaterialButton
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:56 +02:00
Andy Scherzinger
2e8ea52e89
further optimize material coloring for messages, especially time, quotes and read status
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:56 +02:00
Andy Scherzinger
006c893318
Theme call spotlight based on server theme / material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:56 +02:00
Andy Scherzinger
46f6e729a1
Theme info messages primary color
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:55 +02:00
Andy Scherzinger
34d6da68a1
properly theme adapter filter highlighting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:55 +02:00
Andy Scherzinger
8c266fe229
reformat kotlin code
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:55 +02:00
Andy Scherzinger
fa82641f31
theme toolbar icons including overflow icon and search field
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:54 +02:00
Andy Scherzinger
365a7502b4
unify tab layout theming on surface
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:54 +02:00
Andy Scherzinger
1d776ed6bd
tint dialog menu items based onSurface
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:54 +02:00
Andy Scherzinger
cb44a707a9
fix status icon background tint to match dialog background color (surface)
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:54 +02:00
Andy Scherzinger
7e8213d78b
unread chip style now material3 (while not typical chip coloring)
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:53 +02:00
Andy Scherzinger
4c9f5bec2e
proper material 3 reactions theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:53 +02:00
Andy Scherzinger
fd49b13b14
theme checked reactions
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:53 +02:00
Andy Scherzinger
b2e21aef7c
correct themeing for reactions bottom sheet
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:53 +02:00
Andy Scherzinger
02e18046cf
improve outgoing message theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:52 +02:00
Andy Scherzinger
9eb3cbc280
proper chip theming for you-mentions
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:52 +02:00
Andy Scherzinger
9a2d7ee1ff
extend tab layout theming for text / states and ripple effect
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:52 +02:00
Andy Scherzinger
37d88b7ea5
theme Mentions filter
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:52 +02:00
Andy Scherzinger
9a7ef3ca6c
theme generic avatars for Material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:52 +02:00
Andy Scherzinger
1b82d14fbb
theme account switcher button's ripple effect
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:51 +02:00
Andy Scherzinger
e629932262
theme text buttons's ripple color for Material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:51 +02:00
Andy Scherzinger
0d52e8a882
remove unused import
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:51 +02:00
Andy Scherzinger
1ee504870e
Add todo for generic avatar theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:51 +02:00
Andy Scherzinger
f6e215ad63
theme quote deletion image button
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:51 +02:00
Andy Scherzinger
d27f0e2222
preoperly theme quoted messages for Material 3 including alignment
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:50 +02:00
Andy Scherzinger
e3f305c804
Dialogs and bottom sheet to Material 3 background
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:50 +02:00
Andy Scherzinger
2f71a33c05
convert image buttons to fab
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:50 +02:00
Andy Scherzinger
4b4bd2bb6f
remove unneeded divider
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:50 +02:00
Andy Scherzinger
11f78b75fe
Make status dialog more Material 3 aligned
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:49 +02:00
Andy Scherzinger
a53bf16f72
Move chat messages to Material 3
switch to high and mid emphasis color for text in chat bubbles
centralize bubble coloring

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:49 +02:00
Andy Scherzinger
822970f8e8
improve color state calculation for all button types with primary color style
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:49 +02:00
Andy Scherzinger
51cf6061c3
cleanup text theming methods, migrate image button theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:49 +02:00
Andy Scherzinger
ab14d9afff
make font size value a constant
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:49 +02:00
Andy Scherzinger
c10a0a7c65
make filled buttons Material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:48 +02:00
Andy Scherzinger
4d93a2099f
Move theme utils reference to base class and use new status bar coloring in all relevant places
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:48 +02:00
Andy Scherzinger
6075191bc5
TextInputLayout now supports Material 3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:48 +02:00
Andy Scherzinger
0c4513678d
improve search toolbar theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:48 +02:00
Andy Scherzinger
53168d1953
theme account chooser dialog
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:48 +02:00
Andy Scherzinger
a6ba545aef
material 3 theming for search bar, toolbar and fab
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:47 +02:00
Andy Scherzinger
0f997b433d
make theme ship schemes and utilize them in themeing util
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:47 +02:00
Andy Scherzinger
58dc6a9aae
add material 3 color calculation/scheme classes
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-11 09:50:47 +02:00
Andy Scherzinger
ddb033c288
remove unused import
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:23:53 +02:00
Andy Scherzinger
65049b2d2d
accept many functions within utility classes
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:04 +02:00
Andy Scherzinger
11463ea55f
shorten number of return statements
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:04 +02:00
Álvaro Brey
501b75309b
Fix ktlint after rebase
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:03 +02:00
Álvaro Brey
c817d091bf
ViewThemeUtils: remove obsolete TODO
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:03 +02:00
Álvaro Brey
eec323cba8
ThemingCapability: remove obsolete TODO
it works

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:03 +02:00
Álvaro Brey
4abc3839e5
ViewThemeUtils: move things that do not belong in this class
Color calculations go to ColorUtil, checking if dark theme goes to PlatformThemeUtil

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:02 +02:00
Álvaro Brey
a1a91c5c0f
Move current user listening logic out of UserModule and into a new CurrentUserProvider
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:02 +02:00
Álvaro Brey
a45166a9db
Make ColorUtil an injectable and clean up a little
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:22:02 +02:00
Andy Scherzinger
3a9009231d
fix binding changes
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:02 +02:00
Andy Scherzinger
3c865364ac
let current user be null-able
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:01 +02:00
Andy Scherzinger
209c1a90ba
reuse color state list definitions
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:01 +02:00
Andy Scherzinger
b34765ccf4
migrate profile fields to input layouts for Material3
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:01 +02:00
Andy Scherzinger
23d436f314
fix input layout theming dark/light
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:01 +02:00
Andy Scherzinger
6e42a52a9a
fix entry menu bottom sheet input layout text color
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:00 +02:00
Andy Scherzinger
8f02558a8d
Add caching
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:22:00 +02:00
Andy Scherzinger
96c29260ab
set link colors correctly
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:59 +02:00
Andy Scherzinger
e3c535722d
theme all swipe to refresh layouts
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:59 +02:00
Andy Scherzinger
b9e9c35df5
don't tint status icons on cardViews
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:59 +02:00
Andy Scherzinger
eb967fbf7d
harden theming calculations to handle null values
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:59 +02:00
Andy Scherzinger
d4c07f1278
safeguard theme values in case of null values
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:58 +02:00
Andy Scherzinger
d9c59b6f87
organize imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:58 +02:00
Andy Scherzinger
278aaa437f
fix ktlint issues
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:58 +02:00
Andy Scherzinger
9eac0d3615
theme audio device list
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:57 +02:00
Andy Scherzinger
234e97502b
theme reactions bottomsheet
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:57 +02:00
Andy Scherzinger
e9d304a79b
theme outgoing voice message seekbar
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:57 +02:00
Andy Scherzinger
b7006230b8
theme incoming voice message
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:57 +02:00
Andy Scherzinger
f68384e69d
theme folder/archive icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:57 +02:00
Andy Scherzinger
641744ec56
extend outgoing messages' theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:56 +02:00
Andy Scherzinger
0f94b8c473
theme outgoing poll bubble
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:56 +02:00
Andy Scherzinger
a907b1ba51
fix theming for poll button
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:56 +02:00
Andy Scherzinger
9aabb8804e
extend button theming for primary actions to respect states and also cover icons
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:56 +02:00
Andy Scherzinger
e54abe63f1
theme polls and add further theming functions to the utils
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:55 +02:00
Andy Scherzinger
0463a39bfb
Add EditText coloring
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:55 +02:00
Andy Scherzinger
28aae00641
extend text input layout theming
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:55 +02:00
Andy Scherzinger
907386e9b7
add proper button-state coloring for button text/icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:55 +02:00
Andy Scherzinger
aef9b69175
add proper checkbox- state coloring
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:55 +02:00
Andy Scherzinger
7ec78e53f0
first steps to theme poll creation
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:54 +02:00
Andy Scherzinger
9be4358ae0
theme contacts selector icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:54 +02:00
Andy Scherzinger
d1a562cf80
fix after rebase
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-10 19:21:54 +02:00
Álvaro Brey
e5bf5ec261
WIP: theme chat controller and message viewholders
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:21:54 +02:00
Álvaro Brey
3283e5b4f6
ConversationItem: theme unread message bubbles
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:21:54 +02:00
Álvaro Brey
4de7d06e8e
Theme SharedItemsActivity
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:21:53 +02:00
Álvaro Brey
94479d0943
Theme TakePhotoActivity
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:36 +02:00
Álvaro Brey
b66ec4a150
Theme ConversationInfoController
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:36 +02:00
Álvaro Brey
b4ed79dc38
Theme EntryMenuController
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:36 +02:00
Álvaro Brey
49f9e0ffc4
Theme RemoteFileBrowser
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:35 +02:00
Álvaro Brey
a4c01978a8
Theme ProfileController
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:35 +02:00
Álvaro Brey
4c31f6f2e9
SettingsController: theme switch preferences
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:35 +02:00
Álvaro Brey
5abdacab25
SettingsController: color section headers
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:35 +02:00
Álvaro Brey
d60fdd03c5
Color SetStatusDialog and ChooseAccountDialog
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:35 +02:00
Álvaro Brey
4af491c7df
Color search highlights
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:34 +02:00
Álvaro Brey
54d1ac9de7
ContactsController: tint "public conversation" button
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:34 +02:00
Álvaro Brey
5ec18780ff
Color list headers
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:34 +02:00
Álvaro Brey
a8e99862f1
Automatically update current user with room observable
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:34 +02:00
Álvaro Brey
9bbeb9b420
Base framework for server theming
Includes PoC with ConversationListController's FAB

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 19:17:30 +02:00
Andy Scherzinger
768cb06999
Merge pull request #2283 from nextcloud/feature/2029/more-tabs-in-shared-items-view-2
Add tab for deck cards
2022-08-10 18:07:08 +02:00
Álvaro Brey
cdc818b720
ChatController: fix crash when opening conversation from notification
This happens because there is no Conversation object available in the Controller when coming from a notification.

This patch means that when opening a notification for a poll, it will always look like the user is not the owner of the poll even if they are.
This is unfortunately difficult to fix as the initialization logic for ChatController is all kinds of messed up: ideally we'd always load the Conversation object before showing any kind of UI but that's too big of a change to do without tests.

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-08-10 13:10:30 +02:00
Andy Scherzinger
53bdd951ad
Add deck icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-09 23:24:27 +02:00
Tim Krüger
aae7e851c9
Reduce number of return statements
Codacy reported:

  Function itemFromObject has 4 return statements which exceeds the limit of 2.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-09 18:48:25 +02:00
Tim Krüger
43f2d1badf
Shared items: Add tab for deck cards
Deck cards will be opened in the web browser because no specific view
exists.

Resolves: #2029

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-09 18:26:48 +02:00
Tim Krüger
4c8c8ac98a
Shared items: Show actor and date-time
For all item types it will now shown who (actor) and when (date-time)
the item was shared.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-09 18:09:54 +02:00
drone
ed0e9c2374 Merge commit '81a3e8216dd947abfe1038a5ab040f9c67d3a62b' 2022-08-09 12:00:54 +00:00
Tim Krüger
81a3e8216d
Shared items: Add tab for other
Resolves: #2029

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-09 14:00:00 +02:00
Tim Krüger
26fde13292
Shared items: Add tab for locations
Resolves: #2029

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-08 18:52:11 +02:00
Tim Krüger
d5214ee29c
Replace '@JvmField' with 'lateinit'
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-08 18:52:11 +02:00
Tim Krüger
00f06c6ef2
Shared items: Add tab for polls
Resolves: #2029

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-08 18:51:56 +02:00
Andy Scherzinger
9fc7182790
Migrate to updated popup bubble
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-05 16:40:59 +02:00
Andy Scherzinger
9df00a8562
make equals null-safe in case no status set
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-05 16:17:04 +02:00
Tim Krüger
84f2cf432c
Use singular and plural for vote(s) string
Resolves: #2265

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-08-05 10:27:03 +02:00
Andy Scherzinger
3ca3f35e3e
Update app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java
Co-authored-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-04 12:29:24 +02:00
tobiasKaminsky
d1e474e402
Fix status visibility in conversation list
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
2022-08-03 08:24:10 +02:00
Andy Scherzinger
0a3e0230c9
fix avatar voter border
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-01 13:43:05 +02:00
Andy Scherzinger
09ddc86c40
Optimize layout and make it accessible
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-08-01 13:43:05 +02:00
Andy Scherzinger
d999815ffa
remove unused java imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 22:24:18 +02:00
Andy Scherzinger
9b48bfedf6
remove unused imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 22:13:06 +02:00
Andy Scherzinger
f951336d0d
remove unused persistence methods
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 21:55:03 +02:00
Andy Scherzinger
66b2d44739
finish migration to room: remove requery
Resolves #2244

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 21:16:38 +02:00
Andy Scherzinger
125d6770b4
plug cipher migration hook into room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-26 20:33:47 +02:00
Andy Scherzinger
520dbdbdec
organize imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-25 10:59:08 +02:00
Andy Scherzinger
9ab4c58b41
remove all legacy code except basic requery implementation still needed for the cypher upgrade
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-24 14:19:20 +02:00
Andy Scherzinger
99049e01d7
remove all methods of legacy arbitrary storage persistence
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-24 13:41:35 +02:00
Andy Scherzinger
b5040f2d55
Migrate ArbitraryStorageUtils to ArbitraryStorageManager use
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-24 13:41:34 +02:00
Andy Scherzinger
5c6fe628f1
Migrate ArbitraryStorageUtils to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 18:40:32 +02:00
Andy Scherzinger
516b9190ad
fix codacy issues
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 18:27:14 +02:00
Andy Scherzinger
8f6bb87761
remove legacy current user provider and make all methods of legacy user utils private
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:43:17 +02:00
Andy Scherzinger
4d935920d0
Migrate RemoteFileBrowser and UnifiedSearch classes to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:38:05 +02:00
Andy Scherzinger
1a20bd3a3b
Migrate to new current user provider
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:33:45 +02:00
Andy Scherzinger
f3d31bf8c1
add license header and empty line at file end
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:29:13 +02:00
Andy Scherzinger
93dacd25c4
Deprecate CurrentUserProvider
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:27:34 +02:00
Andy Scherzinger
3e08781872
Add removal todo for upcoming major version(s)
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:27:18 +02:00
Andy Scherzinger
bcb728a0d1
Migrate PushUtils from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-07-23 16:21:40 +02:00