| … | … | @@ -452,13 +452,33 @@ func _build_discover_group_rooms() -> void: |
| 452 | 452 | # --- My Rooms --- |
| 453 | 453 | |
| 454 | 454 | func _on_rooms_loaded(rooms: Array) -> void: |
| 455 | | _rooms = rooms |
| 455 | # Split rooms by roomType: type 2 = DM, everything else = regular room |
| 456 | _rooms = [] |
| 457 | var dm_from_rooms: Array = [] |
| 458 | for r: Variant in rooms: |
| 459 | if r is Dictionary: |
| 460 | var rt: int = int(r.get("roomType", 0)) |
| 461 | if rt == 2: |
| 462 | dm_from_rooms.append(r) |
| 463 | else: |
| 464 | _rooms.append(r) |
| 465 | # Merge DMs detected by roomType with DMs from dm.list |
| 466 | if not dm_from_rooms.is_empty(): |
| 467 | var existing_ids: Dictionary = {} |
| 468 | for dm: Variant in _dm_rooms: |
| 469 | if dm is Dictionary: |
| 470 | existing_ids[dm.get("roomId", dm.get("id", ""))] = true |
| 471 | for dm: Variant in dm_from_rooms: |
| 472 | var rid: String = dm.get("roomId", "") |
| 473 | if rid != "" and not existing_ids.has(rid): |
| 474 | _dm_rooms.append(dm) |
| 475 | |
| 456 | 476 | # Clear joining state for rooms that have appeared in the room list |
| 457 | 477 | if not _joining_rooms.is_empty(): |
| 458 | 478 | var room_ids: Dictionary = {} |
| 459 | | for r: Variant in rooms: |
| 460 | | if r is Dictionary: |
| 461 | | room_ids[r.get("roomId", "")] = true |
| 479 | for r2: Variant in rooms: |
| 480 | if r2 is Dictionary: |
| 481 | room_ids[r2.get("roomId", "")] = true |
| 462 | 482 | for jid: String in _joining_rooms.keys(): |
| 463 | 483 | if room_ids.has(jid): |
| 464 | 484 | _joining_rooms.erase(jid) |