Skip to content

Commit 5d65918

Browse files
committed
WIP implement new Rich Object Strings handling (no more "individualHashMap" stuff)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
1 parent f99a164 commit 5d65918

13 files changed

Lines changed: 222 additions & 145 deletions

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingDeckCardViewHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class IncomingDeckCardViewHolder(incomingView: View, payload: Any) :
138138
private fun showDeckCard(message: ChatMessage) {
139139
if (message.messageParameters != null && message.messageParameters!!.size > 0) {
140140
for (key in message.messageParameters!!.keys) {
141-
val individualHashMap: Map<String?, String?> = message.messageParameters!![key]!!
141+
val individualHashMap: Map<String, String> = message.messageParameters!![key]!!
142142
if (individualHashMap["type"] == "deck-card") {
143143
cardName = individualHashMap["name"]
144144
stackName = individualHashMap["stackname"]

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
214214
private fun setLocationDataOnMessageItem(message: ChatMessage) {
215215
if (message.messageParameters != null && message.messageParameters!!.size > 0) {
216216
for (key in message.messageParameters!!.keys) {
217-
val individualHashMap: Map<String?, String?> = message.messageParameters!![key]!!
217+
val individualHashMap: Map<String, String> = message.messageParameters!![key]!!
218218
if (individualHashMap["type"] == "geo-location") {
219219
locationLon = individualHashMap["longitude"]
220220
locationLat = individualHashMap["latitude"]

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPollMessageViewHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) :
119119

120120
if (message.messageParameters != null && message.messageParameters!!.size > 0) {
121121
for (key in message.messageParameters!!.keys) {
122-
val individualHashMap: Map<String?, String?> = message.messageParameters!![key]!!
122+
val individualHashMap: Map<String, String> = message.messageParameters!![key]!!
123123
if (individualHashMap["type"] == "talk-poll") {
124124
pollId = individualHashMap["id"]
125125
pollName = individualHashMap["name"].toString()

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder
132132
import com.nextcloud.talk.adapters.messages.OutcomingTextMessageViewHolder
133133
import com.nextcloud.talk.adapters.messages.OutcomingVoiceMessageViewHolder
134134
import com.nextcloud.talk.adapters.messages.PreviewMessageInterface
135-
import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder
136135
import com.nextcloud.talk.adapters.messages.SystemMessageInterface
137136
import com.nextcloud.talk.adapters.messages.SystemMessageViewHolder
138137
import com.nextcloud.talk.adapters.messages.TalkMessagesListAdapter
@@ -245,6 +244,7 @@ import kotlinx.coroutines.CoroutineScope
245244
import kotlinx.coroutines.Dispatchers
246245
import kotlinx.coroutines.FlowPreview
247246
import kotlinx.coroutines.flow.collect
247+
import kotlinx.coroutines.flow.first
248248
import kotlinx.coroutines.flow.onEach
249249
import kotlinx.coroutines.launch
250250
import kotlinx.coroutines.runBlocking
@@ -263,7 +263,6 @@ import java.util.Locale
263263
import java.util.concurrent.ExecutionException
264264
import javax.inject.Inject
265265
import kotlin.math.roundToInt
266-
import kotlinx.coroutines.flow.first
267266

268267
@Suppress("TooManyFunctions", "LargeClass", "LongMethod")
269268
@AutoInjector(NextcloudTalkApplication::class)
@@ -672,10 +671,6 @@ class ChatActivity :
672671
fun downloadAndOpenFile(messageId: Int) {
673672
lifecycleScope.launch {
674673
val chatMessage = chatViewModel.getMessageById(messageId.toLong()).first()
675-
676-
// dirty hack to fill selectedIndividualHashMap
677-
val dirtyHack = chatMessage.imageUrl
678-
679674
FileViewerUtils(this@ChatActivity, conversationUser).openFile(chatMessage)
680675
}
681676
}
@@ -1704,7 +1699,7 @@ class ChatActivity :
17041699
adapter?.registerViewClickListener(
17051700
R.id.playPauseBtn
17061701
) { _, message ->
1707-
val filename = message.selectedIndividualHashMap!!["name"]
1702+
val filename = message.fileParameters.name
17081703
val file = File(context.cacheDir, filename!!)
17091704
if (file.exists()) {
17101705
if (message.isPlayingVoiceMessage) {
@@ -1735,7 +1730,7 @@ class ChatActivity :
17351730
}
17361731

17371732
private fun setUpWaveform(message: ChatMessage, thenPlay: Boolean = true, backgroundPlayAllowed: Boolean = false) {
1738-
val filename = message.selectedIndividualHashMap!!["name"]
1733+
val filename = message.fileParameters.name
17391734
val file = File(context.cacheDir, filename!!)
17401735
if (file.exists() && message.voiceMessageFloatArray == null) {
17411736
message.isDownloadingVoiceMessage = true
@@ -1768,7 +1763,7 @@ class ChatActivity :
17681763
if (!nextMessage.isVoiceMessage) break
17691764

17701765
downloadFileToCache(nextMessage, false) {
1771-
nextMessage.selectedIndividualHashMap?.get("name")?.let { newFileName ->
1766+
nextMessage.fileParameters.name?.let { newFileName ->
17721767
val newFile = File(context.cacheDir, newFileName)
17731768
chatViewModel.queueInMediaPlayer(newFile.canonicalPath, nextMessage)
17741769
}
@@ -2228,14 +2223,11 @@ class ChatActivity :
22282223
message.activeUser!!.capabilities!!
22292224
.spreedCapability!!
22302225
)
2231-
val fileName = message.selectedIndividualHashMap!!["name"]
2232-
var size = message.selectedIndividualHashMap!!["size"]
2233-
if (size == null) {
2234-
size = "-1"
2235-
}
2236-
val fileSize = size.toLong()
2237-
val fileId = message.selectedIndividualHashMap!!["id"]
2238-
val path = message.selectedIndividualHashMap!!["path"]
2226+
val fileName = message.fileParameters.name
2227+
var fileSize = message.fileParameters.size
2228+
2229+
val fileId = message.fileParameters.id
2230+
val path = message.fileParameters.path
22392231

22402232
// check if download worker is already running
22412233
val workers = WorkManager.getInstance(
@@ -3346,17 +3338,6 @@ class ChatActivity :
33463338
return layoutManager?.findFirstVisibleItemPosition() == 0
33473339
}
33483340

3349-
private fun setUnreadMessageMarker(chatMessageList: List<ChatMessage>) {
3350-
if (chatMessageList.isNotEmpty()) {
3351-
val unreadChatMessage = ChatMessage()
3352-
unreadChatMessage.jsonMessageId = UNREAD_MESSAGES_MARKER_ID
3353-
unreadChatMessage.actorId = "-1"
3354-
unreadChatMessage.timestamp = chatMessageList[0].timestamp
3355-
unreadChatMessage.message = context.getString(R.string.nc_new_messages)
3356-
adapter?.addToStart(unreadChatMessage, false)
3357-
}
3358-
}
3359-
33603341
// private fun processMessagesNotFromTheFuture(chatMessageList: List<ChatMessage>) {
33613342
// for (i in chatMessageList.indices) {
33623343
// if (chatMessageList.size > i + 1) {
@@ -4439,7 +4420,7 @@ class ChatActivity :
44394420
}
44404421

44414422
fun share(message: ChatMessage) {
4442-
val filename = message.selectedIndividualHashMap!!["name"]
4423+
val filename = message.fileParameters.name
44434424
path = applicationContext.cacheDir.absolutePath + "/" + filename
44444425
val shareUri = FileProvider.getUriForFile(
44454426
this,
@@ -4457,7 +4438,7 @@ class ChatActivity :
44574438
}
44584439

44594440
fun checkIfSharable(message: ChatMessage) {
4460-
val filename = message.selectedIndividualHashMap!!["name"]
4441+
val filename = message.fileParameters.name
44614442
path = applicationContext.cacheDir.absolutePath + "/" + filename
44624443
val file = File(context.cacheDir, filename!!)
44634444
if (file.exists()) {
@@ -4471,7 +4452,7 @@ class ChatActivity :
44714452

44724453
private fun showSaveToStorageWarning(message: ChatMessage) {
44734454
val saveFragment: DialogFragment = SaveToStorageDialogFragment.newInstance(
4474-
message.selectedIndividualHashMap!!["name"]!!
4455+
message.fileParameters.name
44754456
)
44764457
saveFragment.show(
44774458
supportFragmentManager,
@@ -4480,7 +4461,7 @@ class ChatActivity :
44804461
}
44814462

44824463
fun checkIfSaveable(message: ChatMessage) {
4483-
val filename = message.selectedIndividualHashMap!!["name"]
4464+
val filename = message.fileParameters.name
44844465
path = applicationContext.cacheDir.absolutePath + "/" + filename
44854466
val file = File(context.cacheDir, filename!!)
44864467
if (file.exists()) {
@@ -4509,11 +4490,11 @@ class ChatActivity :
45094490

45104491
if (noteToSelfConversation != null) {
45114492
var shareUri: Uri? = null
4512-
val data: HashMap<String?, String?>?
4493+
val data: HashMap<String, String>?
45134494
var metaData = ""
45144495
var objectId = ""
4515-
if (message.hasFileAttachment()) {
4516-
val filename = message.selectedIndividualHashMap!!["name"]
4496+
if (message.hasFileAttachment) {
4497+
val filename = message.fileParameters.name
45174498
path = applicationContext.cacheDir.absolutePath + "/" + filename
45184499
shareUri = FileProvider.getUriForFile(
45194500
context,
@@ -4526,12 +4507,11 @@ class ChatActivity :
45264507
shareUri,
45274508
Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION
45284509
)
4529-
} else if (message.hasGeoLocation()) {
4530-
data = message.messageParameters?.get("object")
4531-
objectId = data?.get("id")!!
4532-
val name = data["name"]!!
4533-
val lat = data["latitude"]!!
4534-
val lon = data["longitude"]!!
4510+
} else if (message.hasGeoLocation) {
4511+
objectId = message.geoLocationParameters.id!!
4512+
val name = message.geoLocationParameters.name
4513+
val lat = message.geoLocationParameters.latitude
4514+
val lon = message.geoLocationParameters.longitude
45354515
metaData =
45364516
"{\"type\":\"geo-location\",\"id\":\"geo:$lat,$lon\",\"latitude\":\"$lat\"," +
45374517
"\"longitude\":\"$lon\",\"name\":\"$name\"}"
@@ -4642,8 +4622,8 @@ class ChatActivity :
46424622
}
46434623

46444624
fun openInFilesApp(message: ChatMessage) {
4645-
val keyID = message.selectedIndividualHashMap!![PreviewMessageViewHolder.KEY_ID]
4646-
val link = message.selectedIndividualHashMap!!["link"]
4625+
val keyID = message.fileParameters.id
4626+
val link = message.fileParameters.link
46474627
val fileViewerUtils = FileViewerUtils(this, message.activeUser!!)
46484628
fileViewerUtils.openFileInFilesApp(link!!, keyID!!)
46494629
}
@@ -4785,16 +4765,17 @@ class ChatActivity :
47854765
return isUserAllowedByPrivileges
47864766
}
47874767

4768+
@Deprecated("chatkit")
47884769
override fun hasContentFor(message: ChatMessage, type: Byte): Boolean =
47894770
when (type) {
4790-
CONTENT_TYPE_LOCATION -> message.hasGeoLocation()
4771+
CONTENT_TYPE_LOCATION -> message.hasGeoLocation
47914772
CONTENT_TYPE_VOICE_MESSAGE -> message.isVoiceMessage
4792-
CONTENT_TYPE_POLL -> message.isPoll()
4773+
CONTENT_TYPE_POLL -> message.hasPoll
47934774
CONTENT_TYPE_LINK_PREVIEW -> message.isLinkPreview()
47944775
CONTENT_TYPE_SYSTEM_MESSAGE -> !TextUtils.isEmpty(message.systemMessage)
47954776
CONTENT_TYPE_UNREAD_NOTICE_MESSAGE -> message.id == UNREAD_MESSAGES_MARKER_ID.toString()
47964777
CONTENT_TYPE_CALL_STARTED -> message.id == "-2"
4797-
CONTENT_TYPE_DECK_CARD -> message.isDeckCard()
4778+
CONTENT_TYPE_DECK_CARD -> message.hasDeckCard
47984779

47994780
else -> false
48004781
}

0 commit comments

Comments
 (0)