54 lines
924 B
Go
54 lines
924 B
Go
package utils
|
|
|
|
import (
|
|
"maunium.net/go/mautrix"
|
|
"maunium.net/go/mautrix/event"
|
|
"maunium.net/go/mautrix/id"
|
|
)
|
|
|
|
// RelatesTo block of matrix event content
|
|
func RelatesTo(noThreads bool, parentID id.EventID) *event.RelatesTo {
|
|
if parentID == "" {
|
|
return nil
|
|
}
|
|
|
|
if noThreads {
|
|
return &event.RelatesTo{
|
|
InReplyTo: &event.InReplyTo{
|
|
EventID: parentID,
|
|
},
|
|
}
|
|
}
|
|
|
|
return &event.RelatesTo{
|
|
Type: event.RelThread,
|
|
EventID: parentID,
|
|
}
|
|
}
|
|
|
|
// UnwrapError tries to unwrap a error into something meaningful, like mautrix.HTTPError or mautrix.RespError
|
|
func UnwrapError(err error) error {
|
|
switch err.(type) {
|
|
case nil:
|
|
return nil
|
|
case mautrix.HTTPError:
|
|
return unwrapHTTPError(err)
|
|
default:
|
|
return err
|
|
}
|
|
}
|
|
|
|
func unwrapHTTPError(err error) error {
|
|
httperr, ok := err.(mautrix.HTTPError)
|
|
if !ok {
|
|
return err
|
|
}
|
|
|
|
uwerr := httperr.Unwrap()
|
|
if uwerr != nil {
|
|
return uwerr
|
|
}
|
|
|
|
return httperr
|
|
}
|