Show LeftBanner with a generic left text

This commit is contained in:
miruka
2019-07-06 23:43:51 -04:00
parent 3ff0e1bd70
commit 03d9079d63
8 changed files with 42 additions and 33 deletions

View File

@@ -1,6 +1,6 @@
from datetime import datetime
from enum import auto
from typing import Dict, List, Optional, Sequence, Type, Union
from typing import List, Sequence, Type, Union
from dataclasses import dataclass, field
@@ -19,9 +19,7 @@ class RoomUpdated(Event):
avatar_url: str = ""
topic: str = ""
typing_members: Sequence[str] = ()
inviter_id: str = ""
left_event: Optional[nio.RoomMemberEvent] = None
inviter_id: str = ""
@classmethod
@@ -29,8 +27,7 @@ class RoomUpdated(Event):
user_id: str,
category: str,
room: MatrixRoom,
info: nio.RoomInfo,
**fields) -> "RoomUpdated":
info: nio.RoomInfo) -> "RoomUpdated":
typing: List[str] = []
@@ -54,7 +51,6 @@ class RoomUpdated(Event):
topic = room.topic or "",
inviter_id = getattr(room, "inviter", "") or "",
typing_members = typing,
**fields
)

View File

@@ -198,15 +198,17 @@ class MatrixClient(nio.AsyncClient):
up(self.user_id, "Rooms", self.rooms[room_id], info)
for room_id, info in resp.rooms.leave.items():
lev = None
# TODO: handle in nio, these are rooms that were left before
# starting the client.
if room_id not in self.rooms:
continue
# TODO: handle left events in nio async client
for ev in info.timeline.events:
is_member_ev = isinstance(ev, nio.RoomMemberEvent)
if isinstance(ev, nio.RoomMemberEvent):
await self.onRoomMemberEvent(self.rooms[room_id], ev)
if is_member_ev and ev.membership in ("leave", "ban"):
lev = ev
up(self.user_id, "Left", self.rooms[room_id], info, left_event=lev)
up(self.user_id, "Left", self.rooms[room_id], info)
async def onErrorResponse(self, resp: nio.ErrorResponse) -> None:
@@ -273,7 +275,7 @@ class MatrixClient(nio.AsyncClient):
TimelineEventReceived.from_nio(room, ev, content=co)
async def _get_room_member_event_content(self, ev) -> Optional[str]:
async def get_room_member_event_content(self, ev) -> Optional[str]:
prev = ev.prev_content
now = ev.content
membership = ev.membership
@@ -345,7 +347,7 @@ class MatrixClient(nio.AsyncClient):
status_message = "", # TODO
)
co = await self._get_room_member_event_content(ev)
co = await self.get_room_member_event_content(ev)
if co is not None:
TimelineEventReceived.from_nio(room, ev, content=co)