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
e70f3bef
Commit
e70f3bef
authored
Jun 30, 2018
by
divyanshu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resolve conflicts
parent
3b1036fc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
139 additions
and
32 deletions
+139
-32
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+139
-32
No files found.
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
e70f3bef
package
chat.rocket.android.chatroom.ui
package
chat.rocket.android.chatroom.ui
import
android.app.Activity
import
android.app.Activity
import
android.app.AlertDialog
import
android.content.ClipData
import
android.content.ClipData
import
android.content.ClipboardManager
import
android.content.ClipboardManager
import
android.content.Context
import
android.content.Context
...
@@ -16,6 +17,7 @@ import android.view.MenuInflater
...
@@ -16,6 +17,7 @@ import android.view.MenuInflater
import
android.view.MenuItem
import
android.view.MenuItem
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.*
import
androidx.annotation.DrawableRes
import
androidx.annotation.DrawableRes
import
androidx.core.text.bold
import
androidx.core.text.bold
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
...
@@ -56,6 +58,8 @@ import chat.rocket.android.util.extensions.rotateBy
...
@@ -56,6 +58,8 @@ import chat.rocket.android.util.extensions.rotateBy
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.textContent
import
chat.rocket.android.util.extensions.textContent
import
chat.rocket.android.util.extensions.ui
import
chat.rocket.android.util.extensions.ui
import
chat.rocket.android.util.extensions.getMimeType
import
chat.rocket.android.util.extensions.getFileName
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.core.internal.realtime.socket.model.State
import
chat.rocket.core.internal.realtime.socket.model.State
...
@@ -76,10 +80,11 @@ fun newInstance(
...
@@ -76,10 +80,11 @@ fun newInstance(
chatRoomId
:
String
,
chatRoomId
:
String
,
chatRoomName
:
String
,
chatRoomName
:
String
,
chatRoomType
:
String
,
chatRoomType
:
String
,
is
ChatRoom
ReadOnly
:
Boolean
,
isReadOnly
:
Boolean
,
chatRoomLastSeen
:
Long
,
chatRoomLastSeen
:
Long
,
isSubscribed
:
Boolean
=
true
,
isSubscribed
:
Boolean
=
true
,
isChatRoomCreator
:
Boolean
=
false
,
isCreator
:
Boolean
=
false
,
isFavorite
:
Boolean
=
false
,
chatRoomMessage
:
String
?
=
null
chatRoomMessage
:
String
?
=
null
):
Fragment
{
):
Fragment
{
return
ChatRoomFragment
().
apply
{
return
ChatRoomFragment
().
apply
{
...
@@ -87,10 +92,11 @@ fun newInstance(
...
@@ -87,10 +92,11 @@ fun newInstance(
putString
(
BUNDLE_CHAT_ROOM_ID
,
chatRoomId
)
putString
(
BUNDLE_CHAT_ROOM_ID
,
chatRoomId
)
putString
(
BUNDLE_CHAT_ROOM_NAME
,
chatRoomName
)
putString
(
BUNDLE_CHAT_ROOM_NAME
,
chatRoomName
)
putString
(
BUNDLE_CHAT_ROOM_TYPE
,
chatRoomType
)
putString
(
BUNDLE_CHAT_ROOM_TYPE
,
chatRoomType
)
putBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
,
is
ChatRoom
ReadOnly
)
putBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
,
isReadOnly
)
putLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
,
chatRoomLastSeen
)
putLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
,
chatRoomLastSeen
)
putBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
,
isSubscribed
)
putBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
,
isSubscribed
)
putBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
,
isChatRoomCreator
)
putBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
,
isCreator
)
putBoolean
(
BUNDLE_CHAT_ROOM_IS_FAVORITE
,
isFavorite
)
putString
(
BUNDLE_CHAT_ROOM_MESSAGE
,
chatRoomMessage
)
putString
(
BUNDLE_CHAT_ROOM_MESSAGE
,
chatRoomMessage
)
}
}
}
}
...
@@ -104,8 +110,16 @@ private const val REQUEST_CODE_FOR_PERFORM_SAF = 42
...
@@ -104,8 +110,16 @@ private const val REQUEST_CODE_FOR_PERFORM_SAF = 42
private
const
val
BUNDLE_CHAT_ROOM_LAST_SEEN
=
"chat_room_last_seen"
private
const
val
BUNDLE_CHAT_ROOM_LAST_SEEN
=
"chat_room_last_seen"
private
const
val
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
=
"chat_room_is_subscribed"
private
const
val
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
=
"chat_room_is_subscribed"
private
const
val
BUNDLE_CHAT_ROOM_IS_CREATOR
=
"chat_room_is_creator"
private
const
val
BUNDLE_CHAT_ROOM_IS_CREATOR
=
"chat_room_is_creator"
private
const
val
BUNDLE_CHAT_ROOM_IS_FAVORITE
=
"chat_room_is_favorite"
private
const
val
BUNDLE_CHAT_ROOM_MESSAGE
=
"chat_room_message"
private
const
val
BUNDLE_CHAT_ROOM_MESSAGE
=
"chat_room_message"
private
const
val
MENU_ACTION_FAVORITE_UNFAVORITE_CHAT
=
1
private
const
val
MENU_ACTION_MEMBER
=
2
private
const
val
MENU_ACTION_MENTIONS
=
3
private
const
val
MENU_ACTION_PINNED_MESSAGES
=
4
private
const
val
MENU_ACTION_FAVORITE_MESSAGES
=
5
private
const
val
MENU_ACTION_FILES
=
6
class
ChatRoomFragment
:
Fragment
(),
ChatRoomView
,
EmojiKeyboardListener
,
EmojiReactionListener
{
class
ChatRoomFragment
:
Fragment
(),
ChatRoomView
,
EmojiKeyboardListener
,
EmojiReactionListener
{
@Inject
@Inject
...
@@ -118,8 +132,9 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -118,8 +132,9 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
private
lateinit
var
chatRoomType
:
String
private
lateinit
var
chatRoomType
:
String
private
var
chatRoomMessage
:
String
?
=
null
private
var
chatRoomMessage
:
String
?
=
null
private
var
isSubscribed
:
Boolean
=
true
private
var
isSubscribed
:
Boolean
=
true
private
var
isChatRoomReadOnly
:
Boolean
=
false
private
var
isReadOnly
:
Boolean
=
false
private
var
isChatRoomCreator
:
Boolean
=
false
private
var
isCreator
:
Boolean
=
false
private
var
isFavorite
:
Boolean
=
false
private
var
isBroadcastChannel
:
Boolean
=
false
private
var
isBroadcastChannel
:
Boolean
=
false
private
lateinit
var
emojiKeyboardPopup
:
EmojiKeyboardPopup
private
lateinit
var
emojiKeyboardPopup
:
EmojiKeyboardPopup
private
var
chatRoomLastSeen
:
Long
=
-
1
private
var
chatRoomLastSeen
:
Long
=
-
1
...
@@ -158,10 +173,11 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -158,10 +173,11 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
chatRoomName
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_NAME
)
chatRoomName
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_NAME
)
chatRoomType
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_TYPE
)
chatRoomType
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_TYPE
)
is
ChatRoom
ReadOnly
=
bundle
.
getBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
)
isReadOnly
=
bundle
.
getBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
)
isSubscribed
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
)
isSubscribed
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
)
chatRoomLastSeen
=
bundle
.
getLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
)
chatRoomLastSeen
=
bundle
.
getLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
)
isChatRoomCreator
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
)
isCreator
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
)
isFavorite
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_FAVORITE
)
chatRoomMessage
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_MESSAGE
)
chatRoomMessage
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_MESSAGE
)
}
else
{
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
...
@@ -216,38 +232,130 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -216,38 +232,130 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
resultData
!=
null
)
{
if
(
resultData
!=
null
)
{
uploadFile
(
resultData
.
data
)
fileAttachmentDialog
(
resultData
.
data
)
}
}
}
}
}
}
override
fun
onCreateOptionsMenu
(
menu
:
Menu
,
inflater
:
MenuInflater
)
{
private
fun
fileAttachmentDialog
(
data
:
Uri
)
{
super
.
onCreateOptionsMenu
(
menu
,
inflater
)
val
builder
=
AlertDialog
.
Builder
(
activity
)
inflater
.
inflate
(
R
.
menu
.
chatroom_actions
,
menu
)
val
dialogView
=
View
.
inflate
(
context
,
R
.
layout
.
file_attachments_dialog
,
null
)
menu
.
findItem
(
R
.
id
.
action_members_list
)
?.
isVisible
=
!
isBroadcastChannel
builder
.
setView
(
dialogView
)
}
val
alertDialog
=
builder
.
create
()
override
fun
onOptionsItemSelected
(
item
:
MenuItem
):
Boolean
{
dialogView
?.
let
{
when
(
item
.
itemId
)
{
val
imagePreview
=
it
.
findViewById
<
ImageView
>(
R
.
id
.
image_preview
)
R
.
id
.
action_members_list
->
{
val
sendButton
=
it
.
findViewById
<
Button
>(
R
.
id
.
button_send
)
presenter
.
toMembersList
(
chatRoomId
)
val
cancelButton
:
Button
=
it
.
findViewById
(
R
.
id
.
button_cancel
)
}
val
description
=
it
.
findViewById
<
EditText
>(
R
.
id
.
text_file_description
)
R
.
id
.
action_mentions
->
{
val
audioVideoAttachment
=
it
.
findViewById
<
FrameLayout
>(
R
.
id
.
audio_video_attachment
)
presenter
.
toMentions
(
chatRoomId
)
val
textFile
=
it
.
findViewById
<
TextView
>(
R
.
id
.
text_file_name
)
activity
?.
let
{
data
.
getMimeType
(
it
).
apply
{
when
{
this
.
startsWith
(
"image"
)
->
{
imagePreview
.
isVisible
=
true
imagePreview
.
setImageURI
(
data
)
}
this
.
startsWith
(
"video"
)
->
{
audioVideoAttachment
.
isVisible
=
true
}
else
->
{
textFile
.
isVisible
=
true
textFile
.
text
=
data
.
getFileName
(
it
)
}
}
}
}
}
R
.
id
.
action_pinned_messages
->
{
sendButton
.
setOnClickListener
{
presenter
.
toPinnedMessageList
(
chatRoomId
)
uploadFile
(
data
,
description
.
text
.
toString
())
alertDialog
.
dismiss
()
}
}
R
.
id
.
action_favorite_messages
->
{
cancelButton
.
setOnClickListener
{
presenter
.
toFavoriteMessageList
(
chatRoomId
)
alertDialog
.
dismiss
(
)
}
}
R
.
id
.
action_files
->
{
}
presenter
.
toFileList
(
chatRoomId
)
alertDialog
.
show
()
}
override
fun
onPrepareOptionsMenu
(
menu
:
Menu
)
{
menu
.
clear
()
if
(
isFavorite
)
{
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_FAVORITE_UNFAVORITE_CHAT
,
Menu
.
NONE
,
R
.
string
.
title_unfavorite_chat
)
.
setIcon
(
R
.
drawable
.
ic_star_yellow_24dp
)
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
)
}
else
{
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_FAVORITE_UNFAVORITE_CHAT
,
Menu
.
NONE
,
R
.
string
.
title_favorite_chat
)
.
setIcon
(
R
.
drawable
.
ic_star_border_white_24dp
)
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
)
}
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_MEMBER
,
Menu
.
NONE
,
R
.
string
.
title_members_list
)
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_MENTIONS
,
Menu
.
NONE
,
R
.
string
.
msg_mentions
)
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_PINNED_MESSAGES
,
Menu
.
NONE
,
R
.
string
.
title_pinned_messages
)
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_FAVORITE_MESSAGES
,
Menu
.
NONE
,
R
.
string
.
title_favorite_messages
)
menu
.
add
(
Menu
.
NONE
,
MENU_ACTION_FILES
,
Menu
.
NONE
,
R
.
string
.
title_files
)
super
.
onPrepareOptionsMenu
(
menu
)
}
override
fun
onOptionsItemSelected
(
item
:
MenuItem
):
Boolean
{
when
(
item
.
itemId
)
{
MENU_ACTION_FAVORITE_UNFAVORITE_CHAT
->
{
presenter
.
toggleFavoriteChatRoom
(
chatRoomId
,
isFavorite
)
}
}
MENU_ACTION_MEMBER
->
presenter
.
toMembersList
(
chatRoomId
)
MENU_ACTION_MENTIONS
->
presenter
.
toMentions
(
chatRoomId
)
MENU_ACTION_PINNED_MESSAGES
->
presenter
.
toPinnedMessageList
(
chatRoomId
)
MENU_ACTION_FAVORITE_MESSAGES
->
presenter
.
toFavoriteMessageList
(
chatRoomId
)
MENU_ACTION_FILES
->
presenter
.
toFileList
(
chatRoomId
)
}
}
return
true
return
true
}
}
override
fun
showFavoriteIcon
(
isFavorite
:
Boolean
)
{
this
.
isFavorite
=
isFavorite
activity
?.
invalidateOptionsMenu
()
}
override
fun
showMessages
(
dataSet
:
List
<
BaseUiModel
<*
>>)
{
override
fun
showMessages
(
dataSet
:
List
<
BaseUiModel
<*
>>)
{
ui
{
ui
{
// track the message sent immediately after the current message
// track the message sent immediately after the current message
...
@@ -415,9 +523,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -415,9 +523,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
}
}
override
fun
uploadFile
(
uri
:
Uri
)
{
override
fun
uploadFile
(
uri
:
Uri
,
msg
:
String
)
{
// TODO Just leaving a blank message that comes with the file for now. In the future lets add the possibility to add a message with the file to be uploaded.
presenter
.
uploadFile
(
chatRoomId
,
uri
,
msg
)
presenter
.
uploadFile
(
chatRoomId
,
uri
,
""
)
}
}
override
fun
showInvalidFileMessage
()
{
override
fun
showInvalidFileMessage
()
{
...
@@ -666,7 +773,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -666,7 +773,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
private
fun
setupMessageComposer
(
canPost
:
Boolean
)
{
private
fun
setupMessageComposer
(
canPost
:
Boolean
)
{
if
(
is
ChatRoom
ReadOnly
&&
!
canPost
)
{
if
(
isReadOnly
&&
!
canPost
)
{
text_room_is_read_only
.
isVisible
=
true
text_room_is_read_only
.
isVisible
=
true
input_container
.
isVisible
=
false
input_container
.
isVisible
=
false
}
else
if
(!
isSubscribed
&&
roomTypeOf
(
chatRoomType
)
!
is
RoomType
.
DirectMessage
)
{
}
else
if
(!
isSubscribed
&&
roomTypeOf
(
chatRoomType
)
!
is
RoomType
.
DirectMessage
)
{
...
@@ -848,4 +955,4 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -848,4 +955,4 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
private
fun
setupToolbar
(
toolbarTitle
:
String
)
{
private
fun
setupToolbar
(
toolbarTitle
:
String
)
{
(
activity
as
ChatRoomActivity
).
showToolbarTitle
(
toolbarTitle
)
(
activity
as
ChatRoomActivity
).
showToolbarTitle
(
toolbarTitle
)
}
}
}
}
\ No newline at end of file
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