Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ steps:
commands:
- emulator -avd android -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
- scripts/wait_for_emulator.sh
- ./gradlew --console=plain testGplayDebugUnitTest connectedGplayDebugAndroidTest
- ./gradlew --console=plain --stacktrace testGplayDebugUnitTest connectedGplayDebugAndroidTest

services:
- name: server
Expand Down Expand Up @@ -81,6 +81,6 @@ trigger:
- pull_request
---
kind: signature
hmac: cf0c19e54fa45d1ee226f5f05202a32329b90aaf46711ea073c566a4c4a8a6c5
hmac: d3f0eb5c71a3a463a52789aa577b3ca742616a8d966ac90c187774179693f5ea

...
107 changes: 87 additions & 20 deletions app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,12 @@ import com.nextcloud.talk.api.NcApiCoroutines
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.chat.data.model.FileParameters
import com.nextcloud.talk.chat.ui.MessageActionsBottomSheet
import com.nextcloud.talk.chat.ui.ProfileModalBottomSheet
import com.nextcloud.talk.chat.ui.ShowReactionsModalBottomSheet
import com.nextcloud.talk.chat.ui.TempMessageActionsBottomSheet
import com.nextcloud.talk.chat.ui.buildMessageActionsState
import com.nextcloud.talk.data.database.model.SendStatus
import com.nextcloud.talk.chat.ui.model.MessageTypeContent
import com.nextcloud.talk.chat.viewmodels.ChatViewModel
import com.nextcloud.talk.chat.viewmodels.MessageInputViewModel
Expand Down Expand Up @@ -183,9 +187,7 @@ import com.nextcloud.talk.ui.chat.ChatViewState
import com.nextcloud.talk.ui.dialog.DateTimeCompose
import com.nextcloud.talk.ui.dialog.FileAttachmentPreviewFragment
import com.nextcloud.talk.ui.dialog.GetPinnedOptionsDialog
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
import com.nextcloud.talk.ui.dialog.SaveToStorageDialogFragment
import com.nextcloud.talk.ui.dialog.TempMessageActionsDialog
import com.nextcloud.talk.ui.theme.LocalMessageUtils
import com.nextcloud.talk.ui.theme.LocalOpenGraphFetcher
import com.nextcloud.talk.ui.theme.LocalViewThemeUtils
Expand Down Expand Up @@ -834,6 +836,87 @@ class ChatActivity :
)
}
}

val messageActionsMessageId by chatViewModel.messageActionsMessageId.collectAsStateWithLifecycle()
val messageActionsMessage by produceState<ChatMessage?>(null, messageActionsMessageId) {
value = messageActionsMessageId?.let { id -> chatViewModel.getMessageById(id).first() }
}
val isOnline by networkMonitor.isOnline.collectAsStateWithLifecycle()
messageActionsMessage?.let { msg ->
if (msg.isTemporary) {
val sendingFailed = msg.sendStatus == SendStatus.FAILED
TempMessageActionsBottomSheet(
showResend = sendingFailed && isOnline,
showEdit = sendingFailed || !isOnline,
showDelete = sendingFailed || !isOnline,
onResend = {
chatViewModel.resendMessage(
conversationUser!!.getCredentials(),
ApiUtils.getUrlForChat(chatApiVersion, conversationUser!!.baseUrl!!, roomToken),
msg
)
},
onEdit = { messageInputViewModel.edit(msg) },
onDelete = { chatViewModel.deleteTempMessage(msg) },
onCopy = { copyMessage(msg) },
onDismiss = { chatViewModel.dismissMessageActions() }
)
} else {
conversationUser?.let { user ->
MessageActionsBottomSheet(
actionsState = buildMessageActionsState(
message = msg,
user = user,
conversation = currentConversation,
hasChatPermission = participantPermissions.hasChatPermission(),
hasReactPermission = participantPermissions.hasReactPermission(),
spreedCapabilities = spreedCapabilities,
isOnline = isOnline,
dateUtils = dateUtils,
conversationThreadId = conversationThreadId
),
onEmojiClick = { emoji ->
if (msg.reactionsSelf?.contains(emoji) == true) {
chatViewModel.deleteReaction(roomToken, msg, emoji)
} else {
chatViewModel.addReaction(roomToken, msg, emoji)
}
},
onReply = {
if (msg.isThread && conversationThreadId == null) {
openThread(msg)
} else {
messageInputViewModel.reply(msg)
}
},
onReplyPrivately = { replyPrivately(msg) },
onOpenThread = { msg.threadId?.let { openThread(it) } },
onForward = { forwardMessage(msg) },
onEdit = { messageInputViewModel.edit(msg) },
onCopy = { copyMessage(msg) },
onMarkAsUnread = { markAsUnread(msg) },
onRemind = { remindMeLater(msg) },
onPin = { pinMessage(msg) },
onUnpin = { unPinMessage(msg) },
onTranslate = { translateMessage(msg) },
onShareToNote = { shareToNotes(msg) },
onShare = {
if (msg.getCalculateMessageType() ==
ChatMessage.MessageType.SINGLE_NC_ATTACHMENT_MESSAGE
) {
checkIfSharable(msg)
} else {
msg.message?.let { shareMessageText(it) }
}
},
onSave = { checkIfSaveable(msg) },
onOpenInFiles = { openInFilesApp(msg) },
onDelete = { deleteMessage(msg) },
onDismiss = { chatViewModel.dismissMessageActions() }
)
}
}
}
}
}
}
Expand Down Expand Up @@ -3776,24 +3859,8 @@ class ChatActivity :
}

private fun openMessageActionsDialog(message: ChatMessage) {
if (message.isTemporary) {
TempMessageActionsDialog(
this,
message
).show()
} else if (hasVisibleItems(message) &&
!isSystemMessage(message)
) {
MessageActionsDialog(
this,
message,
conversationUser,
currentConversation,
isShowMessageDeletionButton(message),
participantPermissions.hasChatPermission(),
participantPermissions.hasReactPermission(),
spreedCapabilities
).show()
if (message.isTemporary || (hasVisibleItems(message) && !isSystemMessage(message))) {
chatViewModel.showMessageActions(message.jsonMessageId.toLong())
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import kotlin.math.PI
import kotlin.math.cos
import kotlin.math.pow
import kotlin.math.withSign
import androidx.core.graphics.createBitmap
import androidx.core.graphics.set

private const val BLURHASH_CHARS =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#\$%*+,-.:;=?@[]^_{|}~"
Expand Down Expand Up @@ -137,10 +139,10 @@ internal object BlurHashDecoder {
return Color.rgb(linearToSrgb(r), linearToSrgb(g), linearToSrgb(b))
}

val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val bitmap = createBitmap(width, height)
for (y in 0 until height) {
for (x in 0 until width) {
bitmap.setPixel(x, y, computePixel(x, y))
bitmap[x, y] = computePixel(x, y)
}
}
return bitmap
Expand Down
Loading
Loading