Commit Graph

71 Commits

Author SHA1 Message Date
Smarshall
7de538be95 Merge remote-tracking branch 'origin/Share' into Share 2023-08-30 15:42:57 +05:30
Smarshall
9c8f05fa04 Fixed media/photo share functionality 2023-08-30 15:42:47 +05:30
Smarshall
762288e3da
Merge branch 'master' into Share 2023-08-29 01:28:46 +05:30
Smarshall
85833c6f41 Implemented media/photo share functionality 2023-08-29 01:22:57 +05:30
Julius Linus
e1f538a9e6 message draft bug fix
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-08-28 10:30:24 -05:00
Julius Linus
e29ad8f734
detekt
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-08-25 10:03:30 +02:00
rapterjet2004
cc0815de0f
fixed media recorder bug
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-08-25 10:03:29 +02:00
Marcel Hibbe
bc425bc0d3
apply changes by ktlintFormat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-08-24 09:45:57 +02:00
Smarshall
4121f538c0
Merge branch 'master' into Snackbar
Signed-off-by: Smarshall <99678760+Smarshal21@users.noreply.github.com>
2023-08-19 17:57:28 +05:30
Smarshall
a447196257 Replaced all the Toasts with Snackbar 2023-08-19 17:38:52 +05:30
Julius Linus
31cedf0da5 Migration away from getScheme() calls
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-08-10 14:47:17 +02:00
Julius Linus
1af04d2bd3 Follow up fixes
- Larger Bar gap
- Centered time below play/pause button
- Time is the same color as the play/pause button

Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-08-02 14:14:59 -05:00
Julius Linus
2430f725d6 AudioUtils and Waveform Seekbar
- Created AudioUtils for processing audio messages
- Created Waveform Seekbar, for visualizing a FloatArray
- Time limit of about 5 seconds, else shows regular seekbar
- Also made mediaPlayer smoother
- Fixed time discontinuity bug when playing voice messages, but only on API 28 or higher
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-08-01 12:35:15 -05:00
Julius Linus
e5afa96e26 In this PR
- Drafts are now saved in between rooms.

Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-08-01 10:34:49 -05:00
Andy Scherzinger
4b89ceeb54
Implement status infos on chat view
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-07-28 10:04:29 +02:00
rapterjet2004
6654f6aa74 WIP
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-07-19 20:18:27 -05:00
rapterjet2004
21dbd65870 Fixed MicInputCloud + Detekt issues
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-07-19 13:24:53 -05:00
Julius Linus
f0ba16a275
Issue 2790, allows for continuous voice recording on swipe up, and for previewing messages
- I did a bunch of UI logic in ChatActivity and view_message_input, mainly in setting up the recording interface
- I created a custom component, MicInputCloud, under the hood it's 3 ovals, with a hole cut in the center for the icon. The ovals are at around 50% opacity, and they each have their own rotations and size changes animated. General rotation speed and colors can be overridden by the activity implementing it.
- I also added a floating action button to activity_chat, to show when the voice recording is locked or not.
- I can replay or pause preview voice recordings before sending or deleting
- Preview voice recording is now smoother and click boxes are bigger and well defined
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-07-19 11:42:41 +02:00
Marcel Hibbe
61ff44a643 add logging and minor refactoring
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-18 13:15:01 +02:00
Julius Linus
bb45ebd3b8 Issue 3142
- Added duration of the voice message playing
- Fixed the seekbar bug, and made it more smoother

Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-07-14 11:32:15 -05:00
Marcel Hibbe
8f3a3570e9
Add logging for websockets
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-13 13:32:43 +02:00
Marcel Hibbe
fee6630b9c avoid ArrayIndexOutOfBoundsException when swiping to reply.
This does not fix the root cause. So probably position should not be -1 here.
However if it is -1, this commit avoids the following exception and swiping to reply simply won't work.

Exception java.lang.ArrayIndexOutOfBoundsException: length=163; index=-1
  at java.util.ArrayList.get (ArrayList.java:439)
  at com.nextcloud.talk.chat.ChatActivity$setupSwipeToReply$messageSwipeController$1.showReplyUI (ChatActivity.kt:1144)
  at com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback.setTouchListener$lambda$0 (MessageSwipeCallback.kt:137)
  at com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback.$r8$lambda$hYMm2zsKL8yVqo4e364Wb8cWEW8
  at com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback$$ExternalSyntheticLambda0.onTouch
  at android.view.View.dispatchTouchEvent (View.java:15046)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3115)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2788)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:500)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1912)
  at android.app.Activity.dispatchTouchEvent (Activity.java:4299)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:70)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:458)
  at android.view.View.dispatchPointerEvent (View.java:15309)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6778)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6578)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6034)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6091)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6057)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:6222)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6065)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6279)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6038)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6091)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6057)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6065)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6038)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:9206)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:9157)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:9126)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:9329)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:267)
  at android.os.MessageQueue.nativePollOnce
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loopOnce (Looper.java:161)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7918)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-07 12:58:09 +02:00
Marcel Hibbe
c4fbc0ab05 solve detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-06 10:29:55 +02:00
Marcel Hibbe
18d4d42e8f fix to refresh chat after conversation screen was in background.
without this fix, it could happen that pullChatMessagesPending remains true after the conversation screen was in background. As a result the check

if (pullChatMessagesPending) {
     Log.d(TAG, "pullChatMessages - pullChatMessagesPending is true, exiting")
     return
}

in pullChatMessages() always returns without to pull chat messages (so there was even no long-polling anymore).

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-06 10:29:55 +02:00
Marcel Hibbe
817ea1ab64 Avoid to send conversation and user via intent
sending too much data via intent always is a bad pattern which can lead to TransactionTooLargeException.

When OpenAI translation is enabled, the capabilities contain a ton of translation combinations. These capabilities are contained in 'currentUser' as well in 'selectedConversation'. So, TransactionTooLargeException was thrown.

this PR:
- avoids passing too much data as parcelables in intents (esp. conversation and user)
- introduces MVVM patterns to load required data (esp conversation) from backend (for now via requests, in the future from database first)
- introduces ConversationModel which is created out of the Conversation json model
- loads user data via injection when possible
- creates some quickfixes in ConversationBottomDialog, EntryMenuController and OperationsMenuController.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-06-30 07:30:18 +02:00
Julius Linus
fa5e0fb01d Can now open preview messages in the files app in message actions
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-06-29 09:54:02 +02:00
Marcel Hibbe
7f51d45e9a
Align typing indicator to new concept
# Send start/stop typing
Send "Typing" every 10 sec when there was a change

Send stop typing:
- when input is deleted
- when there was no input during the 10s timer
- when on leaving room

# Receive start/stop typing
Clear typing for participant after 15s if no start typing-message was received.
Use userId instead sessionId to manage typing participants. This ensures participants are not shown multiple times when using multiple devices with the same user (multisession). To get the userId via websocket, SignalingMessageReceiver and WebSocketInstance had to be modified to pass the CallWebSocketMessage in case the signalingMessage.type is related to typing. Not sure if this is the best solution but didn't find any other way.

Typing is not handled when the userId is of the own user (this could happen when using multiple devices)

In case userId is null (which happens for guests), their sessionId is used as key for the typingParticipants map.

# Other
Disable setting for typing indicator when no HPB is used + Avoid crash in chat when no HPB is used.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-06-02 15:35:16 +02:00
Marcel Hibbe
d127c5401a
fix new onBackPressed handling
this commit fixes bugs from d3056ff2825e53040ca49b86b84f91f73a3eb11c and 1185dcf17a99ca62efd32f8a53c298ec4fd6c4d0

fix onBackPressed handling to use OnBackPressedCallback

remove unnecessary onBackPressedCallback's when they only finished the activity

replaced some finishAffinity methods with finish

...

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:09 +02:00
Ezhil Shanmugham
64fa8e830b
Made suggested changes in FullScreenImageActivity.kt, ConversationsListActivity.kt and in some files Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:09 +02:00
Andy Scherzinger
f7e5881d87
Fix any detekt formatting issues
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 09:38:56 +02:00
Andy Scherzinger
5ec013143f
Migrate theme API calls - away from deprecated ones
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 09:08:18 +02:00
Julius Linus
528f1fd431
Merge branch 'master' into translate-message-mvvm-impl
Signed-off-by: Julius Linus <69230048+rapterjet2004@users.noreply.github.com>
2023-05-23 08:07:40 -05:00
Marcel Hibbe
9a76ce7ccd
fix to close gap between typing indicator and message input
otherwise chat content was visible in between

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 12:06:02 +02:00
Marcel Hibbe
5a97e90a82
improve detekt score: avoid magicNumbers...
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 11:34:38 +02:00
Marcel Hibbe
f0a9a302bb
make typing indicator two lines if necessary
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:31 +02:00
Marcel Hibbe
7b12f27a1a
move typing indicator methods
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:31 +02:00
Marcel Hibbe
fa4d02e2c6
send stoppedTyping signaling message when sending chat message
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:31 +02:00
Marcel Hibbe
add5e518e1
use height from typingIndicator layout
no need to define it redundant...

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:30 +02:00
Marcel Hibbe
231cfef8c3
check capabilities to use/ignore typing indicators
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:30 +02:00
Marcel Hibbe
ecec266765
improve typing indicator design
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:30 +02:00
Marcel Hibbe
6adca2395d
add handling for multiple typing participants
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:29 +02:00
Marcel Hibbe
85f637ca8a
WIP. update UI when typing message received
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:29 +02:00
Marcel Hibbe
50e7af4d04
add timer for typing logic
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:29 +02:00
Marcel Hibbe
16d2d3d693
add timer for typing logic
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:29 +02:00
Marcel Hibbe
6228ec8d75
add sending of "typing" signaling messages
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:28 +02:00
Marcel Hibbe
8997c3b5c7
add receiving of "typing" signaling messages
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:28 +02:00
Marcel Hibbe
05b57dc4c7
rename controller_chat.xml to activity_chat.xml
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-23 10:49:28 +02:00
rapterjet2004
c62a904c82 WIP rewriting translate feature to use MVVM
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-05-19 17:12:37 -05:00
Andy Scherzinger
ac0f8608a7
Add licence headers and optimize/theme translation layout
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-17 10:53:52 +02:00
rapterjet2004
8cdd8e9d8f
issue 2931 progress
Signed-off-by: Julius Linus <juliuslinus1@gmail.com>

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-17 10:53:52 +02:00