Skip to content

Commit

Permalink
Add support for MSC3030 /timestamp_to_event (#2072)
Browse files Browse the repository at this point in the history
 - `/jumptodate` slash command is being worked on in matrix-org/matrix-react-sdk#7372
 - Jump to date headers are being worked on in matrix-org/matrix-react-sdk#7339

Related to element-hq/element-web#7677

Part of MSC3030: matrix-org/matrix-spec-proposals#3030

Experimental Synapse implementation added in matrix-org/synapse#9445
  • Loading branch information
MadLittleMods authored Dec 15, 2021
1 parent 6ac84a2 commit dd23a1a
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,11 @@ interface IRoomHierarchy {
rooms: IHierarchyRoom[];
next_batch?: string;
}

interface ITimestampToEventResponse {
event_id: string;
origin_server_ts: string;
}
/* eslint-enable camelcase */

// We're using this constant for methods overloading and inspect whether a variable
Expand Down Expand Up @@ -8937,6 +8942,36 @@ export class MatrixClient extends EventEmitter {
public async whoami(): Promise<{ user_id: string }> { // eslint-disable-line camelcase
return this.http.authedRequest(undefined, Method.Get, "/account/whoami");
}

/**
* Find the event_id closest to the given timestamp in the given direction.
* @return {Promise} A promise of an object containing the event_id and
* origin_server_ts of the closest event to the timestamp in the given
* direction
*/
public async timestampToEvent(
roomId: string,
timestamp: number,
dir: Direction,
): Promise<ITimestampToEventResponse> {
const path = utils.encodeUri("/rooms/$roomId/timestamp_to_event", {
$roomId: roomId,
});

return await this.http.authedRequest(
undefined,
Method.Get,
path,
{
ts: timestamp.toString(),
dir: dir,
},
undefined,
{
prefix: "/_matrix/client/unstable/org.matrix.msc3030",
},
);
}
}

/**
Expand Down

0 comments on commit dd23a1a

Please sign in to comment.