Skip to content

Commit 78883ef

Browse files
feat(chat): Double tap on message to react
Resolves #5240 Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
1 parent d4e994f commit 78883ef

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import android.net.Uri
2929
import android.os.Build
3030
import android.os.Bundle
3131
import android.os.Handler
32+
import android.os.SystemClock
3233
import android.provider.ContactsContract
3334
import android.provider.MediaStore
3435
import android.provider.Settings
@@ -39,6 +40,7 @@ import android.view.Gravity
3940
import android.view.Menu
4041
import android.view.MenuItem
4142
import android.view.View
43+
import android.view.ViewConfiguration
4244
import android.view.ViewGroup
4345
import android.view.WindowManager
4446
import android.view.animation.AccelerateDecelerateInterpolator
@@ -263,6 +265,7 @@ class ChatActivity :
263265
MessagesListAdapter.OnLoadMoreListener,
264266
MessagesListAdapter.Formatter<Date>,
265267
MessagesListAdapter.OnMessageViewLongClickListener<IMessage>,
268+
MessagesListAdapter.OnMessageClickListener<IMessage>,
266269
ContentChecker<ChatMessage>,
267270
VoiceMessageInterface,
268271
CommonMessageInterface,
@@ -386,6 +389,8 @@ class ChatActivity :
386389
var credentials: String? = null
387390
var currentConversation: ConversationModel? = null
388391
var adapter: TalkMessagesListAdapter<ChatMessage>? = null
392+
private var lastMessageClickTime = 0L
393+
private var lastMessageId = ""
389394
var mentionAutocomplete: Autocomplete<*>? = null
390395
var layoutManager: LinearLayoutManager? = null
391396
var pullChatMessagesPending = false
@@ -1644,6 +1649,7 @@ class ChatActivity :
16441649
adapter?.setLoadMoreListener(this)
16451650
adapter?.setDateHeadersFormatter { format(it) }
16461651
adapter?.setOnMessageViewLongClickListener { view, message -> onMessageViewLongClick(view, message) }
1652+
adapter?.setOnMessageClickListener{ message -> onMessageClick(message) }
16471653

16481654
adapter?.registerViewClickListener(
16491655
R.id.playPauseBtn
@@ -4087,6 +4093,20 @@ class ChatActivity :
40874093
openMessageActionsDialog(message)
40884094
}
40894095

4096+
override fun onMessageClick(message: IMessage) {
4097+
val now = SystemClock.elapsedRealtime()
4098+
if (now - lastMessageClickTime < ViewConfiguration.getDoubleTapTimeout() &&
4099+
message.id?.equals(lastMessageId) == true
4100+
) {
4101+
openMessageActionsDialog(message)
4102+
lastMessageClickTime = 0L
4103+
lastMessageId = ""
4104+
} else {
4105+
lastMessageClickTime = now
4106+
lastMessageId = message.id
4107+
}
4108+
}
4109+
40904110
override fun onPreviewMessageLongClick(chatMessage: ChatMessage) {
40914111
onOpenMessageActionsDialog(chatMessage)
40924112
}

0 commit comments

Comments
 (0)