Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distinguish 'client' from 'federation' events #3658

Merged
merged 11 commits into from
Feb 1, 2022
Merged

Conversation

richvdh
Copy link
Member

@richvdh richvdh commented Jan 19, 2022

Fixes #3305
Fixes #3380

The idea here is to better distinguish between a 'raw' event (as we send over the wire), and the 'serialised' format, as sent in responses to the C-S api and in PUT /_matrix/app/v1/transactions/{txnId}.

It's made more complicated by the fact that there are two serialisation formats, one used by /sync and /notifications, and one by everything else (the difference being whether room_id is included).

In an ideal world, we wouldn't repeat SerialisedEvent every time it's used, and instead just link to the first reference, bit that's a job for another day.

Another job for another day is to get rid of things like sync_state_event.yaml (which is now used only in one place, so should be inlined.)

Preview: https://pr3658--matrix-org-previews.netlify.app

Comment on lines 21 to 48
sent. This field is generated by the local homeserver, and may be incorrect
if the local time on at least one of the two servers is out of sync, which can
cause the age to either be negative or greater than it actually is.
sent.
type: integer
redacted_because:
description: The event that redacted this event, if any.
title: Event
type: object
transaction_id:
description: |
The client-supplied transaction ID, for example, provided via
`PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}`,
if the client being given the event is the same one which sent it.
type: string
prev_content:
description: |
The previous `content` for this event. This field is generated
by the local homeserver, and is only returned if the event is a state event,
and the client has permission to see the previous content.
x-changedInMatrixVersion:
1.2: |
Previously, this field was specified at the top level of returned
events rather than in `unsigned` (with the exception of the [`GET
.../notifications`](/client-server-api/#get_matrixclientv3notifications)
endpoint), though in practice no known server implementations honoured
this.
title: EventContent
type: object
Copy link
Member Author

@richvdh richvdh Jan 19, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all this stuff has moved into the definition for client_event, because it's not sent over the federation API, so IMHO doesn't belong in the core event schema.

@richvdh richvdh marked this pull request as draft January 19, 2022 12:15
@richvdh
Copy link
Member Author

richvdh commented Jan 19, 2022

looks like I need to figure out why the validator is failing.

@richvdh richvdh force-pushed the rav/event_serialisation branch from 1b1633f to ec18c98 Compare January 25, 2022 15:05
@richvdh richvdh marked this pull request as ready for review January 25, 2022 15:06
@richvdh richvdh requested a review from a team January 25, 2022 15:06
Copy link
Member

@turt2live turt2live left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

generally the changes seem fine - mostly just relatively minor concerns and taking the opportunity to fix some other small pet peeves while we're in the area.

@richvdh richvdh changed the title Distinguish 'serialised' from 'raw' events Distinguish 'client' from 'federation' events Jan 31, 2022
@richvdh richvdh requested a review from turt2live January 31, 2022 00:28
Copy link
Member

@turt2live turt2live left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants