Skip to content

Commit

Permalink
fix: display "Resend" for expired messages
Browse files Browse the repository at this point in the history
  • Loading branch information
richard-ramos committed Nov 10, 2022
1 parent df3f3d3 commit ae7a16f
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ proc init*(self: Controller) =
let args = EnvelopeSentArgs(e)
self.delegate.onEnvelopeSent(args.messagesIds)

self.events.on(SIGNAL_ENVELOPE_EXPIRED) do(e:Args):
let args = EnvelopeExpiredArgs(e)
self.delegate.onEnvelopeExpired(args.messagesIds)

self.events.on(SIGNAL_MESSAGE_DELIVERED) do(e:Args):
let args = MessageDeliveredArgs(e)
if(self.chatId != args.chatId):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ method onSendingMessageError*(self: AccessInterface) {.base.} =
method onEnvelopeSent*(self: AccessInterface, messagesIds: seq[string]) {.base.} =
raise newException(ValueError, "No implementation available")

method onEnvelopeExpired*(self: AccessInterface, messagesIds: seq[string]) {.base.} =
raise newException(ValueError, "No implementation available")

method onMessageDelivered*(self: AccessInterface, messageId: string) {.base.} =
raise newException(ValueError, "No implementation available")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,10 @@ method onEnvelopeSent*(self: Module, messagesIds: seq[string]) =
for messageId in messagesIds:
self.view.model().itemSent(messageId)

method onEnvelopeExpired*(self: Module, messagesIds: seq[string]) =
for messageId in messagesIds:
self.view.model().itemExpired(messageId)

method onMessageDelivered*(self: Module, messageId: string) =
self.view.model().itemDelivered(messageId)

Expand Down
3 changes: 3 additions & 0 deletions src/app/modules/shared_models/message_model.nim
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,9 @@ QtObject:
proc itemDelivered*(self: Model, messageId: string) =
self.setOutgoingStatus(messageId, PARSED_TEXT_OUTGOING_STATUS_DELIVERED)

proc itemExpired*(self: Model, messageId: string) =
self.setOutgoingStatus(messageId, PARSED_TEXT_OUTGOING_STATUS_EXPIRED)

proc addReaction*(self: Model, messageId: string, emojiId: EmojiId, didIReactWithThisEmoji: bool,
userPublicKey: string, userDisplayName: string, reactionId: string) =
let ind = self.findIndexForMessageId(messageId)
Expand Down
1 change: 1 addition & 0 deletions src/app_service/service/message/dto/message.nim
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const PARSED_TEXT_CHILD_TYPE_LINK* = "link"
const PARSED_TEXT_OUTGOING_STATUS_SENDING* = "sending"
const PARSED_TEXT_OUTGOING_STATUS_SENT* = "sent"
const PARSED_TEXT_OUTGOING_STATUS_DELIVERED* = "delivered"
const PARSED_TEXT_OUTGOING_STATUS_EXPIRED* = "expired"

type ParsedText* = object
`type`*: string
Expand Down
10 changes: 10 additions & 0 deletions src/app_service/service/message/service.nim
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ const SIGNAL_MESSAGE_DELETION* = "messageDeleted"
const SIGNAL_MESSAGE_DELIVERED* = "messageDelivered"
const SIGNAL_MESSAGE_EDITED* = "messageEdited"
const SIGNAL_ENVELOPE_SENT* = "envelopeSent"
const SIGNAL_ENVELOPE_EXPIRED* = "envelopeExpired"
const SIGNAL_MESSAGE_LINK_PREVIEW_DATA_LOADED* = "messageLinkPreviewDataLoaded"
const SIGNAL_MENTIONED_IN_EDITED_MESSAGE* = "mentionedInEditedMessage"
const SIGNAL_RELOAD_MESSAGES* = "reloadMessages"
Expand Down Expand Up @@ -101,6 +102,9 @@ type
EnvelopeSentArgs* = ref object of Args
messagesIds*: seq[string]

EnvelopeExpiredArgs* = ref object of Args
messagesIds*: seq[string]

MessageEditedArgs* = ref object of Args
chatId*: string
message*: MessageDto
Expand Down Expand Up @@ -280,6 +284,12 @@ QtObject:
let data = EnvelopeSentArgs(messagesIds: receivedData.messageIds)
self.events.emit(SIGNAL_ENVELOPE_SENT, data)

self.events.on(SignalType.EnvelopeExpired.event) do(e: Args):
let receivedData = EnvelopeExpiredSignal(e)
let data = EnvelopeExpiredArgs(messagesIds: receivedData.messageIds)
self.events.emit(SIGNAL_ENVELOPE_EXPIRED, data)


self.events.on(SignalType.Message.event) do(e: Args):
var receivedData = MessageSignal(e)

Expand Down
3 changes: 2 additions & 1 deletion ui/imports/shared/views/chat/MessageView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@ Loader {
property bool isMessage: isEmoji || isImage || isSticker || isText || isAudio
|| messageContentType === Constants.messageContentType.communityInviteType || messageContentType === Constants.messageContentType.transactionType

readonly property bool isExpired: (messageOutgoingStatus === "sending" && (Math.floor(messageTimestamp) + 180000) < Date.now())
readonly property bool isExpired: (messageOutgoingStatus === "sending" && (Math.floor(messageTimestamp) + 180000) < Date.now()) || messageOutgoingStatus === "expired"
property int statusAgeEpoch: 0

signal imageClicked(var image)

Expand Down

0 comments on commit ae7a16f

Please sign in to comment.