Skip to content

Commit e2f1092

Browse files
committed
add support for sending copies when forwarding messages
- update `MessageRepository` and `MessageRemoteDataSource` interfaces to include a `sendCopy` parameter in `forwardMessage` - implement the `sendCopy` flag in `MessageRepositoryImpl` and `TdMessageRemoteDataSource` to pass it to the TDLib `ForwardMessages` request - update `handleRepeatMessage` in `MessageActions` to use `sendCopy = true` when repeating a message in the same chat
1 parent 5ddfa1f commit e2f1092

5 files changed

Lines changed: 29 additions & 7 deletions

File tree

data/src/main/java/org/monogram/data/datasource/remote/MessageRemoteDataSource.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ interface MessageRemoteDataSource {
3737
fun setChatOpened(chatId: Long)
3838
fun setChatClosed(chatId: Long)
3939
fun enqueueDownload(fileId: Int, priority: Int = 1, type: DownloadType = DownloadType.DEFAULT, offset: Long = 0, limit: Long = 0, synchronous: Boolean = false)
40-
suspend fun forwardMessage(toChatId: Long, fromChatId: Long, messageId: Long)
40+
suspend fun forwardMessage(
41+
toChatId: Long,
42+
fromChatId: Long,
43+
messageId: Long,
44+
sendCopy: Boolean = false
45+
)
4146
suspend fun getMessage(chatId: Long, messageId: Long): TdApi.Message?
4247
suspend fun getMessageThread(chatId: Long, messageId: Long): TdApi.MessageThreadInfo?
4348
suspend fun getMessages(chatId: Long, fromMessageId: Long, offset: Int, limit: Int, threadId: Long?): TdApi.Messages?

data/src/main/java/org/monogram/data/datasource/remote/TdMessageRemoteDataSource.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,14 +1461,15 @@ class TdMessageRemoteDataSource(
14611461
override suspend fun forwardMessage(
14621462
toChatId: Long,
14631463
fromChatId: Long,
1464-
messageId: Long
1464+
messageId: Long,
1465+
sendCopy: Boolean
14651466
) {
14661467
val request = TdApi.ForwardMessages().apply {
14671468
this.chatId = toChatId
14681469
this.fromChatId = fromChatId
14691470
this.messageIds = longArrayOf(messageId)
14701471
this.removeCaption = false
1471-
this.sendCopy = false
1472+
this.sendCopy = sendCopy
14721473
}
14731474
safeExecute(request)
14741475
}

data/src/main/java/org/monogram/data/repository/MessageRepositoryImpl.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,8 +435,19 @@ class MessageRepositoryImpl(
435435
messageRemoteDataSource.sendVoiceNote(chatId, voicePath, duration, waveform)
436436
}
437437

438-
override suspend fun forwardMessage(toChatId: Long, fromChatId: Long, messageId: Long) {
439-
messageRemoteDataSource.forwardMessages(toChatId, fromChatId, longArrayOf(messageId), false, false)
438+
override suspend fun forwardMessage(
439+
toChatId: Long,
440+
fromChatId: Long,
441+
messageId: Long,
442+
sendCopy: Boolean
443+
) {
444+
messageRemoteDataSource.forwardMessages(
445+
toChatId,
446+
fromChatId,
447+
longArrayOf(messageId),
448+
false,
449+
sendCopy
450+
)
440451
}
441452

442453
override suspend fun deleteMessage(chatId: Long, messageIds: List<Long>, revoke: Boolean) {

domain/src/main/java/org/monogram/domain/repository/MessageRepository.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,12 @@ interface MessageRepository :
213213
suspend fun getScheduledMessages(chatId: Long): List<MessageModel>
214214
suspend fun sendScheduledNow(chatId: Long, messageId: Long)
215215

216-
suspend fun forwardMessage(toChatId: Long, fromChatId: Long, messageId: Long)
216+
suspend fun forwardMessage(
217+
toChatId: Long,
218+
fromChatId: Long,
219+
messageId: Long,
220+
sendCopy: Boolean = false
221+
)
217222
suspend fun deleteMessage(chatId: Long, messageIds: List<Long>, revoke: Boolean = false)
218223
suspend fun editMessage(chatId: Long, messageId: Long, newText: String, entities: List<MessageEntity> = emptyList())
219224
suspend fun editMessageCaption(chatId: Long, messageId: Long, newCaption: String, entities: List<MessageEntity> = emptyList())

presentation/src/main/java/org/monogram/presentation/features/chats/currentChat/impl/MessageActions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,6 @@ internal fun DefaultChatComponent.handleCopyLink(localClipboard: Clipboard) {
432432

433433
internal fun DefaultChatComponent.handleRepeatMessage(message: MessageModel) {
434434
scope.launch {
435-
repositoryMessage.forwardMessage(chatId, chatId, message.id)
435+
repositoryMessage.forwardMessage(chatId, chatId, message.id, sendCopy = true)
436436
}
437437
}

0 commit comments

Comments
 (0)