Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
AloqaIM-Android
Commits
d34e779d
Unverified
Commit
d34e779d
authored
May 14, 2019
by
Filipe Brito
Committed by
GitHub
May 14, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2212 from Adizbek/swipe-to-reply
[NEW] Swipe to reply message
parents
723d155d
7f4982bd
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
66 additions
and
19 deletions
+66
-19
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+66
-19
No files found.
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
d34e779d
...
...
@@ -29,14 +29,17 @@ import androidx.core.view.isVisible
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.FragmentManager
import
androidx.recyclerview.widget.DefaultItemAnimator
import
androidx.recyclerview.widget.ItemTouchHelper
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
chat.rocket.android.R
import
chat.rocket.android.analytics.AnalyticsManager
import
chat.rocket.android.analytics.event.ScreenViewEvent
import
chat.rocket.android.chatroom.adapter.AttachmentViewHolder
import
chat.rocket.android.chatroom.adapter.ChatRoomAdapter
import
chat.rocket.android.chatroom.adapter.CommandSuggestionsAdapter
import
chat.rocket.android.chatroom.adapter.EmojiSuggestionsAdapter
import
chat.rocket.android.chatroom.adapter.MessageViewHolder
import
chat.rocket.android.chatroom.adapter.PEOPLE
import
chat.rocket.android.chatroom.adapter.PeopleSuggestionsAdapter
import
chat.rocket.android.chatroom.adapter.RoomSuggestionsAdapter
...
...
@@ -156,7 +159,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
lateinit
var
analyticsManager
:
AnalyticsManager
@Inject
lateinit
var
navigator
:
ChatRoomNavigator
private
lateinit
var
a
dapter
:
ChatRoomAdapter
private
lateinit
var
chatRoomA
dapter
:
ChatRoomAdapter
internal
lateinit
var
chatRoomId
:
String
private
lateinit
var
chatRoomName
:
String
internal
lateinit
var
chatRoomType
:
String
...
...
@@ -289,7 +292,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
a
dapter
=
ChatRoomAdapter
(
chatRoomA
dapter
=
ChatRoomAdapter
(
roomId
=
chatRoomId
,
roomType
=
chatRoomType
,
roomName
=
chatRoomName
,
...
...
@@ -388,7 +391,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
override
fun
showMessages
(
dataSet
:
List
<
BaseUiModel
<*
>>,
clearDataSet
:
Boolean
)
{
ui
{
if
(
clearDataSet
)
{
a
dapter
.
clearData
()
chatRoomA
dapter
.
clearData
()
}
if
(
dataSet
.
isNotEmpty
())
{
...
...
@@ -429,22 +432,22 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
val
oldMessagesCount
=
a
dapter
.
itemCount
a
dapter
.
appendData
(
dataSet
)
val
oldMessagesCount
=
chatRoomA
dapter
.
itemCount
chatRoomA
dapter
.
appendData
(
dataSet
)
if
(
oldMessagesCount
==
0
&&
dataSet
.
isNotEmpty
())
{
recycler_view
.
scrollToPosition
(
0
)
verticalScrollOffset
.
set
(
0
)
}
empty_chat_view
.
isVisible
=
a
dapter
.
itemCount
==
0
empty_chat_view
.
isVisible
=
chatRoomA
dapter
.
itemCount
==
0
dismissEmojiKeyboard
()
}
}
override
fun
showSearchedMessages
(
dataSet
:
List
<
BaseUiModel
<*
>>)
{
recycler_view
.
removeOnScrollListener
(
endlessRecyclerViewScrollListener
)
a
dapter
.
clearData
()
a
dapter
.
prependData
(
dataSet
)
empty_chat_view
.
isVisible
=
a
dapter
.
itemCount
==
0
chatRoomA
dapter
.
clearData
()
chatRoomA
dapter
.
prependData
(
dataSet
)
empty_chat_view
.
isVisible
=
chatRoomA
dapter
.
itemCount
==
0
dismissEmojiKeyboard
()
}
...
...
@@ -527,7 +530,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
override
fun
showNewMessage
(
message
:
List
<
BaseUiModel
<*
>>,
isMessageReceived
:
Boolean
)
{
ui
{
a
dapter
.
prependData
(
message
)
chatRoomA
dapter
.
prependData
(
message
)
if
(
isMessageReceived
&&
button_fab
.
isVisible
)
{
newMessageCount
++
if
(
newMessageCount
<=
99
)
{
...
...
@@ -540,7 +543,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
recycler_view
.
scrollToPosition
(
0
)
}
verticalScrollOffset
.
set
(
0
)
empty_chat_view
.
isVisible
=
a
dapter
.
itemCount
==
0
empty_chat_view
.
isVisible
=
chatRoomA
dapter
.
itemCount
==
0
dismissEmojiKeyboard
()
}
}
...
...
@@ -550,9 +553,9 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
// TODO - investigate WHY we get a empty list here
if
(
message
.
isEmpty
())
return
@ui
if
(
a
dapter
.
updateItem
(
message
.
last
()))
{
if
(
chatRoomA
dapter
.
updateItem
(
message
.
last
()))
{
if
(
message
.
size
>
1
)
{
a
dapter
.
prependData
(
listOf
(
message
.
first
()))
chatRoomA
dapter
.
prependData
(
listOf
(
message
.
first
()))
}
}
else
{
showNewMessage
(
message
,
true
)
...
...
@@ -563,7 +566,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
override
fun
dispatchDeleteMessage
(
msgId
:
String
)
{
ui
{
a
dapter
.
removeItem
(
msgId
)
chatRoomA
dapter
.
removeItem
(
msgId
)
}
}
...
...
@@ -793,11 +796,55 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
recycler_view
.
adapter
=
adapter
recycler_view
.
addOnScrollListener
(
fabScrollListener
)
recycler_view
.
addOnScrollListener
(
endlessRecyclerViewScrollListener
)
recycler_view
.
addOnLayoutChangeListener
(
layoutChangeListener
)
recycler_view
.
addOnScrollListener
(
onScrollListener
)
with
(
recycler_view
)
{
adapter
=
chatRoomAdapter
addOnScrollListener
(
endlessRecyclerViewScrollListener
)
addOnLayoutChangeListener
(
layoutChangeListener
)
addOnScrollListener
(
onScrollListener
)
addOnScrollListener
(
fabScrollListener
)
}
if
(!
isReadOnly
)
{
val
touchCallback
:
ItemTouchHelper
.
SimpleCallback
=
object
:
ItemTouchHelper
.
SimpleCallback
(
0
,
ItemTouchHelper
.
LEFT
)
{
override
fun
onMove
(
recyclerView
:
RecyclerView
,
viewHolder
:
RecyclerView
.
ViewHolder
,
target
:
RecyclerView
.
ViewHolder
):
Boolean
{
return
true
}
override
fun
onSwiped
(
viewHolder
:
RecyclerView
.
ViewHolder
,
direction
:
Int
)
{
var
replyId
:
String
?
=
null
when
(
viewHolder
)
{
is
MessageViewHolder
->
replyId
=
viewHolder
.
data
?.
messageId
is
AttachmentViewHolder
->
replyId
=
viewHolder
.
data
?.
messageId
}
replyId
?.
let
{
citeMessage
(
chatRoomName
,
chatRoomType
,
it
,
true
)
}
chatRoomAdapter
.
notifyItemChanged
(
viewHolder
.
adapterPosition
)
}
override
fun
getSwipeDirs
(
recyclerView
:
RecyclerView
,
viewHolder
:
RecyclerView
.
ViewHolder
):
Int
{
// Currently enable swipes for text and attachment messages only
if
(
viewHolder
is
MessageViewHolder
||
viewHolder
is
AttachmentViewHolder
)
{
return
super
.
getSwipeDirs
(
recyclerView
,
viewHolder
)
}
return
0
}
}
ItemTouchHelper
(
touchCallback
).
attachToRecyclerView
(
recycler_view
)
}
}
private
fun
setupFab
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment