mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Fix issues with chat title crash
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
b95bb003df
commit
e1d9a24130
@ -38,8 +38,8 @@ android {
|
|||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
versionCode 116
|
versionCode 117
|
||||||
versionName "7.0.2"
|
versionName "7.0.3"
|
||||||
|
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
renderscriptTargetApi 19
|
renderscriptTargetApi 19
|
||||||
@ -199,8 +199,8 @@ dependencies {
|
|||||||
implementation 'net.orange-box.storebox:storebox-lib:1.4.0'
|
implementation 'net.orange-box.storebox:storebox-lib:1.4.0'
|
||||||
compileOnly 'org.projectlombok:lombok:1.18.8'
|
compileOnly 'org.projectlombok:lombok:1.18.8'
|
||||||
annotationProcessor "org.projectlombok:lombok:1.18.8"
|
annotationProcessor "org.projectlombok:lombok:1.18.8"
|
||||||
implementation 'com.jakewharton:butterknife:10.1.0'
|
implementation 'com.jakewharton:butterknife:10.2.0'
|
||||||
kapt 'com.jakewharton:butterknife-compiler:10.1.0'
|
kapt 'com.jakewharton:butterknife-compiler:10.2.0'
|
||||||
implementation 'com.github.HITGIF:TextFieldBoxes:1.4.5'
|
implementation 'com.github.HITGIF:TextFieldBoxes:1.4.5'
|
||||||
implementation 'eu.davidea:flexible-adapter:5.1.0'
|
implementation 'eu.davidea:flexible-adapter:5.1.0'
|
||||||
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
||||||
|
@ -111,31 +111,31 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
.OnMessageLongClickListener<IMessage>, MessageHolders.ContentChecker<IMessage> {
|
.OnMessageLongClickListener<IMessage>, MessageHolders.ContentChecker<IMessage> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit internal var ncApi: NcApi
|
lateinit var ncApi: NcApi
|
||||||
@Inject
|
@Inject
|
||||||
lateinit internal var userUtils: UserUtils
|
lateinit var userUtils: UserUtils
|
||||||
@Inject
|
@Inject
|
||||||
lateinit internal var appPreferences: AppPreferences
|
lateinit var appPreferences: AppPreferences
|
||||||
@Inject
|
@Inject
|
||||||
lateinit internal var context: Context
|
lateinit var context: Context
|
||||||
@Inject
|
@Inject
|
||||||
lateinit internal var eventBus: EventBus
|
lateinit var eventBus: EventBus
|
||||||
@BindView(R.id.messagesListView)
|
@BindView(R.id.messagesListView)
|
||||||
lateinit internal var messagesListView: MessagesList
|
lateinit var messagesListView: MessagesList
|
||||||
@BindView(R.id.messageInputView)
|
@BindView(R.id.messageInputView)
|
||||||
lateinit internal var messageInputView: MessageInput
|
lateinit var messageInputView: MessageInput
|
||||||
@BindView(R.id.messageInput)
|
@BindView(R.id.messageInput)
|
||||||
lateinit internal var messageInput: EmojiEditText
|
lateinit var messageInput: EmojiEditText
|
||||||
@BindView(R.id.popupBubbleView)
|
@BindView(R.id.popupBubbleView)
|
||||||
lateinit internal var popupBubble: PopupBubble
|
lateinit var popupBubble: PopupBubble
|
||||||
@BindView(R.id.progressBar)
|
@BindView(R.id.progressBar)
|
||||||
lateinit internal var loadingProgressBar: ProgressBar
|
lateinit var loadingProgressBar: ProgressBar
|
||||||
@BindView(R.id.smileyButton)
|
@BindView(R.id.smileyButton)
|
||||||
lateinit internal var smileyButton: ImageButton
|
lateinit var smileyButton: ImageButton
|
||||||
@BindView(R.id.lobby_view)
|
@BindView(R.id.lobby_view)
|
||||||
lateinit internal var lobbyView: RelativeLayout
|
lateinit var lobbyView: RelativeLayout
|
||||||
@BindView(R.id.lobby_text_view)
|
@BindView(R.id.lobby_text_view)
|
||||||
lateinit internal var conversationLobbyText: TextView
|
lateinit var conversationLobbyText: TextView
|
||||||
private val disposableList = ArrayList<Disposable>()
|
private val disposableList = ArrayList<Disposable>()
|
||||||
private var roomToken: String? = null
|
private var roomToken: String? = null
|
||||||
private val conversationUser: UserEntity?
|
private val conversationUser: UserEntity?
|
||||||
@ -425,10 +425,10 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
messageInputView!!.setAttachmentsListener { showBrowserScreen(BrowserController.BrowserType.DAV_BROWSER) }
|
messageInputView.setAttachmentsListener { showBrowserScreen(BrowserController.BrowserType.DAV_BROWSER) }
|
||||||
|
|
||||||
messageInputView!!.button.setOnClickListener { v -> submitMessage() }
|
messageInputView.button.setOnClickListener { v -> submitMessage() }
|
||||||
messageInputView!!.button.contentDescription = resources!!
|
messageInputView.button.contentDescription = resources!!
|
||||||
.getString(R.string.nc_description_send_message_button)
|
.getString(R.string.nc_description_send_message_button)
|
||||||
|
|
||||||
if (currentConversation != null && currentConversation!!.roomId != null) {
|
if (currentConversation != null && currentConversation!!.roomId != null) {
|
||||||
@ -560,7 +560,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
ApplicationWideCurrentRoomHolder.getInstance().isInCall = false
|
ApplicationWideCurrentRoomHolder.getInstance().isInCall = false
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser
|
ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser
|
||||||
|
|
||||||
isLinkPreviewAllowed = appPreferences!!.areLinkPreviewsAllowed
|
isLinkPreviewAllowed = appPreferences.areLinkPreviewsAllowed
|
||||||
|
|
||||||
emojiPopup = EmojiPopup.Builder.fromRootView(view).setOnEmojiPopupShownListener {
|
emojiPopup = EmojiPopup.Builder.fromRootView(view).setOnEmojiPopupShownListener {
|
||||||
if (resources != null) {
|
if (resources != null) {
|
||||||
@ -570,7 +570,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
}.setOnEmojiPopupDismissListener {
|
}.setOnEmojiPopupDismissListener {
|
||||||
smileyButton.setColorFilter(resources!!.getColor(R.color.emoji_icons),
|
smileyButton.setColorFilter(resources!!.getColor(R.color.emoji_icons),
|
||||||
PorterDuff.Mode.SRC_IN)
|
PorterDuff.Mode.SRC_IN)
|
||||||
}.setOnEmojiClickListener { emoji, imageView -> messageInput!!.editableText.append(" ") }.build(messageInput!!)
|
}.setOnEmojiClickListener { emoji, imageView -> messageInput.editableText.append(" ") }.build(messageInput)
|
||||||
|
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
KeyboardUtils(activity!!, getView(), false)
|
KeyboardUtils(activity!!, getView(), false)
|
||||||
@ -598,7 +598,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
override fun onDetach(view: View) {
|
override fun onDetach(view: View) {
|
||||||
super.onDetach(view)
|
super.onDetach(view)
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().clear()
|
ApplicationWideCurrentRoomHolder.getInstance().clear()
|
||||||
eventBus!!.unregister(this)
|
eventBus.unregister(this)
|
||||||
|
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
activity!!.findViewById<View>(R.id.toolbar).setOnClickListener(null)
|
activity!!.findViewById<View>(R.id.toolbar).setOnClickListener(null)
|
||||||
@ -616,7 +616,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getTitle(): String? {
|
override fun getTitle(): String? {
|
||||||
if (currentConversation != null) {
|
if (currentConversation != null && currentConversation!!.displayName != null) {
|
||||||
return EmojiCompat.get().process(currentConversation!!.displayName).toString()
|
return EmojiCompat.get().process(currentConversation!!.displayName).toString()
|
||||||
} else {
|
} else {
|
||||||
return ""
|
return ""
|
||||||
@ -648,7 +648,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
|
|
||||||
private fun startPing() {
|
private fun startPing() {
|
||||||
if (!conversationUser!!.hasSpreedFeatureCapability("no-ping")) {
|
if (!conversationUser!!.hasSpreedFeatureCapability("no-ping")) {
|
||||||
ncApi!!.pingCall(credentials, ApiUtils.getUrlForCallPing(conversationUser.baseUrl, roomToken))
|
ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(conversationUser.baseUrl, roomToken))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.repeatWhen { observable -> observable.delay(5000, TimeUnit.MILLISECONDS) }
|
.repeatWhen { observable -> observable.delay(5000, TimeUnit.MILLISECONDS) }
|
||||||
@ -740,7 +740,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun leaveRoom() {
|
private fun leaveRoom() {
|
||||||
ncApi!!.leaveRoom(credentials,
|
ncApi.leaveRoom(credentials,
|
||||||
ApiUtils.getUrlForSettingMyselfAsActiveParticipant(conversationUser!!.baseUrl,
|
ApiUtils.getUrlForSettingMyselfAsActiveParticipant(conversationUser!!.baseUrl,
|
||||||
roomToken))
|
roomToken))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
@ -789,7 +789,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun submitMessage() {
|
private fun submitMessage() {
|
||||||
val editable = messageInput!!.editableText
|
val editable = messageInput.editableText
|
||||||
val mentionSpans = editable.getSpans(0, editable.length,
|
val mentionSpans = editable.getSpans(0, editable.length,
|
||||||
Spans.MentionChipSpan::class.java)
|
Spans.MentionChipSpan::class.java)
|
||||||
var mentionSpan: Spans.MentionChipSpan
|
var mentionSpan: Spans.MentionChipSpan
|
||||||
@ -802,13 +802,13 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
editable.replace(editable.getSpanStart(mentionSpan), editable.getSpanEnd(mentionSpan), "@$mentionId")
|
editable.replace(editable.getSpanStart(mentionSpan), editable.getSpanEnd(mentionSpan), "@$mentionId")
|
||||||
}
|
}
|
||||||
|
|
||||||
messageInput!!.setText("")
|
messageInput.setText("")
|
||||||
sendMessage(editable)
|
sendMessage(editable)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sendMessage(message: CharSequence) {
|
private fun sendMessage(message: CharSequence) {
|
||||||
|
|
||||||
ncApi!!.sendChatMessage(credentials, ApiUtils.getUrlForChat(conversationUser!!.baseUrl, roomToken),
|
ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(conversationUser!!.baseUrl, roomToken),
|
||||||
message, conversationUser.displayName)
|
message, conversationUser.displayName)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
@ -820,13 +820,11 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
override fun onNext(genericOverall: GenericOverall) {
|
override fun onNext(genericOverall: GenericOverall) {
|
||||||
myFirstMessage = message
|
myFirstMessage = message
|
||||||
|
|
||||||
if (popupBubble != null && popupBubble!!.isShown) {
|
if (popupBubble.isShown) {
|
||||||
popupBubble!!.hide()
|
popupBubble.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (messagesListView != null) {
|
messagesListView.smoothScrollToPosition(0)
|
||||||
messagesListView!!.smoothScrollToPosition(0)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onError(e: Throwable) {
|
override fun onError(e: Throwable) {
|
||||||
@ -835,11 +833,11 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
if (Integer.toString(code).startsWith("2")) {
|
if (Integer.toString(code).startsWith("2")) {
|
||||||
myFirstMessage = message
|
myFirstMessage = message
|
||||||
|
|
||||||
if (popupBubble != null && popupBubble!!.isShown) {
|
if (popupBubble.isShown) {
|
||||||
popupBubble!!.hide()
|
popupBubble.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
messagesListView!!.smoothScrollToPosition(0)
|
messagesListView.smoothScrollToPosition(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -926,7 +924,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
})
|
})
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ncApi!!.pullChatMessages(credentials,
|
ncApi.pullChatMessages(credentials,
|
||||||
ApiUtils.getUrlForChat(conversationUser!!.baseUrl, roomToken), fieldMap)
|
ApiUtils.getUrlForChat(conversationUser!!.baseUrl, roomToken), fieldMap)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
@ -1206,9 +1204,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
|
|||||||
val clipboardManager = activity!!.getSystemService(Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager
|
val clipboardManager = activity!!.getSystemService(Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager
|
||||||
val clipData = android.content.ClipData.newPlainText(
|
val clipData = android.content.ClipData.newPlainText(
|
||||||
resources!!.getString(R.string.nc_app_name), message.text)
|
resources!!.getString(R.string.nc_app_name), message.text)
|
||||||
if (clipboardManager != null) {
|
clipboardManager.primaryClip = clipData
|
||||||
clipboardManager.primaryClip = clipData
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
kotlinVersion = '1.3.41'
|
kotlinVersion = '1.3.50'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
Loading…
Reference in New Issue
Block a user