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
aa95f9df
Commit
aa95f9df
authored
Feb 26, 2018
by
Leonardo Aramaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unneeded link regex
parent
a9085e1c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
172 deletions
+0
-172
ChatRoomAdapter.kt
...n/java/chat/rocket/android/chatroom/ui/ChatRoomAdapter.kt
+0
-170
MessageParser.kt
...src/main/java/chat/rocket/android/helper/MessageParser.kt
+0
-2
No files found.
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomAdapter.kt
deleted
100644 → 0
View file @
a9085e1c
package
chat.rocket.android.chatroom.ui
import
android.support.v7.widget.RecyclerView
import
android.text.method.LinkMovementMethod
import
android.view.MenuItem
import
android.view.View
import
android.view.ViewGroup
import
android.widget.TextView
import
chat.rocket.android.R
import
chat.rocket.android.chatroom.presentation.ChatRoomPresenter
import
chat.rocket.android.chatroom.ui.bottomsheet.BottomSheetMenu
import
chat.rocket.android.chatroom.ui.bottomsheet.adapter.ActionListAdapter
import
chat.rocket.android.chatroom.viewmodel.AttachmentType
import
chat.rocket.android.chatroom.viewmodel.MessageViewModel
import
chat.rocket.android.player.PlayerActivity
import
chat.rocket.android.util.extensions.content
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.setVisible
import
com.facebook.drawee.view.SimpleDraweeView
import
com.stfalcon.frescoimageviewer.ImageViewer
import
kotlinx.android.synthetic.main.avatar.view.*
import
kotlinx.android.synthetic.main.item_message.view.*
import
kotlinx.android.synthetic.main.message_attachment.view.*
import
ru.whalemare.sheetmenu.extension.inflate
import
ru.whalemare.sheetmenu.extension.toList
class
ChatRoomAdapter
(
private
val
roomType
:
String
,
private
val
roomName
:
String
,
private
val
presenter
:
ChatRoomPresenter
)
:
RecyclerView
.
Adapter
<
ChatRoomAdapter
.
ViewHolder
>()
{
private
val
dataSet
=
ArrayList
<
MessageViewModel
>()
init
{
setHasStableIds
(
true
)
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
=
ViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_message
),
roomType
,
roomName
,
presenter
)
override
fun
onBindViewHolder
(
holder
:
ViewHolder
,
position
:
Int
)
=
holder
.
bind
(
dataSet
[
position
])
override
fun
getItemCount
():
Int
=
dataSet
.
size
override
fun
getItemViewType
(
position
:
Int
):
Int
=
position
override
fun
getItemId
(
position
:
Int
):
Long
=
dataSet
[
position
].
id
.
hashCode
().
toLong
()
fun
addDataSet
(
dataSet
:
List
<
MessageViewModel
>)
{
val
previousDataSetSize
=
this
.
dataSet
.
size
this
.
dataSet
.
addAll
(
previousDataSetSize
,
dataSet
)
notifyItemRangeInserted
(
previousDataSetSize
,
dataSet
.
size
)
}
fun
addItem
(
message
:
MessageViewModel
)
{
dataSet
.
add
(
0
,
message
)
notifyItemInserted
(
0
)
}
fun
updateItem
(
message
:
MessageViewModel
)
{
val
index
=
dataSet
.
indexOfFirst
{
it
.
id
==
message
.
id
}
if
(
index
>
-
1
)
{
dataSet
[
index
]
=
message
notifyItemChanged
(
index
)
}
}
fun
removeItem
(
messageId
:
String
)
{
val
index
=
dataSet
.
indexOfFirst
{
it
.
id
==
messageId
}
if
(
index
>
-
1
)
{
dataSet
.
removeAt
(
index
)
notifyItemRemoved
(
index
)
}
}
class
ViewHolder
(
itemView
:
View
,
val
roomType
:
String
,
val
roomName
:
String
,
val
presenter
:
ChatRoomPresenter
)
:
RecyclerView
.
ViewHolder
(
itemView
),
MenuItem
.
OnMenuItemClickListener
{
private
lateinit
var
messageViewModel
:
MessageViewModel
fun
bind
(
message
:
MessageViewModel
)
=
with
(
itemView
)
{
messageViewModel
=
message
image_avatar
.
setImageURI
(
message
.
avatarUri
)
text_sender
.
text
=
message
.
senderName
text_message_time
.
content
=
message
.
time
text_content
.
content
=
message
.
content
text_content
.
movementMethod
=
LinkMovementMethod
()
bindAttachment
(
message
,
message_attachment
,
image_attachment
,
audio_video_attachment
,
file_name
)
text_content
.
setOnClickListener
{
if
(!
message
.
isSystemMessage
)
{
val
menuItems
=
it
.
context
.
inflate
(
R
.
menu
.
message_actions
).
toList
()
menuItems
.
find
{
it
.
itemId
==
R
.
id
.
action_menu_msg_pin_unpin
}
?.
apply
{
val
isPinned
=
message
.
isPinned
setTitle
(
if
(
isPinned
)
R
.
string
.
action_msg_unpin
else
R
.
string
.
action_msg_pin
)
setChecked
(
isPinned
)
}
val
adapter
=
ActionListAdapter
(
menuItems
,
this
@ViewHolder
)
BottomSheetMenu
(
adapter
).
show
(
it
.
context
)
}
}
}
override
fun
onMenuItemClick
(
item
:
MenuItem
):
Boolean
{
messageViewModel
.
apply
{
when
(
item
.
itemId
)
{
R
.
id
.
action_menu_msg_delete
->
presenter
.
deleteMessage
(
roomId
,
id
)
R
.
id
.
action_menu_msg_quote
->
presenter
.
citeMessage
(
roomType
,
roomName
,
id
,
false
)
R
.
id
.
action_menu_msg_reply
->
presenter
.
citeMessage
(
roomType
,
roomName
,
id
,
true
)
R
.
id
.
action_menu_msg_copy
->
presenter
.
copyMessage
(
id
)
R
.
id
.
action_menu_msg_edit
->
presenter
.
editMessage
(
roomId
,
id
,
getOriginalMessage
())
R
.
id
.
action_menu_msg_pin_unpin
->
{
with
(
item
)
{
if
(!
isChecked
)
{
presenter
.
pinMessage
(
id
)
}
else
{
presenter
.
unpinMessage
(
id
)
}
}
}
else
->
TODO
(
"Not implemented"
)
}
}
return
true
}
private
fun
bindAttachment
(
message
:
MessageViewModel
,
attachment_container
:
View
,
image_attachment
:
SimpleDraweeView
,
audio_video_attachment
:
View
,
file_name
:
TextView
)
{
with
(
message
)
{
if
(
attachmentUrl
==
null
||
attachmentType
==
null
)
{
attachment_container
.
setVisible
(
false
)
return
}
var
imageVisible
=
false
var
videoVisible
=
false
attachment_container
.
setVisible
(
true
)
when
(
message
.
attachmentType
)
{
is
AttachmentType
.
Image
->
{
imageVisible
=
true
image_attachment
.
setImageURI
(
message
.
attachmentUrl
)
image_attachment
.
setOnClickListener
{
view
->
// TODO - implement a proper image viewer with a proper Transition
ImageViewer
.
Builder
(
view
.
context
,
listOf
(
message
.
attachmentUrl
))
.
setStartPosition
(
0
)
.
show
()
}
}
is
AttachmentType
.
Video
,
is
AttachmentType
.
Audio
->
{
videoVisible
=
true
audio_video_attachment
.
setOnClickListener
{
view
->
message
.
attachmentUrl
?.
let
{
url
->
PlayerActivity
.
play
(
view
.
context
,
url
)
}
}
}
}
image_attachment
.
setVisible
(
imageVisible
)
audio_video_attachment
.
setVisible
(
videoVisible
)
file_name
.
text
=
message
.
attachmentTitle
}
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/helper/MessageParser.kt
View file @
aa95f9df
...
@@ -34,8 +34,6 @@ class MessageParser @Inject constructor(val context: Application, private val co
...
@@ -34,8 +34,6 @@ class MessageParser @Inject constructor(val context: Application, private val co
private
val
parser
=
Markwon
.
createParser
()
private
val
parser
=
Markwon
.
createParser
()
private
val
regexUsername
=
Pattern
.
compile
(
"([^\\S]|^)+(@[\\w.\\-]+)"
,
private
val
regexUsername
=
Pattern
.
compile
(
"([^\\S]|^)+(@[\\w.\\-]+)"
,
Pattern
.
MULTILINE
or
Pattern
.
CASE_INSENSITIVE
)
Pattern
.
MULTILINE
or
Pattern
.
CASE_INSENSITIVE
)
private
val
regexLink
=
Pattern
.
compile
(
"(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&/=]*)"
,
Pattern
.
MULTILINE
or
Pattern
.
CASE_INSENSITIVE
)
private
val
selfReferList
=
listOf
(
"@all"
,
"@here"
)
private
val
selfReferList
=
listOf
(
"@all"
,
"@here"
)
/**
/**
...
...
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