mirror of
https://github.com/pushbits/server.git
synced 2025-04-30 10:46:55 +02:00
Improve error handling in dispatcher
This commit is contained in:
parent
9bb54064a2
commit
fb2441d97b
1 changed files with 22 additions and 11 deletions
|
@ -73,10 +73,11 @@ func (d *Dispatcher) SendNotification(a *model.Application, n *model.Notificatio
|
||||||
|
|
||||||
evt, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &messageEvent)
|
evt, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &messageEvent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.L.Errorln(err)
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return evt.EventID.String(), err
|
return evt.EventID.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteNotification sends a notification to the specified user that another notificaion is deleted
|
// DeleteNotification sends a notification to the specified user that another notificaion is deleted
|
||||||
|
@ -85,7 +86,7 @@ func (d *Dispatcher) DeleteNotification(a *model.Application, n *model.DeleteNot
|
||||||
var oldFormattedBody string
|
var oldFormattedBody string
|
||||||
var oldBody string
|
var oldBody string
|
||||||
|
|
||||||
// get the message we want to delete
|
// Get the message we want to delete
|
||||||
deleteMessage, err := d.getMessage(a, n.ID)
|
deleteMessage, err := d.getMessage(a, n.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.L.Println(err)
|
log.L.Println(err)
|
||||||
|
@ -93,12 +94,11 @@ func (d *Dispatcher) DeleteNotification(a *model.Application, n *model.DeleteNot
|
||||||
}
|
}
|
||||||
|
|
||||||
oldBody, oldFormattedBody, err = bodiesFromMessage(deleteMessage)
|
oldBody, oldFormattedBody, err = bodiesFromMessage(deleteMessage)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the message with strikethrough
|
// Update the message with strikethrough
|
||||||
newBody := fmt.Sprintf("<del>%s</del>\n- deleted", oldBody)
|
newBody := fmt.Sprintf("<del>%s</del>\n- deleted", oldBody)
|
||||||
newFormattedBody := fmt.Sprintf("<del>%s</del><br>- deleted", oldFormattedBody)
|
newFormattedBody := fmt.Sprintf("<del>%s</del><br>- deleted", oldFormattedBody)
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ func (d *Dispatcher) getFormattedMessage(n *model.Notification) string {
|
||||||
case "html", "text/html":
|
case "html", "text/html":
|
||||||
message = strings.Replace(trimmedMessage, "\n", "<br />", -1)
|
message = strings.Replace(trimmedMessage, "\n", "<br />", -1)
|
||||||
case "markdown", "md", "text/md", "text/markdown":
|
case "markdown", "md", "text/md", "text/markdown":
|
||||||
// allow HTML in Markdown
|
// Allow HTML in Markdown
|
||||||
message = string(markdown.ToHTML([]byte(trimmedMessage), nil, nil))
|
message = string(markdown.ToHTML([]byte(trimmedMessage), nil, nil))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -183,10 +183,14 @@ func (d *Dispatcher) coloredText(color string, text string) string {
|
||||||
func (d *Dispatcher) getMessage(a *model.Application, id string) (*event.Event, error) {
|
func (d *Dispatcher) getMessage(a *model.Application, id string) (*event.Event, error) {
|
||||||
start := ""
|
start := ""
|
||||||
end := ""
|
end := ""
|
||||||
maxPages := 10 // maximum pages to request (10 messages per page)
|
maxPages := 10 // Maximum pages to request (10 messages per page)
|
||||||
|
|
||||||
for i := 0; i < maxPages; i++ {
|
for i := 0; i < maxPages; i++ {
|
||||||
messages, _ := d.mautrixClient.Messages(mId.RoomID(a.MatrixID), start, end, 'b', nil, 10)
|
messages, err := d.mautrixClient.Messages(mId.RoomID(a.MatrixID), start, end, 'b', nil, 10)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
for _, event := range messages.Chunk {
|
for _, event := range messages.Chunk {
|
||||||
if event.ID.String() == id {
|
if event.ID.String() == id {
|
||||||
return event, nil
|
return event, nil
|
||||||
|
@ -194,7 +198,8 @@ func (d *Dispatcher) getMessage(a *model.Application, id string) (*event.Event,
|
||||||
}
|
}
|
||||||
start = messages.End
|
start = messages.End
|
||||||
}
|
}
|
||||||
return &event.Event{}, pberrors.ErrorMessageNotFound
|
|
||||||
|
return nil, pberrors.ErrorMessageNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replaces the content of a matrix message
|
// Replaces the content of a matrix message
|
||||||
|
@ -222,7 +227,7 @@ func (d *Dispatcher) replaceMessage(a *model.Application, newBody, newFormattedB
|
||||||
|
|
||||||
sendEvent, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &replaceEvent)
|
sendEvent, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, &replaceEvent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.L.Println(err)
|
log.L.Errorln(err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +241,7 @@ func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// formatting according to https://matrix.org/docs/spec/client_server/latest#fallbacks-and-event-representation
|
// Formatting according to https://matrix.org/docs/spec/client_server/latest#fallbacks-and-event-representation
|
||||||
newFormattedBody := fmt.Sprintf("<mx-reply><blockquote><a href='https://matrix.to/#/%s/%s'>In reply to</a> <a href='https://matrix.to/#/%s'>%s</a><br />%s</blockquote>\n</mx-reply>%s", respondMessage.RoomID, respondMessage.ID, respondMessage.Sender, respondMessage.Sender, oldFormattedBody, formattedBody)
|
newFormattedBody := fmt.Sprintf("<mx-reply><blockquote><a href='https://matrix.to/#/%s/%s'>In reply to</a> <a href='https://matrix.to/#/%s'>%s</a><br />%s</blockquote>\n</mx-reply>%s", respondMessage.RoomID, respondMessage.ID, respondMessage.Sender, respondMessage.Sender, oldFormattedBody, formattedBody)
|
||||||
newBody := fmt.Sprintf("> <%s>%s\n\n%s", respondMessage.Sender, oldBody, body)
|
newBody := fmt.Sprintf("> <%s>%s\n\n%s", respondMessage.Sender, oldBody, body)
|
||||||
|
|
||||||
|
@ -255,7 +260,13 @@ func (d *Dispatcher) respondToMessage(a *model.Application, body, formattedBody
|
||||||
}
|
}
|
||||||
notificationEvent.RelatesTo = ¬ificationRelation
|
notificationEvent.RelatesTo = ¬ificationRelation
|
||||||
|
|
||||||
return d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, ¬ificationEvent)
|
sendEvent, err := d.mautrixClient.SendMessageEvent(mId.RoomID(a.MatrixID), event.EventMessage, ¬ificationEvent)
|
||||||
|
if err != nil {
|
||||||
|
log.L.Errorln(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return sendEvent, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extracts body and formatted body from a matrix message event
|
// Extracts body and formatted body from a matrix message event
|
||||||
|
|
Loading…
Add table
Reference in a new issue