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
6a6a2547
Unverified
Commit
6a6a2547
authored
Mar 11, 2019
by
Filipe de Lima Brito
Committed by
GitHub
Mar 11, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "[REFACTOR] Handle nullable on arguments extra"
parent
ca4056e3
Changes
43
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
318 additions
and
292 deletions
+318
-292
LoginFragment.kt
...t/rocket/android/authentication/login/ui/LoginFragment.kt
+6
-4
LoginOptionsFragment.kt
...id/authentication/loginoptions/ui/LoginOptionsFragment.kt
+31
-30
RegisterUsernameFragment.kt
...ntication/registerusername/ui/RegisterUsernameFragment.kt
+8
-4
SignupFragment.kt
...rocket/android/authentication/signup/ui/SignupFragment.kt
+1
-1
TwoFAFragment.kt
...cket/android/authentication/twofactor/ui/TwoFAFragment.kt
+8
-4
ChatDetailsFragment.kt
...chat/rocket/android/chatdetails/ui/ChatDetailsFragment.kt
+9
-6
MessageInfoFragment.kt
.../rocket/android/chatinformation/ui/MessageInfoFragment.kt
+6
-3
ActionsListAdapter.kt
...hat/rocket/android/chatroom/adapter/ActionsListAdapter.kt
+1
-4
ChatRoomAdapter.kt
...a/chat/rocket/android/chatroom/adapter/ChatRoomAdapter.kt
+2
-2
RoomSuggestionsAdapter.kt
...rocket/android/chatroom/adapter/RoomSuggestionsAdapter.kt
+2
-2
UrlPreviewViewHolder.kt
...t/rocket/android/chatroom/adapter/UrlPreviewViewHolder.kt
+4
-5
ChatRoomPresenter.kt
...rocket/android/chatroom/presentation/ChatRoomPresenter.kt
+1
-1
ChatRoomActivity.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomActivity.kt
+27
-29
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+14
-12
Dialog.kt
app/src/main/java/chat/rocket/android/chatroom/ui/Dialog.kt
+22
-16
UiModelMapper.kt
...ava/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
+14
-11
RoomViewHolder.kt
...a/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt
+14
-17
RoomsAdapter.kt
...ava/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt
+2
-1
ChatRoomsFragment.kt
...ava/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt
+7
-6
CreateChannelFragment.kt
.../rocket/android/createchannel/ui/CreateChannelFragment.kt
+3
-3
DatabaseManager.kt
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
+10
-6
Attachments.kt
...src/main/java/chat/rocket/android/db/model/Attachments.kt
+23
-14
FavoriteMessagesFragment.kt
...t/android/favoritemessages/ui/FavoriteMessagesFragment.kt
+6
-3
FilesFragment.kt
...c/main/java/chat/rocket/android/files/ui/FilesFragment.kt
+6
-3
ImageHelper.kt
app/src/main/java/chat/rocket/android/helper/ImageHelper.kt
+14
-16
MembersAdapter.kt
...ava/chat/rocket/android/members/adapter/MembersAdapter.kt
+3
-5
MembersFragment.kt
...in/java/chat/rocket/android/members/ui/MembersFragment.kt
+7
-4
MentionsFragment.kt
.../java/chat/rocket/android/mentions/ui/MentionsFragment.kt
+6
-3
PinnedMessagesFragment.kt
...ocket/android/pinnedmessages/ui/PinnedMessagesFragment.kt
+6
-3
ProfileFragment.kt
...in/java/chat/rocket/android/profile/ui/ProfileFragment.kt
+2
-6
PushManager.kt
app/src/main/java/chat/rocket/android/push/PushManager.kt
+12
-24
ConnectionManager.kt
...ocket/android/server/infraestructure/ConnectionManager.kt
+3
-3
DatabaseMessageMapper.kt
...t/android/server/infraestructure/DatabaseMessageMapper.kt
+4
-4
DatabaseMessagesRepository.kt
...roid/server/infraestructure/DatabaseMessagesRepository.kt
+3
-3
SharedPreferencesAccountsRepository.kt
...er/infraestructure/SharedPreferencesAccountsRepository.kt
+4
-4
SharedPrefsBasicAuthRepository.kt
.../server/infraestructure/SharedPrefsBasicAuthRepository.kt
+3
-2
ChangeServerPresenter.kt
...cket/android/server/presentation/ChangeServerPresenter.kt
+0
-1
UserDetailsFragment.kt
...chat/rocket/android/userdetails/ui/UserDetailsFragment.kt
+6
-3
HttpLoggingInterceptor.kt
...n/java/chat/rocket/android/util/HttpLoggingInterceptor.kt
+1
-1
String.kt
...c/main/java/chat/rocket/android/util/extensions/String.kt
+5
-2
AdminPanelWebViewFragment.kt
...ndroid/webview/adminpanel/ui/AdminPanelWebViewFragment.kt
+8
-6
DividerItemDecoration.kt
.../java/chat/rocket/android/widget/DividerItemDecoration.kt
+4
-4
Widget.kt
...rc/main/java/chat/rocket/android/util/extension/Widget.kt
+0
-11
No files found.
app/src/main/java/chat/rocket/android/authentication/login/ui/LoginFragment.kt
View file @
6a6a2547
...
@@ -58,8 +58,10 @@ class LoginFragment : Fragment(), LoginView {
...
@@ -58,8 +58,10 @@ class LoginFragment : Fragment(), LoginView {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
serverName
=
getString
(
SERVER_NAME
)
val
bundle
=
arguments
if
(
bundle
!=
null
)
{
serverName
=
bundle
.
getString
(
SERVER_NAME
)
}
}
}
}
...
@@ -148,7 +150,7 @@ class LoginFragment : Fragment(), LoginView {
...
@@ -148,7 +150,7 @@ class LoginFragment : Fragment(), LoginView {
override
fun
showGenericErrorMessage
()
=
showMessage
(
R
.
string
.
msg_generic_error
)
override
fun
showGenericErrorMessage
()
=
showMessage
(
R
.
string
.
msg_generic_error
)
private
fun
setupOnClickListener
()
=
private
fun
setupOnClickListener
()
=
ui
{
ui
{
_
->
button_log_in
.
setOnClickListener
{
button_log_in
.
setOnClickListener
{
presenter
.
authenticateWithUserAndPassword
(
presenter
.
authenticateWithUserAndPassword
(
text_username_or_email
.
textContent
,
text_username_or_email
.
textContent
,
...
@@ -158,7 +160,7 @@ class LoginFragment : Fragment(), LoginView {
...
@@ -158,7 +160,7 @@ class LoginFragment : Fragment(), LoginView {
}
}
override
fun
showForgotPasswordView
()
{
override
fun
showForgotPasswordView
()
{
ui
{
ui
{
_
->
button_forgot_your_password
.
isVisible
=
true
button_forgot_your_password
.
isVisible
=
true
button_forgot_your_password
.
setOnClickListener
{
presenter
.
forgotPassword
()
}
button_forgot_your_password
.
setOnClickListener
{
presenter
.
forgotPassword
()
}
...
...
app/src/main/java/chat/rocket/android/authentication/loginoptions/ui/LoginOptionsFragment.kt
View file @
6a6a2547
...
@@ -157,33 +157,34 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
...
@@ -157,33 +157,34 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
serverName
=
getString
(
SERVER_NAME
)
if
(
bundle
!=
null
)
{
state
=
getString
(
STATE
)
serverName
=
bundle
.
getString
(
SERVER_NAME
)
facebookOauthUrl
=
getString
(
FACEBOOK_OAUTH_URL
)
state
=
bundle
.
getString
(
STATE
)
githubOauthUrl
=
getString
(
GITHUB_OAUTH_URL
)
facebookOauthUrl
=
bundle
.
getString
(
FACEBOOK_OAUTH_URL
)
googleOauthUrl
=
getString
(
GOOGLE_OAUTH_URL
)
githubOauthUrl
=
bundle
.
getString
(
GITHUB_OAUTH_URL
)
linkedinOauthUrl
=
getString
(
LINKEDIN_OAUTH_URL
)
googleOauthUrl
=
bundle
.
getString
(
GOOGLE_OAUTH_URL
)
gitlabOauthUrl
=
getString
(
GITLAB_OAUTH_URL
)
linkedinOauthUrl
=
bundle
.
getString
(
LINKEDIN_OAUTH_URL
)
wordpressOauthUrl
=
getString
(
WORDPRESS_OAUTH_URL
)
gitlabOauthUrl
=
bundle
.
getString
(
GITLAB_OAUTH_URL
)
casLoginUrl
=
getString
(
CAS_LOGIN_URL
)
wordpressOauthUrl
=
bundle
.
getString
(
WORDPRESS_OAUTH_URL
)
casToken
=
getString
(
CAS_TOKEN
)
casLoginUrl
=
bundle
.
getString
(
CAS_LOGIN_URL
)
casServiceName
=
getString
(
CAS_SERVICE_NAME
)
casToken
=
bundle
.
getString
(
CAS_TOKEN
)
casServiceNameTextColor
=
getInt
(
CAS_SERVICE_NAME_TEXT_COLOR
)
casServiceName
=
bundle
.
getString
(
CAS_SERVICE_NAME
)
casServiceButtonColor
=
getInt
(
CAS_SERVICE_BUTTON_COLOR
)
casServiceNameTextColor
=
bundle
.
getInt
(
CAS_SERVICE_NAME_TEXT_COLOR
)
customOauthUrl
=
getString
(
CUSTOM_OAUTH_URL
)
casServiceButtonColor
=
bundle
.
getInt
(
CAS_SERVICE_BUTTON_COLOR
)
customOauthServiceName
=
getString
(
CUSTOM_OAUTH_SERVICE_NAME
)
customOauthUrl
=
bundle
.
getString
(
CUSTOM_OAUTH_URL
)
customOauthServiceTextColor
=
getInt
(
CUSTOM_OAUTH_SERVICE_NAME_TEXT_COLOR
)
customOauthServiceName
=
bundle
.
getString
(
CUSTOM_OAUTH_SERVICE_NAME
)
customOauthServiceButtonColor
=
getInt
(
CUSTOM_OAUTH_SERVICE_BUTTON_COLOR
)
customOauthServiceTextColor
=
bundle
.
getInt
(
CUSTOM_OAUTH_SERVICE_NAME_TEXT_COLOR
)
samlUrl
=
getString
(
SAML_URL
)
customOauthServiceButtonColor
=
bundle
.
getInt
(
CUSTOM_OAUTH_SERVICE_BUTTON_COLOR
)
samlToken
=
getString
(
SAML_TOKEN
)
samlUrl
=
bundle
.
getString
(
SAML_URL
)
samlServiceName
=
getString
(
SAML_SERVICE_NAME
)
samlToken
=
bundle
.
getString
(
SAML_TOKEN
)
samlServiceTextColor
=
getInt
(
SAML_SERVICE_NAME_TEXT_COLOR
)
samlServiceName
=
bundle
.
getString
(
SAML_SERVICE_NAME
)
samlServiceButtonColor
=
getInt
(
SAML_SERVICE_BUTTON_COLOR
)
samlServiceTextColor
=
bundle
.
getInt
(
SAML_SERVICE_NAME_TEXT_COLOR
)
totalSocialAccountsEnabled
=
getInt
(
TOTAL_SOCIAL_ACCOUNTS
)
samlServiceButtonColor
=
bundle
.
getInt
(
SAML_SERVICE_BUTTON_COLOR
)
isLoginFormEnabled
=
getBoolean
(
IS_LOGIN_FORM_ENABLED
)
totalSocialAccountsEnabled
=
bundle
.
getInt
(
TOTAL_SOCIAL_ACCOUNTS
)
isNewAccountCreationEnabled
=
getBoolean
(
IS_NEW_ACCOUNT_CREATION_ENABLED
)
isLoginFormEnabled
=
bundle
.
getBoolean
(
IS_LOGIN_FORM_ENABLED
)
deepLinkInfo
=
getParcelable
(
DEEP_LINK_INFO
)
isNewAccountCreationEnabled
=
bundle
.
getBoolean
(
IS_NEW_ACCOUNT_CREATION_ENABLED
)
deepLinkInfo
=
bundle
.
getParcelable
(
DEEP_LINK_INFO
)
}
}
}
}
...
@@ -387,7 +388,7 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
...
@@ -387,7 +388,7 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
}
}
override
fun
setupExpandAccountsView
()
{
override
fun
setupExpandAccountsView
()
{
ui
{
ui
{
_
->
expand_more_accounts_container
.
isVisible
=
true
expand_more_accounts_container
.
isVisible
=
true
var
isAccountsCollapsed
=
true
var
isAccountsCollapsed
=
true
button_expand_collapse_accounts
.
setOnClickListener
{
button_expand_collapse_accounts
.
setOnClickListener
{
...
@@ -405,14 +406,14 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
...
@@ -405,14 +406,14 @@ class LoginOptionsFragment : Fragment(), LoginOptionsView {
}
}
override
fun
showLoginWithEmailButton
()
{
override
fun
showLoginWithEmailButton
()
{
ui
{
ui
{
_
->
button_login_with_email
.
setOnClickListener
{
presenter
.
toLoginWithEmail
()
}
button_login_with_email
.
setOnClickListener
{
presenter
.
toLoginWithEmail
()
}
button_login_with_email
.
isVisible
=
true
button_login_with_email
.
isVisible
=
true
}
}
}
}
override
fun
showCreateNewAccountButton
()
{
override
fun
showCreateNewAccountButton
()
{
ui
{
ui
{
_
->
button_create_an_account
.
setOnClickListener
{
presenter
.
toCreateAccount
()
}
button_create_an_account
.
setOnClickListener
{
presenter
.
toCreateAccount
()
}
button_create_an_account
.
isVisible
=
true
button_create_an_account
.
isVisible
=
true
}
}
...
...
app/src/main/java/chat/rocket/android/authentication/registerusername/ui/RegisterUsernameFragment.kt
View file @
6a6a2547
...
@@ -52,10 +52,14 @@ class RegisterUsernameFragment : Fragment(), RegisterUsernameView {
...
@@ -52,10 +52,14 @@ class RegisterUsernameFragment : Fragment(), RegisterUsernameView {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
userId
=
getString
(
BUNDLE_USER_ID
,
""
)
val
bundle
=
arguments
authToken
=
getString
(
BUNDLE_AUTH_TOKEN
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
userId
=
bundle
.
getString
(
BUNDLE_USER_ID
)
authToken
=
bundle
.
getString
(
BUNDLE_AUTH_TOKEN
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/authentication/signup/ui/SignupFragment.kt
View file @
6a6a2547
...
@@ -75,7 +75,7 @@ class SignupFragment : Fragment(), SignupView {
...
@@ -75,7 +75,7 @@ class SignupFragment : Fragment(), SignupView {
}
}
private
fun
setupOnClickListener
()
=
private
fun
setupOnClickListener
()
=
ui
{
ui
{
_
->
button_register
.
setOnClickListener
{
button_register
.
setOnClickListener
{
presenter
.
signup
(
presenter
.
signup
(
text_username
.
textContent
,
text_username
.
textContent
,
...
...
app/src/main/java/chat/rocket/android/authentication/twofactor/ui/TwoFAFragment.kt
View file @
6a6a2547
...
@@ -49,10 +49,14 @@ class TwoFAFragment : Fragment(), TwoFAView {
...
@@ -49,10 +49,14 @@ class TwoFAFragment : Fragment(), TwoFAView {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
username
=
getString
(
BUNDLE_USERNAME
,
""
)
val
bundle
=
arguments
password
=
getString
(
BUNDLE_PASSWORD
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
username
=
bundle
.
getString
(
BUNDLE_USERNAME
)
password
=
bundle
.
getString
(
BUNDLE_PASSWORD
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/chatdetails/ui/ChatDetailsFragment.kt
View file @
6a6a2547
...
@@ -66,12 +66,15 @@ class ChatDetailsFragment : Fragment(), ChatDetailsView {
...
@@ -66,12 +66,15 @@ class ChatDetailsFragment : Fragment(), ChatDetailsView {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
)
if
(
bundle
!=
null
)
{
chatRoomType
=
getString
(
BUNDLE_CHAT_ROOM_TYPE
)
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
isSubscribed
=
getBoolean
(
BUNDLE_IS_SUBSCRIBED
)
chatRoomType
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_TYPE
)
disableMenu
=
getBoolean
(
BUNDLE_DISABLE_MENU
)
isSubscribed
=
bundle
.
getBoolean
(
BUNDLE_IS_SUBSCRIBED
)
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
disableMenu
=
bundle
.
getBoolean
(
BUNDLE_DISABLE_MENU
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/chatinformation/ui/MessageInfoFragment.kt
View file @
6a6a2547
...
@@ -46,9 +46,12 @@ class MessageInfoFragment : Fragment(), MessageInfoView {
...
@@ -46,9 +46,12 @@ class MessageInfoFragment : Fragment(), MessageInfoView {
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
setHasOptionsMenu
(
true
)
setHasOptionsMenu
(
true
)
arguments
?.
run
{
val
bundle
=
arguments
messageId
=
getString
(
BUNDLE_MESSAGE_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
messageId
=
bundle
.
getString
(
BUNDLE_MESSAGE_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/ActionsListAdapter.kt
View file @
6a6a2547
...
@@ -12,10 +12,7 @@ import com.facebook.drawee.backends.pipeline.Fresco
...
@@ -12,10 +12,7 @@ import com.facebook.drawee.backends.pipeline.Fresco
import
kotlinx.android.synthetic.main.item_action_button.view.*
import
kotlinx.android.synthetic.main.item_action_button.view.*
import
timber.log.Timber
import
timber.log.Timber
class
ActionsListAdapter
(
class
ActionsListAdapter
(
actions
:
List
<
Action
>,
var
actionAttachmentOnClickListener
:
ActionAttachmentOnClickListener
)
:
RecyclerView
.
Adapter
<
ActionsListAdapter
.
ViewHolder
>()
{
actions
:
List
<
Action
>,
var
actionAttachmentOnClickListener
:
ActionAttachmentOnClickListener
)
:
RecyclerView
.
Adapter
<
ActionsListAdapter
.
ViewHolder
>()
{
var
actions
:
List
<
Action
>
=
actions
var
actions
:
List
<
Action
>
=
actions
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/ChatRoomAdapter.kt
View file @
6a6a2547
...
@@ -174,12 +174,12 @@ class ChatRoomAdapter(
...
@@ -174,12 +174,12 @@ class ChatRoomAdapter(
Timber
.
d
(
"index: $index"
)
Timber
.
d
(
"index: $index"
)
if
(
index
>
-
1
)
{
if
(
index
>
-
1
)
{
dataSet
[
index
]
=
message
dataSet
[
index
]
=
message
dataSet
.
forEachIndexed
{
ind
,
viewModel
->
dataSet
.
forEachIndexed
{
ind
ex
,
viewModel
->
if
(
viewModel
.
messageId
==
message
.
messageId
)
{
if
(
viewModel
.
messageId
==
message
.
messageId
)
{
if
(
viewModel
.
nextDownStreamMessage
==
null
)
{
if
(
viewModel
.
nextDownStreamMessage
==
null
)
{
viewModel
.
reactions
=
message
.
reactions
viewModel
.
reactions
=
message
.
reactions
}
}
notifyItemChanged
(
ind
)
notifyItemChanged
(
ind
ex
)
}
}
}
}
// Delete message only if current is a system message update, i.e.: Message Removed
// Delete message only if current is a system message update, i.e.: Message Removed
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/RoomSuggestionsAdapter.kt
View file @
6a6a2547
...
@@ -24,8 +24,8 @@ class RoomSuggestionsAdapter : SuggestionsAdapter<RoomSuggestionsViewHolder>("#"
...
@@ -24,8 +24,8 @@ class RoomSuggestionsAdapter : SuggestionsAdapter<RoomSuggestionsViewHolder>("#"
override
fun
bind
(
item
:
SuggestionModel
,
itemClickListener
:
SuggestionsAdapter
.
ItemClickListener
?)
{
override
fun
bind
(
item
:
SuggestionModel
,
itemClickListener
:
SuggestionsAdapter
.
ItemClickListener
?)
{
item
as
ChatRoomSuggestionUiModel
item
as
ChatRoomSuggestionUiModel
with
(
itemView
)
{
with
(
itemView
)
{
val
fullname
=
findViewById
<
TextView
>(
R
.
id
.
text_fullname
)
val
fullname
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
text_fullname
)
val
name
=
findViewById
<
TextView
>(
R
.
id
.
text_name
)
val
name
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
text_name
)
name
.
text
=
item
.
name
name
.
text
=
item
.
name
fullname
.
text
=
item
.
fullName
fullname
.
text
=
item
.
fullName
setOnClickListener
{
setOnClickListener
{
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/UrlPreviewViewHolder.kt
View file @
6a6a2547
...
@@ -8,11 +8,10 @@ import chat.rocket.android.util.extensions.content
...
@@ -8,11 +8,10 @@ import chat.rocket.android.util.extensions.content
import
chat.rocket.android.util.extensions.openTabbedUrl
import
chat.rocket.android.util.extensions.openTabbedUrl
import
kotlinx.android.synthetic.main.message_url_preview.view.*
import
kotlinx.android.synthetic.main.message_url_preview.view.*
class
UrlPreviewViewHolder
(
class
UrlPreviewViewHolder
(
itemView
:
View
,
itemView
:
View
,
listener
:
ActionsListener
,
listener
:
ActionsListener
,
reactionListener
:
EmojiReactionListener
?
=
null
)
reactionListener
:
EmojiReactionListener
?
=
null
:
BaseViewHolder
<
UrlPreviewUiModel
>(
itemView
,
listener
,
reactionListener
)
{
)
:
BaseViewHolder
<
UrlPreviewUiModel
>(
itemView
,
listener
,
reactionListener
)
{
init
{
init
{
with
(
itemView
)
{
with
(
itemView
)
{
...
...
app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomPresenter.kt
View file @
6a6a2547
...
@@ -1072,7 +1072,7 @@ class ChatRoomPresenter @Inject constructor(
...
@@ -1072,7 +1072,7 @@ class ChatRoomPresenter @Inject constructor(
launchUI
(
strategy
)
{
launchUI
(
strategy
)
{
try
{
try
{
messagesRepository
.
getById
(
messageId
)
?.
let
{
message
->
messagesRepository
.
getById
(
messageId
)
?.
let
{
message
->
getChatRoomAsync
(
message
.
roomId
)
?.
let
{
getChatRoomAsync
(
message
.
roomId
)
?.
let
{
chatRoom
->
val
models
=
mapper
.
map
(
message
)
val
models
=
mapper
.
map
(
message
)
models
.
firstOrNull
()
?.
permalink
?.
let
{
models
.
firstOrNull
()
?.
permalink
?.
let
{
view
.
copyToClipboard
(
it
)
view
.
copyToClipboard
(
it
)
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomActivity.kt
View file @
6a6a2547
...
@@ -81,46 +81,44 @@ class ChatRoomActivity : AppCompatActivity(), HasSupportFragmentInjector {
...
@@ -81,46 +81,44 @@ class ChatRoomActivity : AppCompatActivity(), HasSupportFragmentInjector {
return
return
}
}
with
(
intent
)
{
val
chatRoomId
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_ID
)
val
chatRoomId
=
getStringExtra
(
INTENT_CHAT_ROOM_ID
)
requireNotNull
(
chatRoomId
)
{
"no chat_room_id provided in Intent extras"
}
requireNotNull
(
chatRoomId
)
{
"no chat_room_id provided in Intent extras"
}
val
chatRoomName
=
getStringExtra
(
INTENT_CHAT_ROOM_NAME
)
val
chatRoomName
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_NAME
)
requireNotNull
(
chatRoomName
)
{
"no chat_room_name provided in Intent extras"
}
requireNotNull
(
chatRoomName
)
{
"no chat_room_name provided in Intent extras"
}
val
chatRoomType
=
getStringExtra
(
INTENT_CHAT_ROOM_TYPE
)
val
chatRoomType
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_TYPE
)
requireNotNull
(
chatRoomType
)
{
"no chat_room_type provided in Intent extras"
}
requireNotNull
(
chatRoomType
)
{
"no chat_room_type provided in Intent extras"
}
val
isReadOnly
=
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_READ_ONLY
,
true
)
val
isReadOnly
=
intent
.
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_READ_ONLY
,
true
)
val
isCreator
=
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_CREATOR
,
false
)
val
isCreator
=
intent
.
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_CREATOR
,
false
)
val
isFavorite
=
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_FAVORITE
,
false
)
val
isFavorite
=
intent
.
getBooleanExtra
(
INTENT_CHAT_ROOM_IS_FAVORITE
,
false
)
val
chatRoomLastSeen
=
getLongExtra
(
INTENT_CHAT_ROOM_LAST_SEEN
,
-
1
)
val
chatRoomLastSeen
=
intent
.
getLongExtra
(
INTENT_CHAT_ROOM_LAST_SEEN
,
-
1
)
val
isSubscribed
=
getBooleanExtra
(
INTENT_CHAT_IS_SUBSCRIBED
,
true
)
val
isSubscribed
=
intent
.
getBooleanExtra
(
INTENT_CHAT_IS_SUBSCRIBED
,
true
)
val
chatRoomMessage
=
getStringExtra
(
INTENT_CHAT_ROOM_MESSAGE
)
val
chatRoomMessage
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_MESSAGE
)
if
(
supportFragmentManager
.
findFragmentByTag
(
TAG_CHAT_ROOM_FRAGMENT
)
==
null
)
{
setupToolbar
()
addFragment
(
TAG_CHAT_ROOM_FRAGMENT
,
R
.
id
.
fragment_container
)
{
newInstance
(
if
(
supportFragmentManager
.
findFragmentByTag
(
TAG_CHAT_ROOM_FRAGMENT
)
==
null
)
{
chatRoomId
,
addFragment
(
TAG_CHAT_ROOM_FRAGMENT
,
R
.
id
.
fragment_container
)
{
chatRoomName
,
newInstance
(
chatRoomType
,
chatRoomId
,
isReadOnly
,
chatRoomName
,
chatRoomLastSeen
,
chatRoomType
,
isSubscribed
,
isReadOnly
,
isCreator
,
chatRoomLastSeen
,
isFavorite
,
isSubscribed
,
chatRoomMessage
isCreator
,
)
isFavorite
,
}
chatRoomMessage
)
}
}
}
}
setupToolbar
()
}
}
override
fun
onBackPressed
()
{
override
fun
onBackPressed
()
{
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
6a6a2547
...
@@ -273,18 +273,20 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -273,18 +273,20 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
setHasOptionsMenu
(
true
)
setHasOptionsMenu
(
true
)
val
bundle
=
arguments
arguments
?.
run
{
if
(
bundle
!=
null
)
{
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
,
""
)
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
chatRoomName
=
getString
(
BUNDLE_CHAT_ROOM_NAME
,
""
)
chatRoomName
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_NAME
)
chatRoomType
=
getString
(
BUNDLE_CHAT_ROOM_TYPE
,
""
)
chatRoomType
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_TYPE
)
isReadOnly
=
getBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
)
isReadOnly
=
bundle
.
getBoolean
(
BUNDLE_IS_CHAT_ROOM_READ_ONLY
)
isSubscribed
=
getBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
)
isSubscribed
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_SUBSCRIBED
)
chatRoomLastSeen
=
getLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
)
chatRoomLastSeen
=
bundle
.
getLong
(
BUNDLE_CHAT_ROOM_LAST_SEEN
)
isCreator
=
getBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
)
isCreator
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_CREATOR
)
isFavorite
=
getBoolean
(
BUNDLE_CHAT_ROOM_IS_FAVORITE
)
isFavorite
=
bundle
.
getBoolean
(
BUNDLE_CHAT_ROOM_IS_FAVORITE
)
chatRoomMessage
=
getString
(
BUNDLE_CHAT_ROOM_MESSAGE
)
chatRoomMessage
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_MESSAGE
)
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
adapter
=
ChatRoomAdapter
(
chatRoomId
,
chatRoomType
,
chatRoomName
,
this
,
reactionListener
=
this
,
navigator
=
navigator
)
adapter
=
ChatRoomAdapter
(
chatRoomId
,
chatRoomType
,
chatRoomName
,
this
,
reactionListener
=
this
,
navigator
=
navigator
)
}
}
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/Dialog.kt
View file @
6a6a2547
...
@@ -8,7 +8,8 @@ import chat.rocket.android.emoji.internal.GlideApp
...
@@ -8,7 +8,8 @@ import chat.rocket.android.emoji.internal.GlideApp
import
chat.rocket.android.util.extensions.getFileName
import
chat.rocket.android.util.extensions.getFileName
import
chat.rocket.android.util.extensions.getMimeType
import
chat.rocket.android.util.extensions.getMimeType
import
chat.rocket.common.util.ifNull
import
chat.rocket.common.util.ifNull
import
com.bumptech.glide.request.target.ImageViewTarget
import
com.bumptech.glide.request.target.SimpleTarget
import
com.bumptech.glide.request.transition.Transition
fun
ChatRoomFragment
.
showFileAttachmentDialog
(
uri
:
Uri
)
{
fun
ChatRoomFragment
.
showFileAttachmentDialog
(
uri
:
Uri
)
{
imagePreview
.
isVisible
=
false
imagePreview
.
isVisible
=
false
...
@@ -24,22 +25,27 @@ fun ChatRoomFragment.showFileAttachmentDialog(uri: Uri) {
...
@@ -24,22 +25,27 @@ fun ChatRoomFragment.showFileAttachmentDialog(uri: Uri) {
when
{
when
{
mimeType
.
startsWith
(
"image"
)
->
{
mimeType
.
startsWith
(
"image"
)
->
{
if
(
mimeType
.
contains
(
"gif"
))
{
if
(
mimeType
.
contains
(
"gif"
))
{
GlideApp
.
with
(
context
)
GlideApp
.
asGif
()
.
with
(
context
)
.
load
(
uri
)
.
asGif
()
.
fitCenter
()
.
load
(
uri
)
.
into
(
imagePreview
)
.
fitCenter
()
.
into
(
imagePreview
)
}
else
{
}
else
{
GlideApp
.
with
(
context
)
GlideApp
.
asBitmap
()
.
with
(
context
)
.
load
(
uri
)
.
asBitmap
()
.
fitCenter
()
.
load
(
uri
)
.
into
(
object
:
ImageViewTarget
<
Bitmap
>(
imagePreview
)
{
.
fitCenter
()
override
fun
setResource
(
resource
:
Bitmap
?)
{
.
into
(
object
:
SimpleTarget
<
Bitmap
>()
{
bitmap
=
resource
override
fun
onResourceReady
(
imagePreview
.
setImageBitmap
(
resource
)
resource
:
Bitmap
,
}
transition
:
Transition
<
in
Bitmap
>?
})
)
{
bitmap
=
resource
imagePreview
.
setImageBitmap
(
resource
)
}
})
}
}
imagePreview
.
isVisible
=
true
imagePreview
.
isVisible
=
true
}
}
...
...
app/src/main/java/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
View file @
6a6a2547
...
@@ -416,18 +416,21 @@ class UiModelMapper @Inject constructor(
...
@@ -416,18 +416,21 @@ class UiModelMapper @Inject constructor(
return
fullUrl
return
fullUrl
}
}
private
fun
attachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
=
attachment
?.
run
{
private
fun
attachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
{
with
(
context
)
{
return
if
(
attachment
!=
null
)
{
when
{
when
{
imageUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_photo
)
attachment
.
imageUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_photo
)
videoUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_video
)
attachment
.
videoUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_video
)
audioUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_audio
)
attachment
.
audioUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_audio
)
titleLink
.
isNotNullNorEmpty
()
&&
attachment
.
titleLink
.
isNotNullNorEmpty
()
&&
type
?.
contentEquals
(
"file"
)
==
true
->
getString
(
R
.
string
.
msg_preview_file
)
attachment
.
type
?.
contentEquals
(
"file"
)
==
true
->
else
->
text
context
.
getString
(
R
.
string
.
msg_preview_file
)
}
else
->
text
}
}
}
?:
text
}
else
{
text
}
}
private
fun
attachmentDescription
(
attachment
:
Attachment
):
String
?
{
private
fun
attachmentDescription
(
attachment
:
Attachment
):
String
?
{
return
attachment
.
description
return
attachment
.
description
...
...
app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt
View file @
6a6a2547
...
@@ -8,23 +8,20 @@ import androidx.core.view.isInvisible
...
@@ -8,23 +8,20 @@ import androidx.core.view.isInvisible
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.android.chatrooms.adapter.model.RoomUiModel
import
chat.rocket.android.chatrooms.adapter.model.RoomUiModel
import
chat.rocket.android.util.extension.setTextViewAppearance
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.UserStatus
import
chat.rocket.common.model.UserStatus
import
kotlinx.android.synthetic.main.item_chat.view.*
import
kotlinx.android.synthetic.main.item_chat.view.*
import
kotlinx.android.synthetic.main.unread_messages_badge.view.*
import
kotlinx.android.synthetic.main.unread_messages_badge.view.*
class
RoomViewHolder
(
class
RoomViewHolder
(
itemView
:
View
,
private
val
listener
:
(
RoomUiModel
)
->
Unit
)
:
itemView
:
View
,
ViewHolder
<
RoomItemHolder
>(
itemView
)
{
private
val
listener
:
(
RoomUiModel
)
->
Unit
)
:
ViewHolder
<
RoomItemHolder
>(
itemView
)
{
private
val
resources
:
Resources
=
itemView
.
resources
private
val
resources
:
Resources
=
itemView
.
resources
private
val
channelIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_hashtag_12dp
,
null
)
private
val
channelIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_hashtag_12dp
)
private
val
groupIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_lock_12_dp
,
null
)
private
val
groupIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_lock_12_dp
)
private
val
onlineIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_online_12dp
,
null
)
private
val
onlineIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_online_12dp
)
private
val
awayIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_away_12dp
,
null
)
private
val
awayIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_away_12dp
)
private
val
busyIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_busy_12dp
,
null
)
private
val
busyIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_busy_12dp
)
private
val
offlineIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_invisible_12dp
,
null
)
private
val
offlineIcon
:
Drawable
=
resources
.
getDrawable
(
R
.
drawable
.
ic_status_invisible_12dp
)
override
fun
bindViews
(
data
:
RoomItemHolder
)
{
override
fun
bindViews
(
data
:
RoomItemHolder
)
{
val
room
=
data
.
data
val
room
=
data
.
data
...
@@ -56,14 +53,14 @@ class RoomViewHolder(
...
@@ -56,14 +53,14 @@ class RoomViewHolder(
if
(
room
.
unread
==
null
)
text_total_unread_messages
.
text
=
"!"
if
(
room
.
unread
==
null
)
text_total_unread_messages
.
text
=
"!"
if
(
room
.
unread
!=
null
)
text_total_unread_messages
.
text
=
room
.
unread
if
(
room
.
unread
!=
null
)
text_total_unread_messages
.
text
=
room
.
unread
if
(
room
.
mentions
)
text_total_unread_messages
.
text
=
"@${room.unread}"
if
(
room
.
mentions
)
text_total_unread_messages
.
text
=
"@${room.unread}"
text_chat_name
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_ChatName_Unread_TextView
)
text_chat_name
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_ChatName_Unread_TextView
)
text_timestamp
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_Timestamp_Unread_TextView
)
text_timestamp
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_Timestamp_Unread_TextView
)
text_last_message
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_LastMessage_Unread_TextView
)
text_last_message
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_LastMessage_Unread_TextView
)
text_total_unread_messages
.
isVisible
=
true
text_total_unread_messages
.
isVisible
=
true
}
else
{
}
else
{
text_chat_name
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_ChatName_TextView
)
text_chat_name
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_ChatName_TextView
)
text_timestamp
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_Timestamp_TextView
)
text_timestamp
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_Timestamp_TextView
)
text_last_message
.
setText
View
Appearance
(
context
,
R
.
style
.
ChatList_LastMessage_TextView
)
text_last_message
.
setTextAppearance
(
context
,
R
.
style
.
ChatList_LastMessage_TextView
)
text_total_unread_messages
.
isInvisible
=
true
text_total_unread_messages
.
isInvisible
=
true
}
}
...
...
app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt
View file @
6a6a2547
...
@@ -6,7 +6,8 @@ import chat.rocket.android.R
...
@@ -6,7 +6,8 @@ import chat.rocket.android.R
import
chat.rocket.android.chatrooms.adapter.model.RoomUiModel
import
chat.rocket.android.chatrooms.adapter.model.RoomUiModel
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.inflate
class
RoomsAdapter
(
private
val
listener
:
(
RoomUiModel
)
->
Unit
)
:
RecyclerView
.
Adapter
<
ViewHolder
<*>>()
{
class
RoomsAdapter
(
private
val
listener
:
(
RoomUiModel
)
->
Unit
)
:
RecyclerView
.
Adapter
<
ViewHolder
<*>>()
{
init
{
init
{
setHasStableIds
(
true
)
setHasStableIds
(
true
)
...
...
app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt
View file @
6a6a2547
...
@@ -82,8 +82,9 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -82,8 +82,9 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
setHasOptionsMenu
(
true
)
setHasOptionsMenu
(
true
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
)
if
(
bundle
!=
null
)
{
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
chatRoomId
.
ifNotNullNotEmpty
{
roomId
->
chatRoomId
.
ifNotNullNotEmpty
{
roomId
->
presenter
.
loadChatRoom
(
roomId
)
presenter
.
loadChatRoom
(
roomId
)
chatRoomId
=
null
chatRoomId
=
null
...
@@ -131,10 +132,10 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -131,10 +132,10 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
recycler_view
.
adapter
=
adapter
recycler_view
.
adapter
=
adapter
viewModel
.
getChatRooms
().
observe
(
viewLifecycleOwner
,
Observer
{
rooms
->
viewModel
.
getChatRooms
().
observe
(
viewLifecycleOwner
,
Observer
{
rooms
->
rooms
?.
let
{
items
->
rooms
?.
let
{
Timber
.
d
(
"Got items: $it
ems
"
)
Timber
.
d
(
"Got items: $it"
)
adapter
.
values
=
it
ems
adapter
.
values
=
it
if
(
ite
ms
.
isNotEmpty
())
{
if
(
roo
ms
.
isNotEmpty
())
{
text_no_data_to_display
.
isVisible
=
false
text_no_data_to_display
.
isVisible
=
false
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/createchannel/ui/CreateChannelFragment.kt
View file @
6a6a2547
...
@@ -294,8 +294,8 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
...
@@ -294,8 +294,8 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
private
fun
addChip
(
chipText
:
String
)
{
private
fun
addChip
(
chipText
:
String
)
{
val
chip
=
Chip
(
context
)
val
chip
=
Chip
(
context
)
chip
.
t
ext
=
chipText
chip
.
chipT
ext
=
chipText
chip
.
isCloseIcon
Visible
=
true
chip
.
isCloseIcon
Enabled
=
true
chip
.
setChipBackgroundColorResource
(
R
.
color
.
icon_grey
)
chip
.
setChipBackgroundColorResource
(
R
.
color
.
icon_grey
)
setupChipOnCloseIconClickListener
(
chip
)
setupChipOnCloseIconClickListener
(
chip
)
chip_group_member
.
addView
(
chip
)
chip_group_member
.
addView
(
chip
)
...
@@ -304,7 +304,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
...
@@ -304,7 +304,7 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
private
fun
setupChipOnCloseIconClickListener
(
chip
:
Chip
)
{
private
fun
setupChipOnCloseIconClickListener
(
chip
:
Chip
)
{
chip
.
setOnCloseIconClickListener
{
chip
.
setOnCloseIconClickListener
{
removeChip
(
it
)
removeChip
(
it
)
removeMember
((
it
as
Chip
).
t
ext
.
toString
())
removeMember
((
it
as
Chip
).
chipT
ext
.
toString
())
// whenever we remove a chip we should process the chip group visibility.
// whenever we remove a chip we should process the chip group visibility.
processChipGroupVisibility
()
processChipGroupVisibility
()
}
}
...
...
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
View file @
6a6a2547
...
@@ -223,8 +223,8 @@ class DatabaseManager(val context: Application, val serverUrl: String) {
...
@@ -223,8 +223,8 @@ class DatabaseManager(val context: Application, val serverUrl: String) {
val
list
=
mutableListOf
<
BaseMessageEntity
>()
val
list
=
mutableListOf
<
BaseMessageEntity
>()
reactions
.
keys
.
forEach
{
reaction
->
reactions
.
keys
.
forEach
{
reaction
->
val
users
=
reactions
[
reaction
]
val
users
=
reactions
[
reaction
]
users
?.
let
{
users
?.
let
{
users
->
list
.
add
(
ReactionEntity
(
reaction
,
message
.
id
,
it
.
size
,
it
.
joinToString
()))
list
.
add
(
ReactionEntity
(
reaction
,
message
.
id
,
users
.
size
,
users
.
joinToString
()))
}
}
}
}
...
@@ -375,11 +375,15 @@ class DatabaseManager(val context: Application, val serverUrl: String) {
...
@@ -375,11 +375,15 @@ class DatabaseManager(val context: Application, val serverUrl: String) {
}
}
}
}
private
fun
mapLastMessageText
(
message
:
Message
?):
String
?
=
message
?.
run
{
private
fun
mapLastMessageText
(
message
:
Message
?):
String
?
{
if
(
this
.
message
.
isEmpty
()
&&
attachments
?.
isNotEmpty
()
==
true
)
{
return
if
(
message
==
null
)
{
mapAttachmentText
(
attachments
!!
[
0
])
null
}
else
{
}
else
{
this
.
message
return
if
(
message
.
message
.
isEmpty
()
&&
message
.
attachments
?.
isNotEmpty
()
==
true
)
{
mapAttachmentText
(
message
.
attachments
!!
[
0
])
}
else
{
message
.
message
}
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/db/model/Attachments.kt
View file @
6a6a2547
package
chat.rocket.android.db.model
package
chat.rocket.android.db.model
import
android.content.Context
import
android.content.Context
import
androidx.room.*
import
androidx.room.ColumnInfo
import
androidx.room.Entity
import
androidx.room.ForeignKey
import
androidx.room.Index
import
androidx.room.PrimaryKey
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.android.util.extension.orFalse
import
chat.rocket.android.util.extension.orFalse
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
...
@@ -110,7 +114,8 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
...
@@ -110,7 +114,8 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
val
list
=
mutableListOf
<
BaseMessageEntity
>()
val
list
=
mutableListOf
<
BaseMessageEntity
>()
val
text
=
mapAttachmentText
(
text
,
attachments
?.
firstOrNull
(),
context
)
val
text
=
mapAttachmentText
(
text
,
attachments
?.
firstOrNull
(),
context
)
list
.
add
(
AttachmentEntity
(
val
entity
=
AttachmentEntity
(
_id
=
attachmentId
,
_id
=
attachmentId
,
messageId
=
msgId
,
messageId
=
msgId
,
title
=
title
,
title
=
title
,
...
@@ -139,14 +144,16 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
...
@@ -139,14 +144,16 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
buttonAlignment
=
buttonAlignment
,
buttonAlignment
=
buttonAlignment
,
hasActions
=
actions
?.
isNotEmpty
()
==
true
,
hasActions
=
actions
?.
isNotEmpty
()
==
true
,
hasFields
=
fields
?.
isNotEmpty
()
==
true
hasFields
=
fields
?.
isNotEmpty
()
==
true
))
)
list
.
add
(
entity
)
fields
?.
forEach
{
field
->
fields
?.
forEach
{
field
->
list
.
add
(
AttachmentFieldEntity
(
val
entity
=
AttachmentFieldEntity
(
attachmentId
=
attachmentId
,
attachmentId
=
attachmentId
,
title
=
field
.
title
,
title
=
field
.
title
,
value
=
field
.
value
value
=
field
.
value
))
)
list
.
add
(
entity
)
}
}
actions
?.
forEach
{
action
->
actions
?.
forEach
{
action
->
...
@@ -168,16 +175,18 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
...
@@ -168,16 +175,18 @@ fun Attachment.asEntity(msgId: String, context: Context): List<BaseMessageEntity
return
list
return
list
}
}
fun
mapAttachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
=
attachment
?.
run
{
fun
mapAttachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
{
with
(
context
)
{
return
if
(
attachment
!=
null
)
{
when
{
when
{
imageUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_photo
)
attachment
.
imageUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_photo
)
videoUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_video
)
attachment
.
videoUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_video
)
a
udioUrl
.
isNotNullNorEmpty
()
->
getString
(
R
.
string
.
msg_preview_audio
)
a
ttachment
.
audioUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_audio
)
titleLink
.
isNotNullNorEmpty
()
&&
attachment
.
titleLink
.
isNotNullNorEmpty
()
&&
type
?.
contentEquals
(
"file"
)
==
true
->
attachment
.
type
?.
contentEquals
(
"file"
)
==
true
->
getString
(
R
.
string
.
msg_preview_file
)
context
.
getString
(
R
.
string
.
msg_preview_file
)
else
->
text
else
->
text
}
}
}
?:
text
}
else
{
text
}
}
}
app/src/main/java/chat/rocket/android/favoritemessages/ui/FavoriteMessagesFragment.kt
View file @
6a6a2547
...
@@ -48,9 +48,12 @@ class FavoriteMessagesFragment : Fragment(), FavoriteMessagesView {
...
@@ -48,9 +48,12 @@ class FavoriteMessagesFragment : Fragment(), FavoriteMessagesView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
INTENT_CHAT_ROOM_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
chatRoomId
=
bundle
.
getString
(
INTENT_CHAT_ROOM_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/files/ui/FilesFragment.kt
View file @
6a6a2547
...
@@ -55,9 +55,12 @@ class FilesFragment : Fragment(), FilesView {
...
@@ -55,9 +55,12 @@ class FilesFragment : Fragment(), FilesView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/helper/ImageHelper.kt
View file @
6a6a2547
...
@@ -51,10 +51,10 @@ object ImageHelper {
...
@@ -51,10 +51,10 @@ object ImageHelper {
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
)
)
val
toolbar
=
Toolbar
(
context
).
also
{
toolbar
->
val
toolbar
=
Toolbar
(
context
).
also
{
toolbar
.
inflateMenu
(
R
.
menu
.
image_actions
)
it
.
inflateMenu
(
R
.
menu
.
image_actions
)
toolbar
.
setOnMenuItemClickListener
{
view
->
it
.
setOnMenuItemClickListener
{
return
@setOnMenuItemClickListener
when
(
view
.
itemId
)
{
return
@setOnMenuItemClickListener
when
(
it
.
itemId
)
{
R
.
id
.
action_save_image
->
saveImage
(
context
)
R
.
id
.
action_save_image
->
saveImage
(
context
)
else
->
true
else
->
true
}
}
...
@@ -62,16 +62,14 @@ object ImageHelper {
...
@@ -62,16 +62,14 @@ object ImageHelper {
val
titleSize
=
context
.
resources
val
titleSize
=
context
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
viewer_toolbar_title
)
.
getDimensionPixelSize
(
R
.
dimen
.
viewer_toolbar_title
)
val
titleTextView
=
TextView
(
context
).
also
{
tv
->
val
titleTextView
=
TextView
(
context
).
also
{
with
(
tv
)
{
it
.
text
=
imageName
text
=
imageName
it
.
setTextColor
(
Color
.
WHITE
)
setTextColor
(
Color
.
WHITE
)
it
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_PX
,
titleSize
.
toFloat
())
setTextSize
(
TypedValue
.
COMPLEX_UNIT_PX
,
titleSize
.
toFloat
())
it
.
ellipsize
=
TextUtils
.
TruncateAt
.
END
ellipsize
=
TextUtils
.
TruncateAt
.
END
it
.
setSingleLine
()
setSingleLine
()
it
.
typeface
=
Typeface
.
DEFAULT_BOLD
typeface
=
Typeface
.
DEFAULT_BOLD
it
.
setPadding
(
pad
)
setPadding
(
pad
)
}
}
}
val
backArrowView
=
ImageView
(
context
).
also
{
val
backArrowView
=
ImageView
(
context
).
also
{
...
@@ -85,8 +83,8 @@ object ImageHelper {
...
@@ -85,8 +83,8 @@ object ImageHelper {
AppBarLayout
.
LayoutParams
.
WRAP_CONTENT
AppBarLayout
.
LayoutParams
.
WRAP_CONTENT
)
)
toolbar
.
addView
(
backArrowView
,
layoutParams
)
it
.
addView
(
backArrowView
,
layoutParams
)
toolbar
.
addView
(
titleTextView
,
layoutParams
)
it
.
addView
(
titleTextView
,
layoutParams
)
}
}
val
appBarLayout
=
AppBarLayout
(
context
).
also
{
val
appBarLayout
=
AppBarLayout
(
context
).
also
{
...
...
app/src/main/java/chat/rocket/android/members/adapter/MembersAdapter.kt
View file @
6a6a2547
...
@@ -10,9 +10,8 @@ import chat.rocket.android.util.extensions.inflate
...
@@ -10,9 +10,8 @@ import chat.rocket.android.util.extensions.inflate
import
kotlinx.android.synthetic.main.avatar.view.*
import
kotlinx.android.synthetic.main.avatar.view.*
import
kotlinx.android.synthetic.main.item_member.view.*
import
kotlinx.android.synthetic.main.item_member.view.*
class
MembersAdapter
(
class
MembersAdapter
(
private
val
listener
:
(
MemberUiModel
)
->
Unit
)
:
private
val
listener
:
(
MemberUiModel
)
->
Unit
RecyclerView
.
Adapter
<
MembersAdapter
.
ViewHolder
>()
{
)
:
RecyclerView
.
Adapter
<
MembersAdapter
.
ViewHolder
>()
{
private
var
dataSet
:
List
<
MemberUiModel
>
=
ArrayList
()
private
var
dataSet
:
List
<
MemberUiModel
>
=
ArrayList
()
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
MembersAdapter
.
ViewHolder
=
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
MembersAdapter
.
ViewHolder
=
...
@@ -44,8 +43,7 @@ class MembersAdapter(
...
@@ -44,8 +43,7 @@ class MembersAdapter(
fun
bind
(
memberUiModel
:
MemberUiModel
,
listener
:
(
MemberUiModel
)
->
Unit
)
=
with
(
itemView
)
{
fun
bind
(
memberUiModel
:
MemberUiModel
,
listener
:
(
MemberUiModel
)
->
Unit
)
=
with
(
itemView
)
{
image_avatar
.
setImageURI
(
memberUiModel
.
avatarUri
)
image_avatar
.
setImageURI
(
memberUiModel
.
avatarUri
)
text_member
.
content
=
memberUiModel
.
displayName
text_member
.
content
=
memberUiModel
.
displayName
text_member
.
setCompoundDrawablesRelativeWithIntrinsicBounds
(
text_member
.
setCompoundDrawablesRelativeWithIntrinsicBounds
(
DrawableHelper
.
getUserStatusDrawable
(
memberUiModel
.
status
,
context
),
null
,
null
,
null
)
DrawableHelper
.
getUserStatusDrawable
(
memberUiModel
.
status
,
context
),
null
,
null
,
null
)
setOnClickListener
{
listener
(
memberUiModel
)
}
setOnClickListener
{
listener
(
memberUiModel
)
}
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/members/ui/MembersFragment.kt
View file @
6a6a2547
...
@@ -52,9 +52,12 @@ class MembersFragment : Fragment(), MembersView {
...
@@ -52,9 +52,12 @@ class MembersFragment : Fragment(), MembersView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
@@ -77,7 +80,7 @@ class MembersFragment : Fragment(), MembersView {
...
@@ -77,7 +80,7 @@ class MembersFragment : Fragment(), MembersView {
setupToolbar
(
total
)
setupToolbar
(
total
)
if
(
adapter
.
itemCount
==
0
)
{
if
(
adapter
.
itemCount
==
0
)
{
adapter
.
prependData
(
dataSet
)
adapter
.
prependData
(
dataSet
)
if
(
dataSet
.
size
>=
59
)
{
// TODO Check why the API ret
u
rns the specified count -1
if
(
dataSet
.
size
>=
59
)
{
// TODO Check why the API ret
o
rns the specified count -1
recycler_view
.
addOnScrollListener
(
object
:
recycler_view
.
addOnScrollListener
(
object
:
EndlessRecyclerViewScrollListener
(
linearLayoutManager
)
{
EndlessRecyclerViewScrollListener
(
linearLayoutManager
)
{
override
fun
onLoadMore
(
override
fun
onLoadMore
(
...
...
app/src/main/java/chat/rocket/android/mentions/ui/MentionsFragment.kt
View file @
6a6a2547
...
@@ -48,9 +48,12 @@ class MentionsFragment : Fragment(), MentionsView {
...
@@ -48,9 +48,12 @@ class MentionsFragment : Fragment(), MentionsView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/pinnedmessages/ui/PinnedMessagesFragment.kt
View file @
6a6a2547
...
@@ -48,9 +48,12 @@ class PinnedMessagesFragment : Fragment(), PinnedMessagesView {
...
@@ -48,9 +48,12 @@ class PinnedMessagesFragment : Fragment(), PinnedMessagesView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
chatRoomId
=
getString
(
BUNDLE_CHAT_ROOM_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
chatRoomId
=
bundle
.
getString
(
BUNDLE_CHAT_ROOM_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/profile/ui/ProfileFragment.kt
View file @
6a6a2547
...
@@ -96,13 +96,9 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
...
@@ -96,13 +96,9 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
if
(
resultData
!=
null
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
resultData
!=
null
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
)
{
resultData
.
data
?.
let
{
presenter
.
updateAvatar
(
resultData
.
data
)
presenter
.
updateAvatar
(
it
)
}
}
else
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_CAMERA
)
{
}
else
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_CAMERA
)
{
resultData
.
extras
?.
get
(
"data"
)
?.
let
{
presenter
.
preparePhotoAndUpdateAvatar
(
resultData
.
extras
[
"data"
]
as
Bitmap
)
presenter
.
preparePhotoAndUpdateAvatar
(
it
as
Bitmap
)
}
}
}
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/push/PushManager.kt
View file @
6a6a2547
...
@@ -186,7 +186,7 @@ class PushManager @Inject constructor(
...
@@ -186,7 +186,7 @@ class PushManager @Inject constructor(
.
setGroupSummary
(
false
)
.
setGroupSummary
(
false
)
if
(
style
==
null
||
"inbox"
==
style
)
{
if
(
style
==
null
||
"inbox"
==
style
)
{
val
pushMessageList
=
groupedPushes
.
hostToPushMessageList
[
host
]
val
pushMessageList
=
groupedPushes
.
hostToPushMessageList
.
get
(
host
)
if
(
pushMessageList
!=
null
)
{
if
(
pushMessageList
!=
null
)
{
val
userMessages
=
pushMessageList
.
filter
{
val
userMessages
=
pushMessageList
.
filter
{
...
@@ -230,10 +230,7 @@ class PushManager @Inject constructor(
...
@@ -230,10 +230,7 @@ class PushManager @Inject constructor(
}
}
@RequiresApi
(
Build
.
VERSION_CODES
.
O
)
@RequiresApi
(
Build
.
VERSION_CODES
.
O
)
private
fun
createBaseNotificationBuilder
(
private
fun
createBaseNotificationBuilder
(
pushMessage
:
PushMessage
,
grouped
:
Boolean
=
false
):
NotificationCompat
.
Builder
{
pushMessage
:
PushMessage
,
grouped
:
Boolean
=
false
):
NotificationCompat
.
Builder
{
return
with
(
pushMessage
)
{
return
with
(
pushMessage
)
{
val
id
=
notificationId
.
toInt
()
val
id
=
notificationId
.
toInt
()
val
host
=
info
.
host
val
host
=
info
.
host
...
@@ -298,12 +295,7 @@ class PushManager @Inject constructor(
...
@@ -298,12 +295,7 @@ class PushManager @Inject constructor(
return
PendingIntent
.
getBroadcast
(
context
,
pushMessage
.
notificationId
.
toInt
(),
deleteIntent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
)
return
PendingIntent
.
getBroadcast
(
context
,
pushMessage
.
notificationId
.
toInt
(),
deleteIntent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
)
}
}
private
fun
getContentIntent
(
private
fun
getContentIntent
(
context
:
Context
,
notificationId
:
Int
,
pushMessage
:
PushMessage
,
grouped
:
Boolean
=
false
):
PendingIntent
{
context
:
Context
,
notificationId
:
Int
,
pushMessage
:
PushMessage
,
grouped
:
Boolean
=
false
):
PendingIntent
{
val
roomId
=
if
(!
grouped
)
pushMessage
.
info
.
roomId
else
null
val
roomId
=
if
(!
grouped
)
pushMessage
.
info
.
roomId
else
null
val
notificationIntent
=
context
.
changeServerIntent
(
pushMessage
.
info
.
host
,
chatRoomId
=
roomId
)
val
notificationIntent
=
context
.
changeServerIntent
(
pushMessage
.
info
.
host
,
chatRoomId
=
roomId
)
return
PendingIntent
.
getActivity
(
context
,
random
.
nextInt
(),
notificationIntent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
)
return
PendingIntent
.
getActivity
(
context
,
random
.
nextInt
(),
notificationIntent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
)
...
@@ -311,11 +303,7 @@ class PushManager @Inject constructor(
...
@@ -311,11 +303,7 @@ class PushManager @Inject constructor(
// CharSequence extensions
// CharSequence extensions
private
fun
CharSequence
.
fromHtml
():
Spanned
{
private
fun
CharSequence
.
fromHtml
():
Spanned
{
return
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
return
Html
.
fromHtml
(
this
as
String
)
Html
.
fromHtml
(
this
as
String
,
Html
.
FROM_HTML_MODE_LEGACY
)
}
else
{
Html
.
fromHtml
(
this
as
String
)
}
}
}
// NotificationCompat.Builder extensions
// NotificationCompat.Builder extensions
...
@@ -395,12 +383,12 @@ data class PushMessage(
...
@@ -395,12 +383,12 @@ data class PushMessage(
)
:
Parcelable
{
)
:
Parcelable
{
constructor
(
parcel
:
Parcel
)
:
this
(
constructor
(
parcel
:
Parcel
)
:
this
(
parcel
.
readString
()
?:
""
,
parcel
.
readString
()
?:
""
,
parcel
.
readParcelable
(
PushMessage
::
class
.
java
.
classLoader
)
?:
PushInfo
.
EMPTY
,
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
()
?:
""
,
parcel
.
readParcelable
(
PushMessage
::
class
.
java
.
classLoader
),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
())
parcel
.
readString
())
...
@@ -445,9 +433,9 @@ data class PushInfo @KotshiConstructor constructor(
...
@@ -445,9 +433,9 @@ data class PushInfo @KotshiConstructor constructor(
}
}
constructor
(
parcel
:
Parcel
)
:
this
(
constructor
(
parcel
:
Parcel
)
:
this
(
parcel
.
readString
()
!!
,
parcel
.
readString
(),
parcel
.
readString
()
!!
,
parcel
.
readString
(),
roomTypeOf
(
parcel
.
readString
()
!!
),
roomTypeOf
(
parcel
.
readString
()),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readParcelable
(
PushInfo
::
class
.
java
.
classLoader
))
parcel
.
readParcelable
(
PushInfo
::
class
.
java
.
classLoader
))
...
@@ -493,7 +481,7 @@ data class PushSender @KotshiConstructor constructor(
...
@@ -493,7 +481,7 @@ data class PushSender @KotshiConstructor constructor(
val
name
:
String
?
val
name
:
String
?
)
:
Parcelable
{
)
:
Parcelable
{
constructor
(
parcel
:
Parcel
)
:
this
(
constructor
(
parcel
:
Parcel
)
:
this
(
parcel
.
readString
()
!!
,
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
(),
parcel
.
readString
())
parcel
.
readString
())
...
...
app/src/main/java/chat/rocket/android/server/infraestructure/ConnectionManager.kt
View file @
6a6a2547
...
@@ -97,8 +97,8 @@ class ConnectionManager(
...
@@ -97,8 +97,8 @@ class ConnectionManager(
resubscribeRooms
()
resubscribeRooms
()
temporaryStatus
?.
let
{
tempS
tatus
->
temporaryStatus
?.
let
{
s
tatus
->
client
.
setTemporaryStatus
(
tempS
tatus
)
client
.
setTemporaryStatus
(
s
tatus
)
}
}
}
}
is
State
.
Waiting
->
{
is
State
.
Waiting
->
{
...
@@ -231,7 +231,7 @@ class ConnectionManager(
...
@@ -231,7 +231,7 @@ class ConnectionManager(
}
}
private
fun
resubscribeRooms
()
{
private
fun
resubscribeRooms
()
{
roomMessagesChannels
.
toList
().
map
{
(
roomId
,
_
)
->
roomMessagesChannels
.
toList
().
map
{
(
roomId
,
channel
)
->
client
.
subscribeRoomMessages
(
roomId
)
{
_
,
id
->
client
.
subscribeRoomMessages
(
roomId
)
{
_
,
id
->
Timber
.
d
(
"Subscribed to $roomId: $id"
)
Timber
.
d
(
"Subscribed to $roomId: $id"
)
subscriptionIdMap
[
roomId
]
=
id
subscriptionIdMap
[
roomId
]
=
id
...
...
app/src/main/java/chat/rocket/android/server/infraestructure/DatabaseMessageMapper.kt
View file @
6a6a2547
...
@@ -153,7 +153,7 @@ class DatabaseMessageMapper(private val dbManager: DatabaseManager) {
...
@@ -153,7 +153,7 @@ class DatabaseMessageMapper(private val dbManager: DatabaseManager) {
null
null
}
}
list
.
add
(
Attachment
(
val
attachment
=
Attachment
(
title
=
title
,
title
=
title
,
type
=
type
,
type
=
type
,
description
=
description
,
description
=
description
,
...
@@ -179,10 +179,10 @@ class DatabaseMessageMapper(private val dbManager: DatabaseManager) {
...
@@ -179,10 +179,10 @@ class DatabaseMessageMapper(private val dbManager: DatabaseManager) {
authorLink
=
authorLink
,
authorLink
=
authorLink
,
fields
=
fields
,
fields
=
fields
,
fallback
=
fallback
,
fallback
=
fallback
,
buttonAlignment
=
if
(
actions
!=
null
&&
actions
.
isNotEmpty
())
buttonAlignment
buttonAlignment
=
if
(
actions
!=
null
&&
actions
.
isNotEmpty
())
buttonAlignment
?:
"vertical"
else
null
,
?:
"vertical"
else
null
,
actions
=
actions
actions
=
actions
))
)
list
.
add
(
attachment
)
}
}
}
}
return
list
return
list
...
...
app/src/main/java/chat/rocket/android/server/infraestructure/DatabaseMessagesRepository.kt
View file @
6a6a2547
...
@@ -46,8 +46,8 @@ class DatabaseMessagesRepository(
...
@@ -46,8 +46,8 @@ class DatabaseMessagesRepository(
dbManager
.
processMessagesBatch
(
listOf
(
message
)).
join
()
dbManager
.
processMessagesBatch
(
listOf
(
message
)).
join
()
}
}
override
suspend
fun
saveAll
(
newM
essages
:
List
<
Message
>)
{
override
suspend
fun
saveAll
(
m
essages
:
List
<
Message
>)
{
dbManager
.
processMessagesBatch
(
newM
essages
).
join
()
dbManager
.
processMessagesBatch
(
m
essages
).
join
()
}
}
override
suspend
fun
removeById
(
id
:
String
)
{
override
suspend
fun
removeById
(
id
:
String
)
{
...
@@ -78,7 +78,7 @@ class DatabaseMessagesRepository(
...
@@ -78,7 +78,7 @@ class DatabaseMessagesRepository(
override
suspend
fun
getLastSyncDate
(
roomId
:
String
):
Long
?
=
withContext
(
CommonPool
)
{
override
suspend
fun
getLastSyncDate
(
roomId
:
String
):
Long
?
=
withContext
(
CommonPool
)
{
retryDB
(
"getLastSync($roomId)"
)
{
retryDB
(
"getLastSync($roomId)"
)
{
dbManager
.
messageDao
().
getLastSync
(
roomId
)
?.
timestamp
dbManager
.
messageDao
().
getLastSync
(
roomId
)
?.
let
{
it
.
timestamp
}
}
}
}
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/server/infraestructure/SharedPreferencesAccountsRepository.kt
View file @
6a6a2547
...
@@ -14,12 +14,12 @@ class SharedPreferencesAccountsRepository(
...
@@ -14,12 +14,12 @@ class SharedPreferencesAccountsRepository(
private
val
moshi
:
Moshi
private
val
moshi
:
Moshi
)
:
AccountsRepository
{
)
:
AccountsRepository
{
override
fun
save
(
a
ccount
:
Account
)
{
override
fun
save
(
newA
ccount
:
Account
)
{
val
accounts
=
load
()
val
accounts
=
load
()
val
newList
=
accounts
.
filter
{
account
->
a
ccount
.
serverUrl
!=
account
.
serverUrl
}
val
newList
=
accounts
.
filter
{
account
->
newA
ccount
.
serverUrl
!=
account
.
serverUrl
}
.
toMutableList
()
.
toMutableList
()
newList
.
add
(
0
,
a
ccount
)
newList
.
add
(
0
,
newA
ccount
)
save
(
newList
)
save
(
newList
)
}
}
...
@@ -28,7 +28,7 @@ class SharedPreferencesAccountsRepository(
...
@@ -28,7 +28,7 @@ class SharedPreferencesAccountsRepository(
val
type
=
Types
.
newParameterizedType
(
List
::
class
.
java
,
Account
::
class
.
java
)
val
type
=
Types
.
newParameterizedType
(
List
::
class
.
java
,
Account
::
class
.
java
)
val
adapter
=
moshi
.
adapter
<
List
<
Account
>>(
type
)
val
adapter
=
moshi
.
adapter
<
List
<
Account
>>(
type
)
return
if
(
json
==
null
)
emptyList
()
else
adapter
.
fromJson
(
json
)
?:
emptyList
()
return
adapter
.
fromJson
(
json
)
?:
emptyList
()
}
}
override
fun
remove
(
serverUrl
:
String
)
{
override
fun
remove
(
serverUrl
:
String
)
{
...
...
app/src/main/java/chat/rocket/android/server/infraestructure/SharedPrefsBasicAuthRepository.kt
View file @
6a6a2547
...
@@ -15,7 +15,8 @@ class SharedPrefsBasicAuthRepository(
...
@@ -15,7 +15,8 @@ class SharedPrefsBasicAuthRepository(
)
:
BasicAuthRepository
{
)
:
BasicAuthRepository
{
override
fun
save
(
basicAuth
:
BasicAuth
)
{
override
fun
save
(
basicAuth
:
BasicAuth
)
{
val
newList
=
load
().
filter
{
item
->
item
.
host
!=
item
.
host
}.
toMutableList
()
val
newList
=
load
().
filter
{
basicAuth
->
basicAuth
.
host
!=
basicAuth
.
host
}
.
toMutableList
()
newList
.
add
(
0
,
basicAuth
)
newList
.
add
(
0
,
basicAuth
)
save
(
newList
)
save
(
newList
)
}
}
...
@@ -25,7 +26,7 @@ class SharedPrefsBasicAuthRepository(
...
@@ -25,7 +26,7 @@ class SharedPrefsBasicAuthRepository(
val
type
=
Types
.
newParameterizedType
(
List
::
class
.
java
,
BasicAuth
::
class
.
java
)
val
type
=
Types
.
newParameterizedType
(
List
::
class
.
java
,
BasicAuth
::
class
.
java
)
val
adapter
=
moshi
.
adapter
<
List
<
BasicAuth
>>(
type
)
val
adapter
=
moshi
.
adapter
<
List
<
BasicAuth
>>(
type
)
return
if
(
json
==
null
)
emptyList
()
else
adapter
.
fromJson
(
json
)
?:
emptyList
()
return
adapter
.
fromJson
(
json
)
?:
emptyList
()
}
}
private
fun
save
(
basicAuths
:
List
<
BasicAuth
>)
{
private
fun
save
(
basicAuths
:
List
<
BasicAuth
>)
{
...
...
app/src/main/java/chat/rocket/android/server/presentation/ChangeServerPresenter.kt
View file @
6a6a2547
...
@@ -51,7 +51,6 @@ class ChangeServerPresenter @Inject constructor(
...
@@ -51,7 +51,6 @@ class ChangeServerPresenter @Inject constructor(
val
settings
=
settingsRepository
.
get
(
serverUrl
)
val
settings
=
settingsRepository
.
get
(
serverUrl
)
if
(
settings
==
null
)
{
if
(
settings
==
null
)
{
// TODO - reload settings...
// TODO - reload settings...
// settingsRepository returns non nullable settings
}
}
// Call disconnect on the old url if any...
// Call disconnect on the old url if any...
...
...
app/src/main/java/chat/rocket/android/userdetails/ui/UserDetailsFragment.kt
View file @
6a6a2547
...
@@ -52,9 +52,12 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
...
@@ -52,9 +52,12 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
AndroidSupportInjection
.
inject
(
this
)
AndroidSupportInjection
.
inject
(
this
)
arguments
?.
run
{
val
bundle
=
arguments
userId
=
getString
(
BUNDLE_USER_ID
,
""
)
if
(
bundle
!=
null
)
{
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
userId
=
bundle
.
getString
(
BUNDLE_USER_ID
)
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
...
app/src/main/java/chat/rocket/android/util/HttpLoggingInterceptor.kt
View file @
6a6a2547
...
@@ -193,7 +193,7 @@ class HttpLoggingInterceptor constructor(private val logger: Logger) : Intercept
...
@@ -193,7 +193,7 @@ class HttpLoggingInterceptor constructor(private val logger: Logger) : Intercept
val
responseBody
=
response
.
body
()
val
responseBody
=
response
.
body
()
val
contentLength
=
responseBody
!!
.
contentLength
()
val
contentLength
=
responseBody
!!
.
contentLength
()
val
bodySize
=
if
(
contentLength
!=
-
1L
)
"$contentLength
-byte"
else
"unknown-length"
val
bodySize
=
if
(
contentLength
!=
-
1L
)
contentLength
.
toString
()
+
"
-byte"
else
"unknown-length"
val
responseStr
=
if
(
response
.
message
().
isEmpty
())
""
else
" ${response.message()}"
val
responseStr
=
if
(
response
.
message
().
isEmpty
())
""
else
" ${response.message()}"
logger
.
log
(
"<-- ${response.code()}$responseStr ${response.request().url()}"
logger
.
log
(
"<-- ${response.code()}$responseStr ${response.request().url()}"
+
" ("
+
tookMs
+
"ms"
+
(
if
(!
logHeaders
)
", $bodySize body"
else
""
)
+
')'
.
toString
())
+
" ("
+
tookMs
+
"ms"
+
(
if
(!
logHeaders
)
", $bodySize body"
else
""
)
+
')'
.
toString
())
...
...
app/src/main/java/chat/rocket/android/util/extensions/String.kt
View file @
6a6a2547
...
@@ -69,8 +69,11 @@ fun String.userId(userId: String?): String? {
...
@@ -69,8 +69,11 @@ fun String.userId(userId: String?): String? {
return
userId
?.
let
{
this
.
replace
(
it
,
""
)
}
return
userId
?.
let
{
this
.
replace
(
it
,
""
)
}
}
}
fun
String
.
lowercaseUrl
():
String
?
=
HttpUrl
.
parse
(
this
)
?.
run
{
fun
String
.
lowercaseUrl
():
String
?
{
newBuilder
().
scheme
(
scheme
().
toLowerCase
()).
build
().
toString
()
val
httpUrl
=
HttpUrl
.
parse
(
this
)
val
newScheme
=
httpUrl
?.
scheme
()
?.
toLowerCase
()
return
httpUrl
?.
newBuilder
()
?.
scheme
(
newScheme
)
?.
build
()
?.
toString
()
}
}
fun
String
?.
isNotNullNorEmpty
():
Boolean
=
this
!=
null
&&
this
.
isNotEmpty
()
fun
String
?.
isNotNullNorEmpty
():
Boolean
=
this
!=
null
&&
this
.
isNotEmpty
()
...
...
app/src/main/java/chat/rocket/android/webview/adminpanel/ui/AdminPanelWebViewFragment.kt
View file @
6a6a2547
...
@@ -27,11 +27,13 @@ class AdminPanelWebViewFragment : DaggerFragment() {
...
@@ -27,11 +27,13 @@ class AdminPanelWebViewFragment : DaggerFragment() {
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
arguments
?.
run
{
val
bundle
=
arguments
webPageUrl
=
getString
(
BUNDLE_WEB_PAGE_URL
,
""
)
if
(
bundle
!=
null
)
{
userToken
=
getString
(
BUNDLE_USER_TOKEN
,
""
)
webPageUrl
=
bundle
.
getString
(
BUNDLE_WEB_PAGE_URL
)
userToken
=
bundle
.
getString
(
BUNDLE_USER_TOKEN
)
}
?:
requireNotNull
(
arguments
)
{
"no arguments supplied when the fragment was instantiated"
}
}
else
{
requireNotNull
(
bundle
)
{
"no arguments supplied when the fragment was instantiated"
}
}
}
}
override
fun
onCreateView
(
override
fun
onCreateView
(
...
@@ -63,7 +65,7 @@ class AdminPanelWebViewFragment : DaggerFragment() {
...
@@ -63,7 +65,7 @@ class AdminPanelWebViewFragment : DaggerFragment() {
web_view
.
webViewClient
=
object
:
WebViewClient
()
{
web_view
.
webViewClient
=
object
:
WebViewClient
()
{
override
fun
onPageFinished
(
view
:
WebView
,
url
:
String
)
{
override
fun
onPageFinished
(
view
:
WebView
,
url
:
String
)
{
super
.
onPageFinished
(
view
,
url
)
super
.
onPageFinished
(
view
,
url
)
ui
{
ui
{
_
->
view_loading
.
hide
()
view_loading
.
hide
()
web_view
.
evaluateJavascript
(
"Meteor.loginWithToken('$userToken', function() { })"
)
{}
web_view
.
evaluateJavascript
(
"Meteor.loginWithToken('$userToken', function() { })"
)
{}
}
}
...
...
app/src/main/java/chat/rocket/android/widget/DividerItemDecoration.kt
View file @
6a6a2547
...
@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView
...
@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView
* @see RecyclerView.ItemDecoration
* @see RecyclerView.ItemDecoration
*/
*/
class
DividerItemDecoration
()
:
RecyclerView
.
ItemDecoration
()
{
class
DividerItemDecoration
()
:
RecyclerView
.
ItemDecoration
()
{
private
var
divider
:
Drawable
?
=
null
private
lateinit
var
divider
:
Drawable
private
var
boundStart
=
0
private
var
boundStart
=
0
private
var
boundEnd
=
0
private
var
boundEnd
=
0
...
@@ -59,10 +59,10 @@ class DividerItemDecoration() : RecyclerView.ItemDecoration() {
...
@@ -59,10 +59,10 @@ class DividerItemDecoration() : RecyclerView.ItemDecoration() {
val
params
=
child
.
layoutParams
as
RecyclerView
.
LayoutParams
val
params
=
child
.
layoutParams
as
RecyclerView
.
LayoutParams
val
top
=
child
.
bottom
+
params
.
bottomMargin
val
top
=
child
.
bottom
+
params
.
bottomMargin
val
bottom
=
top
+
(
divider
?.
intrinsicHeight
?:
0
)
val
bottom
=
top
+
divider
.
intrinsicHeight
divider
?
.
setBounds
(
left
,
top
,
right
,
bottom
)
divider
.
setBounds
(
left
,
top
,
right
,
bottom
)
divider
?
.
draw
(
c
)
divider
.
draw
(
c
)
}
}
}
}
...
...
util/src/main/java/chat/rocket/android/util/extension/Widget.kt
View file @
6a6a2547
package
chat.rocket.android.util.extension
package
chat.rocket.android.util.extension
import
android.content.Context
import
android.os.Build
import
android.widget.TextView
import
androidx.appcompat.widget.SearchView
import
androidx.appcompat.widget.SearchView
fun
SearchView
.
onQueryTextListener
(
queryListener
:
(
String
)
->
Unit
)
{
fun
SearchView
.
onQueryTextListener
(
queryListener
:
(
String
)
->
Unit
)
{
...
@@ -17,12 +14,4 @@ fun SearchView.onQueryTextListener(queryListener: (String) -> Unit) {
...
@@ -17,12 +14,4 @@ fun SearchView.onQueryTextListener(queryListener: (String) -> Unit) {
return
true
return
true
}
}
})
})
}
fun
TextView
.
setTextViewAppearance
(
context
:
Context
,
style
:
Int
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
setTextAppearance
(
style
)
}
else
{
setTextAppearance
(
context
,
style
)
}
}
}
\ 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