kh
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
This commit is contained in:
@@ -108,8 +108,8 @@ class Matrix(Provider):
|
||||
raise Exception("Matrix homeserver missing")
|
||||
return base, str(access_token)
|
||||
|
||||
def list_rooms(self) -> List[Dict[str, Any]]:
|
||||
"""Return the rooms the current user has joined.
|
||||
def list_joined_room_ids(self) -> List[str]:
|
||||
"""Return joined room IDs for the current user.
|
||||
|
||||
Uses `GET /_matrix/client/v3/joined_rooms`.
|
||||
"""
|
||||
@@ -120,11 +120,41 @@ class Matrix(Provider):
|
||||
raise Exception(f"Matrix joined_rooms failed: {resp.text}")
|
||||
data = resp.json() or {}
|
||||
rooms = data.get("joined_rooms") or []
|
||||
out: List[Dict[str, Any]] = []
|
||||
out: List[str] = []
|
||||
for rid in rooms:
|
||||
if not isinstance(rid, str) or not rid.strip():
|
||||
continue
|
||||
room_id = rid.strip()
|
||||
out.append(rid.strip())
|
||||
return out
|
||||
|
||||
def list_rooms(self, *, room_ids: Optional[List[str]] = None) -> List[Dict[str, Any]]:
|
||||
"""Return joined rooms, optionally limited to a subset.
|
||||
|
||||
Performance note: room names require additional per-room HTTP requests.
|
||||
If `room_ids` is provided, only those rooms will have name lookups.
|
||||
"""
|
||||
base, token = self._get_homeserver_and_token()
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
joined = self.list_joined_room_ids()
|
||||
if room_ids:
|
||||
allowed = {str(v).strip().casefold() for v in room_ids if str(v).strip()}
|
||||
if allowed:
|
||||
# Accept either full IDs (!id:hs) or short IDs (!id).
|
||||
def _is_allowed(rid: str) -> bool:
|
||||
r = str(rid or "").strip()
|
||||
if not r:
|
||||
return False
|
||||
rc = r.casefold()
|
||||
if rc in allowed:
|
||||
return True
|
||||
short = r.split(":", 1)[0].strip().casefold()
|
||||
return bool(short) and short in allowed
|
||||
|
||||
joined = [rid for rid in joined if _is_allowed(rid)]
|
||||
|
||||
out: List[Dict[str, Any]] = []
|
||||
for room_id in joined:
|
||||
name = ""
|
||||
# Best-effort room name lookup (safe to fail).
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user