Skip to content
This repository was archived by the owner on Mar 26, 2024. It is now read-only.

Commit c60174a

Browse files
committed
beeper inbox: add batch archive endpoint
Signed-off-by: Sumner Evans <[email protected]>
1 parent 69d38a2 commit c60174a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

synapse/rest/client/account_data.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,10 +321,45 @@ async def on_PUT(
321321
return 200, {}
322322

323323

324+
class BeeperInboxBatchArchiveServlet(RestServlet):
325+
"""
326+
PUT /com.beeper.inbox/batch_archive HTTP/1.1
327+
"""
328+
329+
PATTERNS = list(
330+
client_patterns(
331+
"/com.beeper.inbox/batch_archive",
332+
releases=(), # not in the matrix spec, only include under /unstable
333+
)
334+
)
335+
336+
def __init__(self, hs: "HomeServer"):
337+
super().__init__()
338+
self.auth = hs.get_auth()
339+
self.clock = hs.get_clock()
340+
self.store = hs.get_datastores().main
341+
self.handler = hs.get_account_data_handler()
342+
343+
async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
344+
requester = await self.auth.get_user_by_req(request)
345+
ts = self.clock.time_msec()
346+
body = parse_json_object_from_request(request)
347+
348+
done = {"updated_ts": ts, "at_ts": ts}
349+
for room_id in body["room_ids"]:
350+
# TODO in transaction
351+
await self.handler.add_account_data_to_room(
352+
requester.user.to_string(), room_id, "com.beeper.inbox.done", done
353+
)
354+
355+
return 200, {}
356+
357+
324358
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
325359
AccountDataServlet(hs).register(http_server)
326360
RoomAccountDataServlet(hs).register(http_server)
327361
RoomBeeperInboxStateServlet(hs).register(http_server)
362+
BeeperInboxBatchArchiveServlet(hs).register(http_server)
328363

329364
if hs.config.experimental.msc3391_enabled:
330365
UnstableAccountDataServlet(hs).register(http_server)

0 commit comments

Comments
 (0)