From c710d4aa8fc5265fb06430dc17a8097daeb88254 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 19 Jun 2023 01:24:44 +0300 Subject: [PATCH] Deprecate MSC2716 methods and add Beeper batch send methods --- CHANGELOG.md | 5 +++++ appservice/http.go | 12 +----------- client.go | 8 +++++++- event/state.go | 1 + event/type.go | 4 +++- requests.go | 7 +++++++ responses.go | 5 +++++ 7 files changed, 29 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79edfe15..e0915d14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v0.15.4 (unreleased) + +* *(client)* Deprecated MSC2716 methods and added new Beeper-specific batch + send methods, as upstream MSC2716 support has been abandoned. + ## v0.15.3 (2023-06-16) * *(synapseadmin)* Added wrappers for some Synapse admin API endpoints. diff --git a/appservice/http.go b/appservice/http.go index 06ac7788..e73bf621 100644 --- a/appservice/http.go +++ b/appservice/http.go @@ -235,17 +235,7 @@ func (as *AppService) handleEvents(ctx context.Context, evts []*event.Event, def } if evt.Type.IsState() { - // TODO remove this check after making sure the log doesn't happen - historical, ok := evt.Content.Raw["org.matrix.msc2716.historical"].(bool) - if ok && historical { - log.Warn(). - Str("event_id", evt.ID.String()). - Str("event_type", evt.Type.Type). - Str("state_key", evt.GetStateKey()). - Msg("Received historical state event") - } else { - mautrix.UpdateStateStore(as.StateStore, evt) - } + mautrix.UpdateStateStore(as.StateStore, evt) } var ch chan *event.Event if evt.Type.Class == event.ToDeviceEventType { diff --git a/client.go b/client.go index 03998318..d4884f8c 100644 --- a/client.go +++ b/client.go @@ -1980,7 +1980,7 @@ func (cli *Client) PutPushRule(scope string, kind pushrules.PushRuleType, ruleID // BatchSend sends a batch of historical events into a room. This is only available for appservices. // -// See https://github.com/matrix-org/matrix-doc/pull/2716 for more info. +// Deprecated: MSC2716 has been abandoned, so this is now Beeper-specific. BeeperBatchSend should be used instead. func (cli *Client) BatchSend(roomID id.RoomID, req *ReqBatchSend) (resp *RespBatchSend, err error) { path := ClientURLPath{"unstable", "org.matrix.msc2716", "rooms", roomID, "batch_send"} query := map[string]string{ @@ -2011,6 +2011,12 @@ func (cli *Client) AppservicePing(id, txnID string) (resp *RespAppservicePing, e return } +func (cli *Client) BeeperBatchSend(roomID id.RoomID, req *ReqBeeperBatchSend) (resp *RespBeeperBatchSend, err error) { + u := cli.BuildClientURL("unstable", "com.beeper.backfill", "rooms", roomID, "batch_send") + _, err = cli.MakeRequest(http.MethodPost, u, req, &resp) + return +} + func (cli *Client) BeeperMergeRooms(req *ReqBeeperMergeRoom) (resp *RespBeeperMergeRoom, err error) { urlPath := cli.BuildClientURL("unstable", "com.beeper.chatmerging", "merge") _, err = cli.MakeRequest(http.MethodPost, urlPath, req, &resp) diff --git a/event/state.go b/event/state.go index a387f015..d6b6cf70 100644 --- a/event/state.go +++ b/event/state.go @@ -170,6 +170,7 @@ type ModPolicyContent struct { Recommendation string `json:"recommendation"` } +// Deprecated: MSC2716 has been abandoned type InsertionMarkerContent struct { InsertionID id.EventID `json:"org.matrix.msc2716.marker.insertion"` Timestamp int64 `json:"com.beeper.timestamp,omitempty"` diff --git a/event/type.go b/event/type.go index 9ac64b6d..2f4f4f94 100644 --- a/event/type.go +++ b/event/type.go @@ -187,7 +187,9 @@ var ( StateHalfShotBridge = Type{"uk.half-shot.bridge", StateEventType} StateSpaceChild = Type{"m.space.child", StateEventType} StateSpaceParent = Type{"m.space.parent", StateEventType} - StateInsertionMarker = Type{"org.matrix.msc2716.marker", StateEventType} + + // Deprecated: MSC2716 has been abandoned + StateInsertionMarker = Type{"org.matrix.msc2716.marker", StateEventType} ) // Message events diff --git a/requests.go b/requests.go index 66273fa2..1ca87eca 100644 --- a/requests.go +++ b/requests.go @@ -331,6 +331,7 @@ type ReqPutPushRule struct { Pattern string `json:"pattern"` } +// Deprecated: MSC2716 was abandoned type ReqBatchSend struct { PrevEventID id.EventID `json:"-"` BatchID id.BatchID `json:"-"` @@ -342,6 +343,12 @@ type ReqBatchSend struct { Events []*event.Event `json:"events"` } +type ReqBeeperBatchSend struct { + Forward bool `json:"forward"` + MarkReadBy id.UserID `json:"mark_read_by,omitempty"` + Events []*event.Event `json:"events"` +} + type ReqSetReadMarkers struct { Read id.EventID `json:"m.read,omitempty"` ReadPrivate id.EventID `json:"m.read.private,omitempty"` diff --git a/responses.go b/responses.go index fc7182e6..7565d1a2 100644 --- a/responses.go +++ b/responses.go @@ -402,6 +402,7 @@ type RespDeviceInfo struct { LastSeenTS int64 `json:"last_seen_ts"` } +// Deprecated: MSC2716 was abandoned type RespBatchSend struct { StateEventIDs []id.EventID `json:"state_event_ids"` EventIDs []id.EventID `json:"event_ids"` @@ -413,6 +414,10 @@ type RespBatchSend struct { NextBatchID id.BatchID `json:"next_batch_id"` } +type RespBeeperBatchSend struct { + EventIDs []id.EventID `json:"event_ids"` +} + // RespCapabilities is the JSON response for https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3capabilities type RespCapabilities struct { RoomVersions *CapRoomVersions `json:"m.room_versions,omitempty"`