Update mautrix-go for new bridge status package

This commit is contained in:
Tulir Asokan
2022-08-15 16:43:55 +03:00
parent 52f7ca1a49
commit 1ced229be9
7 changed files with 61 additions and 42 deletions

View File

@@ -9,6 +9,7 @@ import (
"sync"
"time"
"maunium.net/go/mautrix/bridge/status"
"maunium.net/go/mautrix/crypto/attachment"
"maunium.net/go/mautrix/util/variationselector"
@@ -984,7 +985,7 @@ var (
errUnknownEmoji = errors.New("unknown emoji")
)
func errorToStatusReason(err error) (reason event.MessageStatusReason, isCertain, canRetry, sendNotice bool) {
func errorToStatusReason(err error) (reason event.MessageStatusReason, status event.MessageStatus, isCertain, sendNotice bool, humanMessage string) {
switch {
case errors.Is(err, errUnknownMsgType),
errors.Is(err, errUnknownRelationType),
@@ -993,19 +994,19 @@ func errorToStatusReason(err error) (reason event.MessageStatusReason, isCertain
errors.Is(err, id.InvalidContentURI),
errors.Is(err, attachment.UnsupportedVersion),
errors.Is(err, attachment.UnsupportedAlgorithm):
return event.MessageStatusUnsupported, true, false, true
return event.MessageStatusUnsupported, event.MessageStatusFail, true, true, ""
case errors.Is(err, attachment.HashMismatch),
errors.Is(err, attachment.InvalidKey),
errors.Is(err, attachment.InvalidInitVector):
return event.MessageStatusUndecryptable, true, false, true
return event.MessageStatusUndecryptable, event.MessageStatusFail, true, true, ""
case errors.Is(err, errUserNotReceiver):
return event.MessageStatusNoPermission, true, false, false
return event.MessageStatusNoPermission, event.MessageStatusFail, true, false, ""
case errors.Is(err, errUnknownEditTarget):
return event.MessageStatusGenericError, true, false, false
return event.MessageStatusGenericError, event.MessageStatusFail, true, false, ""
case errors.Is(err, errTargetNotFound):
return event.MessageStatusGenericError, true, false, true
return event.MessageStatusGenericError, event.MessageStatusFail, true, true, ""
default:
return event.MessageStatusGenericError, false, true, true
return event.MessageStatusGenericError, event.MessageStatusRetriable, false, true, ""
}
}
@@ -1025,13 +1026,12 @@ func (portal *Portal) sendStatusEvent(evtID id.EventID, err error) {
Type: event.RelReference,
EventID: evtID,
},
Success: err == nil,
Status: event.MessageStatusSuccess,
}
if !content.Success {
reason, isCertain, canRetry, _ := errorToStatusReason(err)
content.Reason = reason
content.IsCertain = &isCertain
content.CanRetry = &canRetry
if err == nil {
content.Status = event.MessageStatusSuccess
} else {
content.Reason, content.Status, _, _, content.Message = errorToStatusReason(err)
content.Error = err.Error()
}
_, err = intent.SendMessageEvent(portal.MXID, event.BeeperMessageStatus, &content)
@@ -1062,9 +1062,9 @@ func (portal *Portal) sendMessageMetrics(evt *event.Event, err error, part strin
level = log.LevelDebug
}
portal.log.Logfln(level, "%s %s %s from %s: %v", part, msgType, evtDescription, evt.Sender, err)
reason, isCertain, _, sendNotice := errorToStatusReason(err)
status := bridge.ReasonToCheckpointStatus(reason)
portal.bridge.SendMessageCheckpoint(evt, bridge.MsgStepRemote, err, status, 0)
reason, statusCode, isCertain, sendNotice, _ := errorToStatusReason(err)
checkpointStatus := status.ReasonToCheckpointStatus(reason, statusCode)
portal.bridge.SendMessageCheckpoint(evt, status.MsgStepRemote, err, checkpointStatus, 0)
if sendNotice {
portal.sendErrorMessage(msgType, err.Error(), isCertain)
}
@@ -1072,7 +1072,7 @@ func (portal *Portal) sendMessageMetrics(evt *event.Event, err error, part strin
} else {
portal.log.Debugfln("Handled Matrix %s %s", msgType, evtDescription)
portal.sendDeliveryReceipt(evt.ID)
portal.bridge.SendMessageSuccessCheckpoint(evt, bridge.MsgStepRemote, 0)
portal.bridge.SendMessageSuccessCheckpoint(evt, status.MsgStepRemote, 0)
portal.sendStatusEvent(evt.ID, nil)
}
}